openvidu-server: openvidu-test-browsers project

pull/255/head
pabloFuente 2019-03-25 09:58:29 +01:00
parent 163da1759a
commit d62f2f31eb
10 changed files with 229 additions and 42 deletions

View File

@ -0,0 +1,149 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.openvidu</groupId>
<artifactId>openvidu-parent</artifactId>
<version>1.9.0-beta-1</version>
</parent>
<artifactId>openvidu-test-browsers</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>OpenVidu Test Browsers</name>
<description>Browser wrapper for OpenVidu e2e testing</description>
<url>https://openvidu.io</url>
<licenses>
<license>
<name>Apache 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
<organization>
<name>OpenVidu</name>
<url>https://openvidu.io</url>
</organization>
<scm>
<url>https://github.com/OpenVidu/openvidu.git</url>
<connection>scm:git:https://github.com/OpenVidu/openvidu.git</connection>
<developerConnection>scm:git:https://github.com/OpenVidu/openvidu.git</developerConnection>
<tag>develop</tag>
</scm>
<developers>
<developer>
<id>openvidu.io</id>
<name>-openvidu.io Community</name>
<organization>openvidu.io</organization>
<organizationUrl>https://openvidu.io</organizationUrl>
</developer>
</developers>
<properties>
<!-- Java 8 -->
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<!-- Encoding -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Test dependencies version -->
<junit.jupiter.version>5.4.0</junit.jupiter.version>
<junit.platform.version>1.4.0</junit.platform.version>
<org-seleniumhq-selenium.version>3.141.59</org-seleniumhq-selenium.version>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${org-seleniumhq-selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>${org-seleniumhq-selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>${org-seleniumhq-selenium.version}</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>release-sign-artifacts</id>
<activation>
<property>
<name>performRelease</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -15,27 +15,20 @@
* *
*/ */
package io.openvidu.test.e2e.browser; package io.openvidu.test.browsers;
import static java.lang.invoke.MethodHandles.lookup;
import static org.slf4j.LoggerFactory.getLogger;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
import org.slf4j.Logger; import org.slf4j.LoggerFactory;
import io.openvidu.test.e2e.OpenViduEventManager;
public class BrowserUser { public class BrowserUser {
final static Logger log = getLogger(lookup().lookupClass()); protected static final org.slf4j.Logger log = LoggerFactory.getLogger(BrowserUser.class);
protected WebDriver driver; protected WebDriver driver;
protected WebDriverWait waiter; protected WebDriverWait waiter;
protected String clientData; protected String clientData;
protected int timeOfWaitInSeconds; protected int timeOfWaitInSeconds;
protected OpenViduEventManager eventManager;
public BrowserUser(String clientData, int timeOfWaitInSeconds) { public BrowserUser(String clientData, int timeOfWaitInSeconds) {
this.clientData = clientData; this.clientData = clientData;
@ -50,10 +43,6 @@ public class BrowserUser {
return this.waiter; return this.waiter;
} }
public OpenViduEventManager getEventManager() {
return this.eventManager;
}
public String getClientData() { public String getClientData() {
return this.clientData; return this.clientData;
} }
@ -68,12 +57,10 @@ public class BrowserUser {
protected void configureDriver() { protected void configureDriver() {
this.waiter = new WebDriverWait(this.driver, this.timeOfWaitInSeconds); this.waiter = new WebDriverWait(this.driver, this.timeOfWaitInSeconds);
this.eventManager = new OpenViduEventManager(this.driver, this.timeOfWaitInSeconds); this.driver.manage().window().setSize(new org.openqa.selenium.Dimension(1920, 1080));
this.driver.manage().window().setSize(new Dimension(1920,1080));
} }
public void dispose() { public void dispose() {
this.eventManager.stopPolling(true);
this.driver.quit(); this.driver.quit();
} }

View File

@ -15,7 +15,7 @@
* *
*/ */
package io.openvidu.test.e2e.browser; package io.openvidu.test.browsers;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;

View File

@ -15,7 +15,7 @@
* *
*/ */
package io.openvidu.test.e2e.browser; package io.openvidu.test.browsers;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;

View File

@ -15,7 +15,7 @@
* *
*/ */
package io.openvidu.test.e2e.browser; package io.openvidu.test.browsers;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;

View File

@ -1,4 +1,4 @@
package io.openvidu.test.e2e.browser; package io.openvidu.test.browsers;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;

View File

@ -161,6 +161,12 @@
<version>0.2.3</version> <version>0.2.3</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>io.openvidu</groupId>
<artifactId>openvidu-test-browsers</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>io.openvidu</groupId> <groupId>io.openvidu</groupId>
<artifactId>openvidu-java-client</artifactId> <artifactId>openvidu-java-client</artifactId>

View File

@ -0,0 +1,35 @@
package io.openvidu.test.e2e;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import io.openvidu.test.browsers.BrowserUser;
public class MyUser {
BrowserUser browserUser;
private OpenViduEventManager eventManager;
public MyUser(BrowserUser browserUser) {
this.browserUser = browserUser;
this.eventManager = new OpenViduEventManager(this.browserUser.getDriver(), this.browserUser.getTimeOfWait());
}
public WebDriver getDriver() {
return this.browserUser.getDriver();
}
public WebDriverWait getWaiter() {
return this.browserUser.getWaiter();
}
public OpenViduEventManager getEventManager() {
return this.eventManager;
}
public void dispose() {
this.eventManager.stopPolling(true);
this.browserUser.dispose();
}
}

View File

@ -95,11 +95,11 @@ import io.openvidu.java.client.RecordingProperties;
import io.openvidu.java.client.Session; import io.openvidu.java.client.Session;
import io.openvidu.java.client.SessionProperties; import io.openvidu.java.client.SessionProperties;
import io.openvidu.java.client.TokenOptions; import io.openvidu.java.client.TokenOptions;
import io.openvidu.test.e2e.browser.BrowserUser; import io.openvidu.test.browsers.BrowserUser;
import io.openvidu.test.e2e.browser.ChromeAndroidUser; import io.openvidu.test.browsers.ChromeAndroidUser;
import io.openvidu.test.e2e.browser.ChromeUser; import io.openvidu.test.browsers.ChromeUser;
import io.openvidu.test.e2e.browser.FirefoxUser; import io.openvidu.test.browsers.FirefoxUser;
import io.openvidu.test.e2e.browser.OperaUser; import io.openvidu.test.browsers.OperaUser;
import io.openvidu.test.e2e.utils.CommandLineExecutor; import io.openvidu.test.e2e.utils.CommandLineExecutor;
import io.openvidu.test.e2e.utils.CustomHttpClient; import io.openvidu.test.e2e.utils.CustomHttpClient;
import io.openvidu.test.e2e.utils.MultimediaFileMetadata; import io.openvidu.test.e2e.utils.MultimediaFileMetadata;
@ -124,8 +124,8 @@ public class OpenViduTestAppE2eTest {
private static final Logger log = LoggerFactory.getLogger(OpenViduTestAppE2eTest.class); private static final Logger log = LoggerFactory.getLogger(OpenViduTestAppE2eTest.class);
BrowserUser user; MyUser user;
Collection<BrowserUser> otherUsers = new ArrayList<>(); Collection<MyUser> otherUsers = new ArrayList<>();
volatile static boolean isRecordingTest; volatile static boolean isRecordingTest;
volatile static boolean isKurentoRestartTest; volatile static boolean isKurentoRestartTest;
private static OpenVidu OV; private static OpenVidu OV;
@ -174,29 +174,33 @@ public class OpenViduTestAppE2eTest {
void setupBrowser(String browser) { void setupBrowser(String browser) {
BrowserUser browserUser;
switch (browser) { switch (browser) {
case "chrome": case "chrome":
this.user = new ChromeUser("TestUser", 50, false); browserUser = new ChromeUser("TestUser", 50, false);
break; break;
case "firefox": case "firefox":
this.user = new FirefoxUser("TestUser", 50); browserUser = new FirefoxUser("TestUser", 50);
break; break;
case "opera": case "opera":
this.user = new OperaUser("TestUser", 50); browserUser = new OperaUser("TestUser", 50);
break; break;
case "chromeAndroid": case "chromeAndroid":
this.user = new ChromeAndroidUser("TestUser", 50); browserUser = new ChromeAndroidUser("TestUser", 50);
break; break;
case "chromeAlternateScreenShare": case "chromeAlternateScreenShare":
this.user = new ChromeUser("TestUser", 50, "OpenVidu TestApp", false); browserUser = new ChromeUser("TestUser", 50, "OpenVidu TestApp", false);
break; break;
case "chromeAsRoot": case "chromeAsRoot":
this.user = new ChromeUser("TestUser", 50, true); browserUser = new ChromeUser("TestUser", 50, true);
break; break;
default: default:
this.user = new ChromeUser("TestUser", 50, false); browserUser = new ChromeUser("TestUser", 50, false);
} }
this.user = new MyUser(browserUser);
user.getDriver().get(APP_URL); user.getDriver().get(APP_URL);
WebElement urlInput = user.getDriver().findElement(By.id("openvidu-url")); WebElement urlInput = user.getDriver().findElement(By.id("openvidu-url"));
@ -210,7 +214,7 @@ public class OpenViduTestAppE2eTest {
} }
void setupChromeWithFakeVideo(Path videoFileLocation) { void setupChromeWithFakeVideo(Path videoFileLocation) {
this.user = new ChromeUser("TestUser", 50, videoFileLocation); this.user = new MyUser(new ChromeUser("TestUser", 50, videoFileLocation));
user.getDriver().get(APP_URL); user.getDriver().get(APP_URL);
WebElement urlInput = user.getDriver().findElement(By.id("openvidu-url")); WebElement urlInput = user.getDriver().findElement(By.id("openvidu-url"));
urlInput.clear(); urlInput.clear();
@ -226,9 +230,9 @@ public class OpenViduTestAppE2eTest {
if (user != null) { if (user != null) {
user.dispose(); user.dispose();
} }
Iterator<BrowserUser> it = otherUsers.iterator(); Iterator<MyUser> it = otherUsers.iterator();
while (it.hasNext()) { while (it.hasNext()) {
BrowserUser other = it.next(); MyUser other = it.next();
other.dispose(); other.dispose();
it.remove(); it.remove();
} }
@ -508,7 +512,7 @@ public class OpenViduTestAppE2eTest {
}; };
Thread t = new Thread(() -> { Thread t = new Thread(() -> {
BrowserUser user2 = new FirefoxUser("TestUser", 30); MyUser user2 = new MyUser(new FirefoxUser("TestUser", 30));
otherUsers.add(user2); otherUsers.add(user2);
user2.getDriver().get(APP_URL); user2.getDriver().get(APP_URL);
WebElement urlInput = user2.getDriver().findElement(By.id("openvidu-url")); WebElement urlInput = user2.getDriver().findElement(By.id("openvidu-url"));
@ -1350,7 +1354,7 @@ public class OpenViduTestAppE2eTest {
}; };
Thread t = new Thread(() -> { Thread t = new Thread(() -> {
BrowserUser user2 = new FirefoxUser("FirefoxUser", 30); MyUser user2 = new MyUser(new FirefoxUser("FirefoxUser", 30));
otherUsers.add(user2); otherUsers.add(user2);
user2.getDriver().get(APP_URL); user2.getDriver().get(APP_URL);
WebElement urlInput = user2.getDriver().findElement(By.id("openvidu-url")); WebElement urlInput = user2.getDriver().findElement(By.id("openvidu-url"));
@ -2754,7 +2758,7 @@ public class OpenViduTestAppE2eTest {
} }
} }
private String getBase64Screenshot(BrowserUser user) throws Exception { private String getBase64Screenshot(MyUser user) throws Exception {
String screenshotBase64 = ((TakesScreenshot) user.getDriver()).getScreenshotAs(BASE64); String screenshotBase64 = ((TakesScreenshot) user.getDriver()).getScreenshotAs(BASE64);
return "data:image/png;base64," + screenshotBase64; return "data:image/png;base64," + screenshotBase64;
} }

View File

@ -199,6 +199,7 @@
<module>openvidu-client</module> <module>openvidu-client</module>
<module>openvidu-test</module> <module>openvidu-test</module>
<module>openvidu-test-e2e</module> <module>openvidu-test-e2e</module>
<module>openvidu-test-browsers</module>
<module>openvidu-java-client</module> <module>openvidu-java-client</module>
</modules> </modules>
</profile> </profile>
@ -209,6 +210,7 @@
<module>openvidu-client</module> <module>openvidu-client</module>
<module>openvidu-test</module> <module>openvidu-test</module>
<module>openvidu-test-e2e</module> <module>openvidu-test-e2e</module>
<module>openvidu-test-browsers</module>
</modules> </modules>
</profile> </profile>
<profile> <profile>
@ -289,6 +291,10 @@
<groupId>io.openvidu</groupId> <groupId>io.openvidu</groupId>
<artifactId>openvidu-test-e2e</artifactId> <artifactId>openvidu-test-e2e</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.openvidu</groupId>
<artifactId>openvidu-test-browsers</artifactId>
</dependency>
<dependency> <dependency>
<groupId>io.openvidu</groupId> <groupId>io.openvidu</groupId>
<artifactId>openvidu-java-client</artifactId> <artifactId>openvidu-java-client</artifactId>