diff --git a/openvidu-test-e2e/pom.xml b/openvidu-test-e2e/pom.xml index 120f57a0..486620ce 100644 --- a/openvidu-test-e2e/pom.xml +++ b/openvidu-test-e2e/pom.xml @@ -76,13 +76,13 @@ io.github.bonigarcia selenium-jupiter - ${selenium-jupiter.version} + 2.2.0 test io.github.bonigarcia webdrivermanager - 1.7.2 + 2.2.4 test diff --git a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java index 29513cb4..85692642 100644 --- a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java +++ b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java @@ -18,10 +18,9 @@ package io.openvidu.test.e2e; import static java.lang.invoke.MethodHandles.lookup; -import static org.slf4j.LoggerFactory.getLogger; import static org.junit.Assert.fail; import static org.openqa.selenium.OutputType.BASE64; -import org.slf4j.Logger; +import static org.slf4j.LoggerFactory.getLogger; import java.io.File; import java.util.Arrays; @@ -32,14 +31,18 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.*; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.runner.RunWith; -import org.junit.platform.runner.JUnitPlatform; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.junit.Assert; - +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.platform.runner.JUnitPlatform; +import org.junit.runner.RunWith; import org.openqa.selenium.By; import org.openqa.selenium.Dimension; import org.openqa.selenium.Keys; @@ -48,15 +51,15 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.ExpectedConditions; +import org.slf4j.Logger; import io.github.bonigarcia.SeleniumExtension; -import io.github.bonigarcia.wdm.ChromeDriverManager; -import io.github.bonigarcia.wdm.FirefoxDriverManager; - +import io.github.bonigarcia.wdm.WebDriverManager; import io.openvidu.test.e2e.browser.BrowserUser; import io.openvidu.test.e2e.browser.ChromeAndroidUser; import io.openvidu.test.e2e.browser.ChromeUser; import io.openvidu.test.e2e.browser.FirefoxUser; +import io.openvidu.test.e2e.browser.OperaUser; /** * E2E tests for openvidu-testapp. @@ -82,8 +85,8 @@ public class OpenViduTestAppE2eTest { @BeforeAll() static void setupAll() { - ChromeDriverManager.getInstance().setup(); - FirefoxDriverManager.getInstance().setup(); + WebDriverManager.chromedriver().setup(); + WebDriverManager.firefoxdriver().setup(); String appUrl = System.getProperty("APP_URL"); if (appUrl != null) { @@ -113,11 +116,15 @@ public class OpenViduTestAppE2eTest { case "firefox": this.user = new FirefoxUser("TestUser", 50); break; + case "opera": + this.user = new OperaUser("TestUser", 50); + break; case "chromeAndroid": this.user = new ChromeAndroidUser("TestUser", 50); break; case "chromeAlternateScreenShare": this.user = new ChromeUser("TestUser", 50, "OpenVidu TestApp"); + break; default: this.user = new ChromeUser("TestUser", 50); } @@ -1062,6 +1069,37 @@ public class OpenViduTestAppE2eTest { } + @Test + @Disabled + @DisplayName("One2One Opera [Video + Audio]") + void oneToOneVideoAudioSessionOpera() throws Exception { + + WebDriverManager.operadriver().setup(); + setupBrowser("opera"); + + log.info("One2One Opera [Video + Audio]"); + + user.getDriver().findElement(By.id("auto-join-checkbox")).click(); + user.getDriver().findElement(By.id("one2one-btn")).click(); + + user.getEventManager().waitUntilEventReaches("connectionCreated", 4); + user.getEventManager().waitUntilEventReaches("accessAllowed", 2); + user.getEventManager().waitUntilEventReaches("streamCreated", 4); + user.getEventManager().waitUntilEventReaches("streamPlaying", 4); + + try { + System.out.println(getBase64Screenshot(user)); + } catch (Exception e) { + e.printStackTrace(); + } + + Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 4); + Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), + true, true)); + + gracefullyLeaveParticipants(2); + } + private void listEmptyRecordings() { // List existing recordings (empty) user.getDriver().findElement(By.id("list-recording-btn")).click(); diff --git a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/browser/OperaUser.java b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/browser/OperaUser.java new file mode 100644 index 00000000..c752687f --- /dev/null +++ b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/browser/OperaUser.java @@ -0,0 +1,43 @@ +package io.openvidu.test.e2e.browser; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.concurrent.TimeUnit; + +import org.openqa.selenium.opera.OperaDriver; +import org.openqa.selenium.opera.OperaOptions; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteWebDriver; + +public class OperaUser extends BrowserUser { + + public OperaUser(String userName, int timeOfWaitInSeconds) { + super(userName, timeOfWaitInSeconds); + + OperaOptions options = new OperaOptions(); + options.setBinary("/usr/bin/opera"); + DesiredCapabilities capabilities = DesiredCapabilities.operaBlink(); + capabilities.setAcceptInsecureCerts(true); + + options.addArguments("--use-fake-ui-for-media-stream"); + options.addArguments("--use-fake-device-for-media-stream"); + capabilities.setCapability(OperaOptions.CAPABILITY, options); + + String REMOTE_URL = System.getProperty("REMOTE_URL_OPERA"); + if (REMOTE_URL != null) { + log.info("Using URL {} to connect to remote web driver", REMOTE_URL); + try { + this.driver = new RemoteWebDriver(new URL(REMOTE_URL), capabilities); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } else { + log.info("Using local web driver"); + this.driver = new OperaDriver(capabilities); + } + + this.driver.manage().timeouts().setScriptTimeout(this.timeOfWaitInSeconds, TimeUnit.SECONDS); + this.configureDriver(); + } + +}