diff --git a/openvidu-recording-java/pom.xml b/openvidu-recording-java/pom.xml index 80863ea5..9d2e577c 100644 --- a/openvidu-recording-java/pom.xml +++ b/openvidu-recording-java/pom.xml @@ -92,6 +92,12 @@ 2.4.6 test + + io.openvidu + openvidu-test-browsers + 1.0.0 + test + diff --git a/openvidu-recording-java/src/test/java/io/openvidu/recording/java/test/AppTestE2e.java b/openvidu-recording-java/src/test/java/io/openvidu/recording/java/test/AppTestE2e.java index cdd0ecd6..832e447a 100644 --- a/openvidu-recording-java/src/test/java/io/openvidu/recording/java/test/AppTestE2e.java +++ b/openvidu-recording-java/src/test/java/io/openvidu/recording/java/test/AppTestE2e.java @@ -19,8 +19,6 @@ package io.openvidu.recording.java.test; import java.io.File; import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; @@ -39,13 +37,8 @@ import org.junit.runner.RunWith; import org.openqa.selenium.By; import org.openqa.selenium.Dimension; import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.remote.DesiredCapabilities; -import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,6 +49,8 @@ import io.openvidu.java.client.OpenViduHttpException; import io.openvidu.java.client.OpenViduJavaClientException; import io.openvidu.java.client.Recording; import io.openvidu.java.client.Recording.OutputMode; +import io.openvidu.test.browsers.BrowserUser; +import io.openvidu.test.browsers.ChromeUser; import ws.schild.jave.EncoderException; import ws.schild.jave.MultimediaInfo; import ws.schild.jave.MultimediaObject; @@ -85,8 +80,7 @@ public class AppTestE2e { static String RECORDING_PATH = "/opt/openvidu/recordings/"; - protected WebDriver driver; - protected WebDriverWait waiter; + private BrowserUser user; private static OpenVidu OV; boolean deleteRecordings = true; @@ -185,35 +179,13 @@ public class AppTestE2e { log.error("Error listing recordings: {}", e2.getMessage()); } } - driver.quit(); + this.user.dispose(); } - void setupBrowser(String browser) { - DesiredCapabilities capabilities = DesiredCapabilities.chrome(); - capabilities.setAcceptInsecureCerts(true); - - ChromeOptions options = new ChromeOptions(); - options.addArguments("--use-fake-ui-for-media-stream"); - options.addArguments("--use-fake-device-for-media-stream"); - options.addArguments("--ignore-certificate-errors"); - options.addArguments("--autoplay-policy=no-user-gesture-required"); - capabilities.setCapability(ChromeOptions.CAPABILITY, options); - - String REMOTE_URL = System.getProperty("REMOTE_URL_CHROME"); - 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 ChromeDriver(options); - } - this.driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS); - this.waiter = new WebDriverWait(this.driver, 10); - this.driver.manage().window().setSize(new Dimension(1920, 1080)); + void setupBrowser() { + user = new ChromeUser("TestUser", 20, false); + user.getDriver().manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS); + user.getDriver().manage().window().setSize(new Dimension(1920, 1080)); } @Test @@ -227,13 +199,13 @@ public class AppTestE2e { double entityDuration = 0; String videoFile = ""; - setupBrowser("chrome"); - driver.get(APP_URL); + setupBrowser(); + user.getDriver().get(APP_URL); - driver.findElement(By.id("join-btn")).click(); + user.getDriver().findElement(By.id("join-btn")).click(); waitUntilEvents("connectionCreated", "videoElementCreated", "accessAllowed", "streamCreated", "streamPlaying"); - driver.findElement(By.id("has-video-checkbox")).click(); + user.getDriver().findElement(By.id("has-video-checkbox")).click(); while (durationDifferenceAcceptable && (i < NUMBER_OF_ATTEMPTS)) { @@ -241,13 +213,13 @@ public class AppTestE2e { log.info("Attempt {}", i + 1); log.info("----------"); - driver.findElement(By.id("buttonStartRecording")).click(); + user.getDriver().findElement(By.id("buttonStartRecording")).click(); waitUntilEvents("recordingStarted"); Thread.sleep(RECORDING_DURATION * 1000); - driver.findElement(By.id("buttonStopRecording")).click(); + user.getDriver().findElement(By.id("buttonStopRecording")).click(); waitUntilEvents("recordingStopped"); Recording rec = OV.listRecordings().get(0); @@ -292,9 +264,9 @@ public class AppTestE2e { } private void waitUntilEvents(String... events) { - waiter.until(eventsToBe(events)); - driver.findElement(By.id("clear-events-btn")).click(); - waiter.until(ExpectedConditions.textToBePresentInElementLocated(By.id("textarea-events"), "")); + user.getWaiter().until(eventsToBe(events)); + user.getDriver().findElement(By.id("clear-events-btn")).click(); + user.getWaiter().until(ExpectedConditions.textToBePresentInElementLocated(By.id("textarea-events"), "")); } private ExpectedCondition eventsToBe(String... events) {