mirror of https://github.com/OpenVidu/openvidu.git
openvidu-test-e2e: refactor testcontainers
parent
10ad16464c
commit
73df3cc969
|
@ -32,20 +32,20 @@ import org.openqa.selenium.remote.RemoteWebDriver;
|
||||||
|
|
||||||
public class ChromeUser extends BrowserUser {
|
public class ChromeUser extends BrowserUser {
|
||||||
|
|
||||||
public ChromeUser(String userName, int timeOfWaitInSeconds, boolean runningAsRoot) {
|
public ChromeUser(String userName, int timeOfWaitInSeconds, boolean headless) {
|
||||||
this(userName, timeOfWaitInSeconds, generateDefaultScreenChromeOptions(runningAsRoot));
|
this(userName, timeOfWaitInSeconds, generateDefaultScreenChromeOptions(), headless);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChromeUser(String userName, int timeOfWaitInSeconds, String screenToCapture, boolean runningAsRoot) {
|
public ChromeUser(String userName, int timeOfWaitInSeconds, String screenToCapture) {
|
||||||
this(userName, timeOfWaitInSeconds, generateCustomScreenChromeOptions(screenToCapture, runningAsRoot,
|
this(userName, timeOfWaitInSeconds,
|
||||||
Paths.get("/opt/openvidu/fakeaudio.wav")));
|
generateCustomScreenChromeOptions(screenToCapture, Paths.get("/opt/openvidu/fakeaudio.wav")), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChromeUser(String userName, int timeOfWaitInSeconds, Path fakeVideoLocation) {
|
public ChromeUser(String userName, int timeOfWaitInSeconds, Path fakeVideoLocation) {
|
||||||
this(userName, timeOfWaitInSeconds, generateFakeVideoChromeOptions(fakeVideoLocation));
|
this(userName, timeOfWaitInSeconds, generateFakeVideoChromeOptions(fakeVideoLocation), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ChromeUser(String userName, int timeOfWaitInSeconds, ChromeOptions options) {
|
private ChromeUser(String userName, int timeOfWaitInSeconds, ChromeOptions options, boolean headless) {
|
||||||
super(userName, timeOfWaitInSeconds);
|
super(userName, timeOfWaitInSeconds);
|
||||||
|
|
||||||
String REMOTE_URL = System.getProperty("REMOTE_URL_CHROME");
|
String REMOTE_URL = System.getProperty("REMOTE_URL_CHROME");
|
||||||
|
@ -53,7 +53,7 @@ public class ChromeUser extends BrowserUser {
|
||||||
options.setAcceptInsecureCerts(true);
|
options.setAcceptInsecureCerts(true);
|
||||||
options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.IGNORE);
|
options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.IGNORE);
|
||||||
|
|
||||||
if (REMOTE_URL != null) {
|
if (REMOTE_URL != null && headless) {
|
||||||
options.setHeadless(true);
|
options.setHeadless(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ public class ChromeUser extends BrowserUser {
|
||||||
this.configureDriver(new org.openqa.selenium.Dimension(1920, 1080));
|
this.configureDriver(new org.openqa.selenium.Dimension(1920, 1080));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ChromeOptions generateDefaultScreenChromeOptions(boolean runningAsRoot) {
|
private static ChromeOptions generateDefaultScreenChromeOptions() {
|
||||||
ChromeOptions options = new ChromeOptions();
|
ChromeOptions options = new ChromeOptions();
|
||||||
// This flag avoids to grant the user media
|
// This flag avoids to grant the user media
|
||||||
options.addArguments("--use-fake-ui-for-media-stream");
|
options.addArguments("--use-fake-ui-for-media-stream");
|
||||||
|
@ -89,29 +89,16 @@ public class ChromeUser extends BrowserUser {
|
||||||
options.addArguments("--use-fake-device-for-media-stream");
|
options.addArguments("--use-fake-device-for-media-stream");
|
||||||
// This flag selects the entire screen as video source when screen sharing
|
// This flag selects the entire screen as video source when screen sharing
|
||||||
options.addArguments("--auto-select-desktop-capture-source=Entire screen");
|
options.addArguments("--auto-select-desktop-capture-source=Entire screen");
|
||||||
|
|
||||||
// Background Chrome
|
|
||||||
// options.addArguments("--headless");
|
|
||||||
|
|
||||||
if (runningAsRoot) {
|
|
||||||
options.addArguments("--no-sandbox");
|
|
||||||
}
|
|
||||||
|
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ChromeOptions generateCustomScreenChromeOptions(String screenToCapture, boolean runningAsRoot,
|
private static ChromeOptions generateCustomScreenChromeOptions(String screenToCapture, Path audioFileLocation) {
|
||||||
Path audioFileLocation) {
|
|
||||||
ChromeOptions options = new ChromeOptions();
|
ChromeOptions options = new ChromeOptions();
|
||||||
// This flag selects the entire screen as video source when screen sharing
|
// This flag selects the entire screen as video source when screen sharing
|
||||||
options.addArguments("--auto-select-desktop-capture-source=" + screenToCapture);
|
options.addArguments("--auto-select-desktop-capture-source=" + screenToCapture);
|
||||||
options.addArguments("--use-fake-device-for-media-stream");
|
options.addArguments("--use-fake-device-for-media-stream");
|
||||||
options.addArguments("--use-file-for-fake-audio-capture=" + audioFileLocation.toString());
|
options.addArguments("--use-file-for-fake-audio-capture=" + audioFileLocation.toString());
|
||||||
|
|
||||||
if (runningAsRoot) {
|
|
||||||
options.addArguments("--no-sandbox");
|
|
||||||
}
|
|
||||||
|
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import java.nio.file.Paths;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -21,7 +22,6 @@ import java.util.stream.Stream;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.http.HttpStatus;
|
import org.apache.http.HttpStatus;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.ClassRule;
|
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
import org.openqa.selenium.TakesScreenshot;
|
import org.openqa.selenium.TakesScreenshot;
|
||||||
import org.openqa.selenium.WebDriver;
|
import org.openqa.selenium.WebDriver;
|
||||||
|
@ -58,21 +58,6 @@ import io.openvidu.test.browsers.utils.RecordingUtils;
|
||||||
|
|
||||||
public class OpenViduTestE2e {
|
public class OpenViduTestE2e {
|
||||||
|
|
||||||
@ClassRule
|
|
||||||
public static GenericContainer<?> chrome;
|
|
||||||
|
|
||||||
@ClassRule
|
|
||||||
public static GenericContainer<?> firefox;
|
|
||||||
|
|
||||||
@ClassRule
|
|
||||||
public static GenericContainer<?> opera;
|
|
||||||
|
|
||||||
@ClassRule
|
|
||||||
public static GenericContainer<?> edge;
|
|
||||||
|
|
||||||
@ClassRule
|
|
||||||
public static GenericContainer<?> android;
|
|
||||||
|
|
||||||
private final static WaitStrategy waitBrowser = Wait.forHttp("/wd/hub/status").forStatusCode(200);
|
private final static WaitStrategy waitBrowser = Wait.forHttp("/wd/hub/status").forStatusCode(200);
|
||||||
private final static WaitStrategy waitAndroid = Wait.forHealthcheck().withStartupTimeout(Duration.ofSeconds(600));
|
private final static WaitStrategy waitAndroid = Wait.forHealthcheck().withStartupTimeout(Duration.ofSeconds(600));
|
||||||
|
|
||||||
|
@ -112,6 +97,7 @@ public class OpenViduTestE2e {
|
||||||
protected static final String RECORDING_IMAGE = "openvidu/openvidu-recording";
|
protected static final String RECORDING_IMAGE = "openvidu/openvidu-recording";
|
||||||
|
|
||||||
protected Collection<BrowserUser> browserUsers = new HashSet<>();
|
protected Collection<BrowserUser> browserUsers = new HashSet<>();
|
||||||
|
protected Collection<GenericContainer<?>> containers = new HashSet<>();
|
||||||
protected volatile static boolean isRecordingTest;
|
protected volatile static boolean isRecordingTest;
|
||||||
protected volatile static boolean isKurentoRestartTest;
|
protected volatile static boolean isKurentoRestartTest;
|
||||||
|
|
||||||
|
@ -133,59 +119,89 @@ public class OpenViduTestE2e {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("resource")
|
private GenericContainer<?> chromeContainer(String image, long shmSize, int maxBrowserSessions, boolean headless) {
|
||||||
protected static void prepareBrowsers(Set<BrowserNames> browsers) {
|
Map<String, String> map = new HashMap<>();
|
||||||
if (browsers.contains(BrowserNames.CHROME)) {
|
if (headless) {
|
||||||
if (isRemote(BrowserNames.CHROME)) {
|
map.put("START_XVFB", "false");
|
||||||
chrome = new GenericContainer<>(DockerImageName.parse("selenium/standalone-chrome:" + CHROME_VERSION))
|
}
|
||||||
.withSharedMemorySize(2147483648L).withFileSystemBind("/opt/openvidu", "/opt/openvidu")
|
if (maxBrowserSessions > 1) {
|
||||||
.withEnv(Map.of("START_XVFB", "false", "SE_NODE_OVERRIDE_MAX_SESSIONS", "true",
|
map.put("SE_NODE_OVERRIDE_MAX_SESSIONS", "true");
|
||||||
"SE_NODE_MAX_SESSIONS", "2"))
|
map.put("SE_NODE_MAX_SESSIONS", String.valueOf(maxBrowserSessions));
|
||||||
.withExposedPorts(4444).waitingFor(waitBrowser);
|
}
|
||||||
|
GenericContainer<?> chrome = new GenericContainer<>(DockerImageName.parse(image)).withSharedMemorySize(shmSize)
|
||||||
|
.withFileSystemBind("/opt/openvidu", "/opt/openvidu").withEnv(map).withExposedPorts(4444)
|
||||||
|
.waitingFor(waitBrowser);
|
||||||
chrome.setPortBindings(Arrays.asList("6666:4444"));
|
chrome.setPortBindings(Arrays.asList("6666:4444"));
|
||||||
} else {
|
return chrome;
|
||||||
WebDriverManager.chromedriver().setup();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private GenericContainer<?> firefoxContainer(String image, long shmSize, int maxBrowserSessions, boolean headless) {
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
if (headless) {
|
||||||
|
map.put("START_XVFB", "false");
|
||||||
}
|
}
|
||||||
if (browsers.contains(BrowserNames.FIREFOX)) {
|
if (maxBrowserSessions > 1) {
|
||||||
if (isRemote(BrowserNames.FIREFOX)) {
|
map.put("SE_NODE_OVERRIDE_MAX_SESSIONS", "true");
|
||||||
firefox = new GenericContainer<>(
|
map.put("SE_NODE_MAX_SESSIONS", String.valueOf(maxBrowserSessions));
|
||||||
DockerImageName.parse("selenium/standalone-firefox:" + FIREFOX_VERSION))
|
}
|
||||||
.withSharedMemorySize(2147483648L).withFileSystemBind("/opt/openvidu", "/opt/openvidu")
|
GenericContainer<?> firefox = new GenericContainer<>(DockerImageName.parse(image)).withSharedMemorySize(shmSize)
|
||||||
.withEnv(Map.of("START_XVFB", "false")).withExposedPorts(4444).waitingFor(waitBrowser);
|
.withFileSystemBind("/opt/openvidu", "/opt/openvidu").withEnv(map).withExposedPorts(4444)
|
||||||
|
.waitingFor(waitBrowser);
|
||||||
firefox.setPortBindings(Arrays.asList("6667:4444"));
|
firefox.setPortBindings(Arrays.asList("6667:4444"));
|
||||||
} else {
|
return firefox;
|
||||||
WebDriverManager.firefoxdriver().setup();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private GenericContainer<?> operaContainer(String image, long shmSize, int maxBrowserSessions) {
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
if (maxBrowserSessions > 1) {
|
||||||
|
map.put("SE_NODE_OVERRIDE_MAX_SESSIONS", "true");
|
||||||
|
map.put("SE_NODE_MAX_SESSIONS", String.valueOf(maxBrowserSessions));
|
||||||
}
|
}
|
||||||
if (browsers.contains(BrowserNames.OPERA)) {
|
GenericContainer<?> opera = new GenericContainer<>(DockerImageName.parse(image)).withSharedMemorySize(shmSize)
|
||||||
if (isRemote(BrowserNames.OPERA)) {
|
.withFileSystemBind("/opt/openvidu", "/opt/openvidu").withEnv(map).withExposedPorts(4444)
|
||||||
opera = new GenericContainer<>(DockerImageName.parse("selenium/standalone-opera:" + OPERA_VERSION))
|
.waitingFor(waitBrowser);
|
||||||
.withSharedMemorySize(2147483648L).withFileSystemBind("/opt/openvidu", "/opt/openvidu")
|
|
||||||
.withExposedPorts(4444).waitingFor(waitBrowser);
|
|
||||||
opera.setPortBindings(Arrays.asList("6668:4444"));
|
opera.setPortBindings(Arrays.asList("6668:4444"));
|
||||||
} else {
|
return opera;
|
||||||
WebDriverManager.operadriver().setup();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private GenericContainer<?> edgeContainer(String image, long shmSize, int maxBrowserSessions, boolean headless) {
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
if (headless) {
|
||||||
|
map.put("START_XVFB", "false");
|
||||||
}
|
}
|
||||||
if (browsers.contains(BrowserNames.EDGE)) {
|
if (maxBrowserSessions > 1) {
|
||||||
if (isRemote(BrowserNames.EDGE)) {
|
map.put("SE_NODE_OVERRIDE_MAX_SESSIONS", "true");
|
||||||
edge = new GenericContainer<>(DockerImageName.parse("selenium/standalone-edge:" + EDGE_VERSION))
|
map.put("SE_NODE_MAX_SESSIONS", String.valueOf(maxBrowserSessions));
|
||||||
.withSharedMemorySize(2147483648L).withFileSystemBind("/opt/openvidu", "/opt/openvidu")
|
}
|
||||||
.withEnv(Map.of("START_XVFB", "false")).withExposedPorts(4444).waitingFor(waitBrowser);
|
GenericContainer<?> edge = new GenericContainer<>(DockerImageName.parse(image)).withSharedMemorySize(shmSize)
|
||||||
|
.withFileSystemBind("/opt/openvidu", "/opt/openvidu").withEnv(map).withExposedPorts(4444)
|
||||||
|
.waitingFor(waitBrowser);
|
||||||
edge.setPortBindings(Arrays.asList("6669:4444"));
|
edge.setPortBindings(Arrays.asList("6669:4444"));
|
||||||
} else {
|
return edge;
|
||||||
WebDriverManager.edgedriver().setup();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (browsers.contains(BrowserNames.ANDROID)) {
|
private GenericContainer<?> androidContainer(String image, long shmSize) {
|
||||||
android = new GenericContainer<>(DockerImageName.parse("budtmo/docker-android-x86-12.0:latest"))
|
GenericContainer<?> android = new GenericContainer<>(DockerImageName.parse(image)).withPrivilegedMode(true)
|
||||||
.withPrivilegedMode(true)
|
|
||||||
.withEnv(Map.of("DEVICE", "Samsung Galaxy S10", "APPIUM", "true", "APPIUM_HOST", "172.17.0.1",
|
.withEnv(Map.of("DEVICE", "Samsung Galaxy S10", "APPIUM", "true", "APPIUM_HOST", "172.17.0.1",
|
||||||
"APPIUM_PORT", "4723", "MOBILE_WEB_TEST", "true", "RELAXED_SECURITY", "true"))
|
"APPIUM_PORT", "4723", "MOBILE_WEB_TEST", "true", "RELAXED_SECURITY", "true"))
|
||||||
.withSharedMemorySize(4294967296L).withExposedPorts(6080, 5554, 5555, 4723).waitingFor(waitAndroid)
|
.withSharedMemorySize(shmSize).withExposedPorts(6080, 5554, 5555, 4723).waitingFor(waitAndroid)
|
||||||
.withFileSystemBind("/opt/openvidu-cache", "/opt/openvidu-cache");
|
.withFileSystemBind("/opt/openvidu-cache", "/opt/openvidu-cache");
|
||||||
android.setPortBindings(Arrays.asList("6080:6080", "5554:5554", "5555:5555", "4723:4723"));
|
android.setPortBindings(Arrays.asList("6080:6080", "5554:5554", "5555:5555", "4723:4723"));
|
||||||
|
return android;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void prepareBrowserDrivers(Set<BrowserNames> browsers) {
|
||||||
|
if (browsers.contains(BrowserNames.CHROME) && !isRemote(BrowserNames.CHROME)) {
|
||||||
|
WebDriverManager.chromedriver().setup();
|
||||||
|
}
|
||||||
|
if (browsers.contains(BrowserNames.FIREFOX) && !isRemote(BrowserNames.FIREFOX)) {
|
||||||
|
WebDriverManager.firefoxdriver().setup();
|
||||||
|
}
|
||||||
|
if (browsers.contains(BrowserNames.OPERA) && !isRemote(BrowserNames.OPERA)) {
|
||||||
|
WebDriverManager.operadriver().setup();
|
||||||
|
}
|
||||||
|
if (browsers.contains(BrowserNames.EDGE) && !isRemote(BrowserNames.EDGE)) {
|
||||||
|
WebDriverManager.edgedriver().setup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,43 +310,57 @@ public class OpenViduTestE2e {
|
||||||
|
|
||||||
protected BrowserUser setupBrowser(String browser) {
|
protected BrowserUser setupBrowser(String browser) {
|
||||||
|
|
||||||
BrowserUser browserUser;
|
BrowserUser browserUser = null;
|
||||||
|
GenericContainer<?> container;
|
||||||
|
|
||||||
switch (browser) {
|
switch (browser) {
|
||||||
case "chrome":
|
case "chrome":
|
||||||
setupBrowserAux(BrowserNames.CHROME, chrome, false);
|
container = chromeContainer("selenium/standalone-chrome:" + CHROME_VERSION, 2147483648L, 1, true);
|
||||||
browserUser = new ChromeUser("TestUser", 50, false);
|
setupBrowserAux(BrowserNames.CHROME, container, false);
|
||||||
|
browserUser = new ChromeUser("TestUser", 50, true);
|
||||||
|
break;
|
||||||
|
case "chromeTwoInstances":
|
||||||
|
container = chromeContainer("selenium/standalone-chrome:" + CHROME_VERSION, 2147483648L, 2, true);
|
||||||
|
setupBrowserAux(BrowserNames.CHROME, container, false);
|
||||||
|
browserUser = new ChromeUser("TestUser", 50, true);
|
||||||
|
break;
|
||||||
|
case "chromeAlternateScreenShare":
|
||||||
|
container = chromeContainer("selenium/standalone-chrome:" + CHROME_VERSION, 2147483648L, 1, false);
|
||||||
|
setupBrowserAux(BrowserNames.CHROME, container, false);
|
||||||
|
browserUser = new ChromeUser("TestUser", 50, "OpenVidu TestApp");
|
||||||
|
break;
|
||||||
|
case "chromeAlternateFakeVideo":
|
||||||
|
container = chromeContainer("selenium/standalone-chrome:" + CHROME_VERSION, 2147483648L, 1, false);
|
||||||
|
setupBrowserAux(BrowserNames.CHROME, container, false);
|
||||||
|
browserUser = new ChromeUser("TestUser", 50, Paths.get("/opt/openvidu/barcode.y4m"));
|
||||||
break;
|
break;
|
||||||
case "firefox":
|
case "firefox":
|
||||||
setupBrowserAux(BrowserNames.FIREFOX, firefox, false);
|
container = firefoxContainer("selenium/standalone-firefox:" + FIREFOX_VERSION, 2147483648L, 1, true);
|
||||||
|
setupBrowserAux(BrowserNames.FIREFOX, container, false);
|
||||||
browserUser = new FirefoxUser("TestUser", 50, false);
|
browserUser = new FirefoxUser("TestUser", 50, false);
|
||||||
break;
|
break;
|
||||||
case "firefoxDisabledOpenH264":
|
case "firefoxDisabledOpenH264":
|
||||||
setupBrowserAux(BrowserNames.FIREFOX, firefox, false);
|
container = firefoxContainer("selenium/standalone-firefox:" + FIREFOX_VERSION, 2147483648L, 1, true);
|
||||||
|
setupBrowserAux(BrowserNames.FIREFOX, container, false);
|
||||||
browserUser = new FirefoxUser("TestUser", 50, true);
|
browserUser = new FirefoxUser("TestUser", 50, true);
|
||||||
break;
|
break;
|
||||||
case "opera":
|
case "opera":
|
||||||
setupBrowserAux(BrowserNames.OPERA, opera, false);
|
container = operaContainer("selenium/standalone-opera:" + OPERA_VERSION, 2147483648L, 1);
|
||||||
|
setupBrowserAux(BrowserNames.OPERA, container, false);
|
||||||
browserUser = new OperaUser("TestUser", 50);
|
browserUser = new OperaUser("TestUser", 50);
|
||||||
break;
|
break;
|
||||||
case "edge":
|
case "edge":
|
||||||
setupBrowserAux(BrowserNames.EDGE, edge, false);
|
container = edgeContainer("selenium/standalone-edge:" + EDGE_VERSION, 2147483648L, 1, true);
|
||||||
|
setupBrowserAux(BrowserNames.EDGE, container, false);
|
||||||
browserUser = new EdgeUser("TestUser", 50);
|
browserUser = new EdgeUser("TestUser", 50);
|
||||||
break;
|
break;
|
||||||
case "chromeAlternateScreenShare":
|
|
||||||
setupBrowserAux(BrowserNames.CHROME, chrome, false);
|
|
||||||
browserUser = new ChromeUser("TestUser", 50, "OpenVidu TestApp", false);
|
|
||||||
break;
|
|
||||||
case "chromeAsRoot":
|
|
||||||
setupBrowserAux(BrowserNames.CHROME, chrome, false);
|
|
||||||
browserUser = new ChromeUser("TestUser", 50, true);
|
|
||||||
break;
|
|
||||||
case "androidChrome":
|
case "androidChrome":
|
||||||
setupBrowserAux(BrowserNames.ANDROID, android, false);
|
container = androidContainer("budtmo/docker-android-x86-12.0:latest", 4294967296L);
|
||||||
|
setupBrowserAux(BrowserNames.ANDROID, container, false);
|
||||||
try {
|
try {
|
||||||
// TODO: remove this try-catch when possible. Fixes
|
// TODO: remove this try-catch when possible. Fixes
|
||||||
// https://github.com/budtmo/docker-android/issues/309
|
// https://github.com/budtmo/docker-android/issues/309
|
||||||
android.execInContainer("bash", "-c",
|
container.execInContainer("bash", "-c",
|
||||||
"rm chromedriver && wget https://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_linux64.zip && unzip chromedriver_linux64.zip && rm chromedriver_linux64.zip");
|
"rm chromedriver && wget https://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_linux64.zip && unzip chromedriver_linux64.zip && rm chromedriver_linux64.zip");
|
||||||
} catch (UnsupportedOperationException | IOException | InterruptedException e) {
|
} catch (UnsupportedOperationException | IOException | InterruptedException e) {
|
||||||
log.error("Error running command in Android container");
|
log.error("Error running command in Android container");
|
||||||
|
@ -338,10 +368,11 @@ public class OpenViduTestE2e {
|
||||||
browserUser = new AndroidChromeUser("TestUser", 50);
|
browserUser = new AndroidChromeUser("TestUser", 50);
|
||||||
break;
|
break;
|
||||||
case "androidFirefox":
|
case "androidFirefox":
|
||||||
setupBrowserAux(BrowserNames.ANDROID, android, false);
|
container = androidContainer("budtmo/docker-android-x86-12.0:latest", 4294967296L);
|
||||||
|
setupBrowserAux(BrowserNames.ANDROID, container, false);
|
||||||
try {
|
try {
|
||||||
// Download geckodriver and place in PATH at /usr/bin/
|
// Download geckodriver and place in PATH at /usr/bin/
|
||||||
android.execInContainer("bash", "-c",
|
container.execInContainer("bash", "-c",
|
||||||
"wget https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-linux64.tar.gz && tar -xf geckodriver*.tar.gz && rm geckodriver*.tar.gz && mv geckodriver /usr/bin/.");
|
"wget https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-linux64.tar.gz && tar -xf geckodriver*.tar.gz && rm geckodriver*.tar.gz && mv geckodriver /usr/bin/.");
|
||||||
} catch (UnsupportedOperationException | IOException | InterruptedException e) {
|
} catch (UnsupportedOperationException | IOException | InterruptedException e) {
|
||||||
log.error("Error running command in Android container");
|
log.error("Error running command in Android container");
|
||||||
|
@ -349,11 +380,12 @@ public class OpenViduTestE2e {
|
||||||
browserUser = new AndroidFirefoxUser("TestUser", 50);
|
browserUser = new AndroidFirefoxUser("TestUser", 50);
|
||||||
break;
|
break;
|
||||||
case "androidApp":
|
case "androidApp":
|
||||||
setupBrowserAux(BrowserNames.ANDROID, android, false);
|
container = androidContainer("budtmo/docker-android-x86-12.0:latest", 4294967296L);
|
||||||
|
setupBrowserAux(BrowserNames.ANDROID, container, false);
|
||||||
try {
|
try {
|
||||||
// TODO: remove this try-catch when possible. Fixes
|
// TODO: remove this try-catch when possible. Fixes
|
||||||
// https://github.com/budtmo/docker-android/issues/309
|
// https://github.com/budtmo/docker-android/issues/309
|
||||||
android.execInContainer("bash", "-c",
|
container.execInContainer("bash", "-c",
|
||||||
"rm chromedriver && wget https://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_linux64.zip && unzip chromedriver_linux64.zip && rm chromedriver_linux64.zip");
|
"rm chromedriver && wget https://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_linux64.zip && unzip chromedriver_linux64.zip && rm chromedriver_linux64.zip");
|
||||||
} catch (UnsupportedOperationException | IOException | InterruptedException e) {
|
} catch (UnsupportedOperationException | IOException | InterruptedException e) {
|
||||||
log.error("Error running command in Android container");
|
log.error("Error running command in Android container");
|
||||||
|
@ -361,23 +393,13 @@ public class OpenViduTestE2e {
|
||||||
browserUser = new AndroidAppUser("TestUser", 50, "/opt/openvidu-cache/app-debug.apk");
|
browserUser = new AndroidAppUser("TestUser", 50, "/opt/openvidu-cache/app-debug.apk");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
setupBrowserAux(BrowserNames.CHROME, chrome, false);
|
log.error("Browser {} not recognized", browser);
|
||||||
browserUser = new ChromeUser("TestUser", 50, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.browserUsers.add(browserUser);
|
this.browserUsers.add(browserUser);
|
||||||
return browserUser;
|
return browserUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected BrowserUser setupChromeWithFakeVideo(String absolutePathToVideoFile) {
|
|
||||||
if (isRemote(BrowserNames.CHROME)) {
|
|
||||||
setupBrowserAux(BrowserNames.CHROME, chrome, true);
|
|
||||||
}
|
|
||||||
BrowserUser browserUser = new ChromeUser("TestUser", 50, Paths.get(absolutePathToVideoFile));
|
|
||||||
this.browserUsers.add(browserUser);
|
|
||||||
return browserUser;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setupBrowserAux(BrowserNames browser, GenericContainer<?> container, boolean forceRestart) {
|
private void setupBrowserAux(BrowserNames browser, GenericContainer<?> container, boolean forceRestart) {
|
||||||
if (isRemote(browser)) {
|
if (isRemote(browser)) {
|
||||||
if (forceRestart && container.isRunning()) {
|
if (forceRestart && container.isRunning()) {
|
||||||
|
@ -385,6 +407,7 @@ public class OpenViduTestE2e {
|
||||||
}
|
}
|
||||||
if (!container.isRunning()) {
|
if (!container.isRunning()) {
|
||||||
container.start();
|
container.start();
|
||||||
|
containers.add(container);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -440,11 +463,12 @@ public class OpenViduTestE2e {
|
||||||
it1.remove();
|
it1.remove();
|
||||||
}
|
}
|
||||||
// Stop and remove all browser containers if necessary
|
// Stop and remove all browser containers if necessary
|
||||||
stopContainerIfPossible(chrome);
|
Iterator<GenericContainer<?>> it2 = containers.iterator();
|
||||||
stopContainerIfPossible(firefox);
|
while (it2.hasNext()) {
|
||||||
stopContainerIfPossible(opera);
|
GenericContainer<?> c = it2.next();
|
||||||
stopContainerIfPossible(edge);
|
stopContainerIfPossible(c);
|
||||||
stopContainerIfPossible(android);
|
it2.remove();
|
||||||
|
}
|
||||||
// Reset REST client
|
// Reset REST client
|
||||||
OV = new OpenVidu(OPENVIDU_URL, OPENVIDU_SECRET);
|
OV = new OpenVidu(OPENVIDU_URL, OPENVIDU_SECRET);
|
||||||
}
|
}
|
||||||
|
@ -452,6 +476,7 @@ public class OpenViduTestE2e {
|
||||||
private void stopContainerIfPossible(GenericContainer<?> container) {
|
private void stopContainerIfPossible(GenericContainer<?> container) {
|
||||||
if (container != null && container.isRunning()) {
|
if (container != null && container.isRunning()) {
|
||||||
container.stop();
|
container.stop();
|
||||||
|
container.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,20 +35,6 @@ public class AbstractOpenViduTestappE2eTest extends OpenViduTestE2e {
|
||||||
return testappUser;
|
return testappUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected OpenViduTestappUser setupChromeWithFakeVideoAndConnectToOpenViduTestApp(String absolutePathToVideoFile) {
|
|
||||||
BrowserUser browserUser = this.setupChromeWithFakeVideo(absolutePathToVideoFile);
|
|
||||||
OpenViduTestappUser testappUser = new OpenViduTestappUser(browserUser);
|
|
||||||
testappUser.getDriver().get(APP_URL);
|
|
||||||
WebElement urlInput = testappUser.getDriver().findElement(By.id("openvidu-url"));
|
|
||||||
urlInput.clear();
|
|
||||||
urlInput.sendKeys(OPENVIDU_URL);
|
|
||||||
WebElement secretInput = testappUser.getDriver().findElement(By.id("openvidu-secret"));
|
|
||||||
secretInput.clear();
|
|
||||||
secretInput.sendKeys(OPENVIDU_SECRET);
|
|
||||||
testappUser.getEventManager().startPolling();
|
|
||||||
return testappUser;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void listEmptyRecordings(OpenViduTestappUser user) {
|
protected void listEmptyRecordings(OpenViduTestappUser user) {
|
||||||
// List existing recordings (empty)
|
// List existing recordings (empty)
|
||||||
user.getDriver().findElement(By.id("list-recording-btn")).click();
|
user.getDriver().findElement(By.id("list-recording-btn")).click();
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
protected static void setupAll() {
|
protected static void setupAll() {
|
||||||
checkFfmpegInstallation();
|
checkFfmpegInstallation();
|
||||||
loadEnvironmentVariables();
|
loadEnvironmentVariables();
|
||||||
prepareBrowsers(new HashSet<>(Arrays.asList(BrowserNames.CHROME)));
|
prepareBrowserDrivers(new HashSet<>(Arrays.asList(BrowserNames.CHROME)));
|
||||||
cleanFoldersAndSetUpOpenViduJavaClient();
|
cleanFoldersAndSetUpOpenViduJavaClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
protected static void setupAll() throws Exception {
|
protected static void setupAll() throws Exception {
|
||||||
checkFfmpegInstallation();
|
checkFfmpegInstallation();
|
||||||
loadEnvironmentVariables();
|
loadEnvironmentVariables();
|
||||||
prepareBrowsers(new HashSet<>(Arrays.asList(BrowserNames.CHROME, BrowserNames.FIREFOX, BrowserNames.OPERA,
|
prepareBrowserDrivers(new HashSet<>(Arrays.asList(BrowserNames.CHROME, BrowserNames.FIREFOX, BrowserNames.OPERA,
|
||||||
BrowserNames.EDGE, BrowserNames.ANDROID)));
|
BrowserNames.EDGE, BrowserNames.ANDROID)));
|
||||||
cleanFoldersAndSetUpOpenViduJavaClient();
|
cleanFoldersAndSetUpOpenViduJavaClient();
|
||||||
getDefaultTranscodingValues();
|
getDefaultTranscodingValues();
|
||||||
|
@ -139,8 +139,8 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Disabled
|
|
||||||
@DisplayName("One2One Chrome Android")
|
@DisplayName("One2One Chrome Android")
|
||||||
|
@Disabled
|
||||||
void oneToOneChromeAndroid() throws Exception {
|
void oneToOneChromeAndroid() throws Exception {
|
||||||
long initTime = System.currentTimeMillis();
|
long initTime = System.currentTimeMillis();
|
||||||
OpenViduTestappUser user = setupBrowserAndConnectToOpenViduTestapp("androidChrome");
|
OpenViduTestappUser user = setupBrowserAndConnectToOpenViduTestapp("androidChrome");
|
||||||
|
@ -2204,7 +2204,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
@DisplayName("Video filter events test")
|
@DisplayName("Video filter events test")
|
||||||
void videoFilterEventsTest() throws Exception {
|
void videoFilterEventsTest() throws Exception {
|
||||||
|
|
||||||
OpenViduTestappUser user = setupChromeWithFakeVideoAndConnectToOpenViduTestApp("/opt/openvidu/barcode.y4m");
|
OpenViduTestappUser user = setupBrowserAndConnectToOpenViduTestapp("chromeAlternateFakeVideo");
|
||||||
|
|
||||||
log.info("Video filter events test");
|
log.info("Video filter events test");
|
||||||
|
|
||||||
|
@ -3898,7 +3898,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
void webhookFilterEventTest() throws Exception {
|
void webhookFilterEventTest() throws Exception {
|
||||||
isRecordingTest = true;
|
isRecordingTest = true;
|
||||||
|
|
||||||
OpenViduTestappUser user = setupChromeWithFakeVideoAndConnectToOpenViduTestApp("/opt/openvidu/barcode.y4m");
|
OpenViduTestappUser user = setupBrowserAndConnectToOpenViduTestapp("chromeAlternateFakeVideo");
|
||||||
|
|
||||||
log.info("Webhook test");
|
log.info("Webhook test");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue