Update selenium dependency

pull/772/head
pabloFuente 2022-11-30 18:28:54 +01:00
parent e1aaf91053
commit 62794257e3
10 changed files with 153 additions and 177 deletions

View File

@ -6,10 +6,8 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.openqa.selenium.UnexpectedAlertBehaviour; import org.openqa.selenium.UnexpectedAlertBehaviour;
import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.RemoteWebDriver;
import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidDriver;
@ -21,11 +19,10 @@ public class AndroidFirefoxUser extends BrowserUser {
public AndroidFirefoxUser(String userName, int timeOfWaitInSeconds) { public AndroidFirefoxUser(String userName, int timeOfWaitInSeconds) {
super(userName, timeOfWaitInSeconds); super(userName, timeOfWaitInSeconds);
DesiredCapabilities capabilities = new DesiredCapabilities(); FirefoxOptions options = new FirefoxOptions();
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "12.0"); options.setCapability(MobileCapabilityType.PLATFORM_VERSION, "12.0");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android device"); options.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID); options.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
URL url = null; URL url = null;
try { try {
@ -34,13 +31,12 @@ public class AndroidFirefoxUser extends BrowserUser {
e.printStackTrace(); e.printStackTrace();
} }
AndroidDriver<?> driver = new AndroidDriver<>(url, capabilities); AndroidDriver<?> driver = new AndroidDriver<>(url, options);
driver.installApp("/opt/openvidu-cache/firefox-91-4-0.apk"); driver.installApp("/opt/openvidu-cache/firefox-91-4-0.apk");
driver.quit(); driver.quit();
capabilities = DesiredCapabilities.firefox(); options.setAcceptInsecureCerts(true);
capabilities.setAcceptInsecureCerts(true); options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.IGNORE);
capabilities.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
FirefoxProfile profile = new FirefoxProfile(); FirefoxProfile profile = new FirefoxProfile();
// This flag avoids granting the access to the camera // This flag avoids granting the access to the camera
@ -49,28 +45,27 @@ public class AndroidFirefoxUser extends BrowserUser {
profile.setPreference("media.navigator.streams.fake", true); profile.setPreference("media.navigator.streams.fake", true);
// These flags allows controlling Firefox remotely // These flags allows controlling Firefox remotely
profile.setPreference("devtools.debugger.remote-enabled", true); profile.setPreference("devtools.debugger.remote-enabled", true);
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android device"); options.setCapability(MobileCapabilityType.DEVICE_NAME, "Android device");
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "firefox"); options.setCapability(MobileCapabilityType.BROWSER_NAME, "firefox");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "linux"); options.setCapability(MobileCapabilityType.PLATFORM_NAME, "linux");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Gecko"); options.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Gecko");
capabilities.setCapability("appium:automationName", "Gecko"); options.setCapability("appium:automationName", "Gecko");
capabilities.setCapability("marionette", true); options.setCapability("marionette", true);
capabilities.setCapability("appium:marionette", true); options.setCapability("appium:marionette", true);
capabilities.setCapability("androidStorage", "app"); options.setCapability("androidStorage", "app");
capabilities.setCapability("appium:androidStorage", "app"); options.setCapability("appium:androidStorage", "app");
Map<String, Object> mozFirefoxOptions = new HashMap<>(); Map<String, Object> mozFirefoxOptions = new HashMap<>();
mozFirefoxOptions.put("androidPackage", "org.mozilla.firefox"); mozFirefoxOptions.put("androidPackage", "org.mozilla.firefox");
mozFirefoxOptions.put("androidDeviceSerial", "emulator-5554"); mozFirefoxOptions.put("androidDeviceSerial", "emulator-5554");
mozFirefoxOptions.put("binary", "/Applications/Firefox.app"); mozFirefoxOptions.put("binary", "/Applications/Firefox.app");
capabilities.setCapability("moz:firefoxOptions", mozFirefoxOptions); options.setCapability("moz:firefoxOptions", mozFirefoxOptions);
long initTime = System.currentTimeMillis(); long initTime = System.currentTimeMillis();
try { try {
this.driver = new RemoteWebDriver(url, capabilities); this.driver = new RemoteWebDriver(url, options);
} catch (Exception e) { } catch (Exception e) {
log.error("{}", e); log.error("{}", e);
} }

View File

@ -57,11 +57,11 @@ public class BrowserUser {
} }
protected void newWaiter(int timeOfWait) { protected void newWaiter(int timeOfWait) {
this.waiter = new WebDriverWait(this.driver, timeOfWait); this.waiter = new WebDriverWait(this.driver, Duration.ofSeconds(timeOfWait));
} }
protected void configureDriver() { protected void configureDriver() {
this.waiter = new WebDriverWait(this.driver, timeOfWaitInSeconds); this.waiter = new WebDriverWait(this.driver, Duration.ofSeconds(timeOfWaitInSeconds));
} }
protected void configureDriver(Dimension windowDimensions) { protected void configureDriver(Dimension windowDimensions) {

View File

@ -21,9 +21,9 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.time.Duration;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.UnexpectedAlertBehaviour; import org.openqa.selenium.UnexpectedAlertBehaviour;
import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeDriver;
@ -32,104 +32,104 @@ import org.openqa.selenium.remote.RemoteWebDriver;
public class ChromeUser extends BrowserUser { public class ChromeUser extends BrowserUser {
public ChromeUser(String userName, int timeOfWaitInSeconds, boolean headless) { public ChromeUser(String userName, int timeOfWaitInSeconds, boolean headless) {
this(userName, timeOfWaitInSeconds, generateDefaultScreenChromeOptions(), headless); this(userName, timeOfWaitInSeconds, generateDefaultScreenChromeOptions(), headless);
} }
public ChromeUser(String userName, int timeOfWaitInSeconds, String screenToCapture) { public ChromeUser(String userName, int timeOfWaitInSeconds, String screenToCapture) {
this(userName, timeOfWaitInSeconds, this(userName, timeOfWaitInSeconds,
generateCustomScreenChromeOptions(screenToCapture, Paths.get("/opt/openvidu/fakeaudio.wav")), false); 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, generateFakeVideoAudioChromeOptions(fakeVideoLocation, null), true); this(userName, timeOfWaitInSeconds, generateFakeVideoAudioChromeOptions(fakeVideoLocation, null), true);
} }
public ChromeUser(String userName, int timeOfWaitInSeconds, Path fakeVideoLocation, boolean headless) { public ChromeUser(String userName, int timeOfWaitInSeconds, Path fakeVideoLocation, boolean headless) {
this(userName, timeOfWaitInSeconds, generateFakeVideoAudioChromeOptions(fakeVideoLocation, null), headless); this(userName, timeOfWaitInSeconds, generateFakeVideoAudioChromeOptions(fakeVideoLocation, null), headless);
} }
public ChromeUser(String userName, int timeOfWaitInSeconds, Path fakeVideoLocation, Path fakeAudioLocation) { public ChromeUser(String userName, int timeOfWaitInSeconds, Path fakeVideoLocation, Path fakeAudioLocation) {
this(userName, timeOfWaitInSeconds, generateFakeVideoAudioChromeOptions(fakeVideoLocation, fakeAudioLocation), this(userName, timeOfWaitInSeconds, generateFakeVideoAudioChromeOptions(fakeVideoLocation, fakeAudioLocation),
true); true);
} }
public ChromeUser(String userName, int timeOfWaitInSeconds, Path fakeVideoLocation, Path fakeAudioLocation, public ChromeUser(String userName, int timeOfWaitInSeconds, Path fakeVideoLocation, Path fakeAudioLocation,
boolean headless) { boolean headless) {
this(userName, timeOfWaitInSeconds, generateFakeVideoAudioChromeOptions(fakeVideoLocation, fakeAudioLocation), this(userName, timeOfWaitInSeconds, generateFakeVideoAudioChromeOptions(fakeVideoLocation, fakeAudioLocation),
headless); headless);
} }
private ChromeUser(String userName, int timeOfWaitInSeconds, ChromeOptions options, boolean headless) { 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");
options.setAcceptInsecureCerts(true); options.setAcceptInsecureCerts(true);
options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.IGNORE); options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.IGNORE);
if (REMOTE_URL != null && headless) { if (REMOTE_URL != null && headless) {
options.setHeadless(true); options.setHeadless(true);
} }
options.addArguments("--disable-infobars"); options.addArguments("--disable-infobars");
options.setExperimentalOption("excludeSwitches", new String[] { "enable-automation" }); options.setExperimentalOption("excludeSwitches", new String[] { "enable-automation" });
Map<String, Object> prefs = new HashMap<String, Object>(); Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_setting_values.media_stream_mic", 1); prefs.put("profile.default_content_setting_values.media_stream_mic", 1);
prefs.put("profile.default_content_setting_values.media_stream_camera", 1); prefs.put("profile.default_content_setting_values.media_stream_camera", 1);
options.setExperimentalOption("prefs", prefs); options.setExperimentalOption("prefs", prefs);
if (REMOTE_URL != null) { if (REMOTE_URL != null) {
log.info("Using URL {} to connect to remote web driver", REMOTE_URL); log.info("Using URL {} to connect to remote web driver", REMOTE_URL);
try { try {
this.driver = new RemoteWebDriver(new URL(REMOTE_URL), options); this.driver = new RemoteWebDriver(new URL(REMOTE_URL), options);
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
e.printStackTrace(); e.printStackTrace();
} }
} else { } else {
log.info("Using local web driver"); log.info("Using local web driver");
this.driver = new ChromeDriver(options); this.driver = new ChromeDriver(options);
} }
this.driver.manage().timeouts().setScriptTimeout(timeOfWaitInSeconds, TimeUnit.SECONDS); this.driver.manage().timeouts().scriptTimeout(Duration.ofSeconds(timeOfWaitInSeconds));
this.configureDriver(new org.openqa.selenium.Dimension(1920, 1080)); this.configureDriver(new org.openqa.selenium.Dimension(1920, 1080));
} }
private static ChromeOptions generateDefaultScreenChromeOptions() { 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");
// This flag fakes user media with synthetic video // This flag fakes user media with synthetic video
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");
return options; return options;
} }
private static ChromeOptions generateCustomScreenChromeOptions(String screenToCapture, Path audioFileLocation) { private static ChromeOptions generateCustomScreenChromeOptions(String screenToCapture, 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());
return options; return options;
} }
private static ChromeOptions generateFakeVideoAudioChromeOptions(Path videoFileLocation, Path audioFileLocation) { private static ChromeOptions generateFakeVideoAudioChromeOptions(Path videoFileLocation, Path audioFileLocation) {
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");
// This flag fakes user media with synthetic video // This flag fakes user media with synthetic video
options.addArguments("--use-fake-device-for-media-stream"); options.addArguments("--use-fake-device-for-media-stream");
if (videoFileLocation != null) { if (videoFileLocation != null) {
options.addArguments("--use-file-for-fake-video-capture=" + videoFileLocation.toString()); options.addArguments("--use-file-for-fake-video-capture=" + videoFileLocation.toString());
} }
if (audioFileLocation != null) { if (audioFileLocation != null) {
options.addArguments("--use-file-for-fake-audio-capture=" + audioFileLocation.toString()); options.addArguments("--use-file-for-fake-audio-capture=" + audioFileLocation.toString());
} }
return options; return options;
} }
} }

View File

@ -2,16 +2,11 @@ package io.openvidu.test.browsers;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.openqa.selenium.UnexpectedAlertBehaviour; import org.openqa.selenium.UnexpectedAlertBehaviour;
import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions; import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.RemoteWebDriver;
public class EdgeUser extends BrowserUser { public class EdgeUser extends BrowserUser {
@ -22,20 +17,14 @@ public class EdgeUser extends BrowserUser {
String REMOTE_URL = System.getProperty("REMOTE_URL_EDGE"); String REMOTE_URL = System.getProperty("REMOTE_URL_EDGE");
EdgeOptions options = new EdgeOptions(); EdgeOptions options = new EdgeOptions();
options.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE); options.setAcceptInsecureCerts(true);
options.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true); options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.IGNORE);
// When upgrading to selenium 4.0.0 options.addArguments will make this easier options.addArguments("--use-fake-ui-for-media-stream");
List<String> args = new ArrayList<>(); options.addArguments("--use-fake-device-for-media-stream");
args.add("use-fake-ui-for-media-stream"); options.addArguments("--disable-infobars");
args.add("use-fake-device-for-media-stream");
if (REMOTE_URL != null) {
args.add("headless");
}
Map<String, Object> map = new HashMap<>();
map.put("args", args);
options.setCapability("ms:edgeOptions", map);
if (REMOTE_URL != null) { if (REMOTE_URL != null) {
options.setHeadless(true);
log.info("Using URL {} to connect to remote web driver", REMOTE_URL); log.info("Using URL {} to connect to remote web driver", REMOTE_URL);
try { try {
this.driver = new RemoteWebDriver(new URL(REMOTE_URL), options); this.driver = new RemoteWebDriver(new URL(REMOTE_URL), options);

View File

@ -19,14 +19,11 @@ package io.openvidu.test.browsers;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.concurrent.TimeUnit; import java.time.Duration;
import org.openqa.selenium.UnexpectedAlertBehaviour; import org.openqa.selenium.UnexpectedAlertBehaviour;
import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.RemoteWebDriver;
public class FirefoxUser extends BrowserUser { public class FirefoxUser extends BrowserUser {
@ -36,25 +33,20 @@ public class FirefoxUser extends BrowserUser {
String REMOTE_URL = System.getProperty("REMOTE_URL_FIREFOX"); String REMOTE_URL = System.getProperty("REMOTE_URL_FIREFOX");
DesiredCapabilities capabilities = DesiredCapabilities.firefox(); FirefoxOptions options = new FirefoxOptions();
capabilities.setAcceptInsecureCerts(true);
capabilities.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
FirefoxProfile profile = new FirefoxProfile(); options.setAcceptInsecureCerts(true);
options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.IGNORE);
// This flag avoids granting the access to the camera // This flag avoids granting the access to the camera
profile.setPreference("media.navigator.permission.disabled", true); options.addPreference("media.navigator.permission.disabled", true);
// This flag force to use fake user media (synthetic video of multiple color) // This flag force to use fake user media (synthetic video of multiple color)
profile.setPreference("media.navigator.streams.fake", true); options.addPreference("media.navigator.streams.fake", true);
if (disableOpenH264) { if (disableOpenH264) {
profile.setPreference("media.gmp-gmpopenh264.enabled", false); options.addPreference("media.gmp-gmpopenh264.enabled", false);
} }
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
FirefoxOptions options = new FirefoxOptions(capabilities);
if (REMOTE_URL != null) { if (REMOTE_URL != null) {
options.setHeadless(true); options.setHeadless(true);
log.info("Using URL {} to connect to remote web driver", REMOTE_URL); log.info("Using URL {} to connect to remote web driver", REMOTE_URL);
@ -68,7 +60,7 @@ public class FirefoxUser extends BrowserUser {
this.driver = new FirefoxDriver(options); this.driver = new FirefoxDriver(options);
} }
this.driver.manage().timeouts().setScriptTimeout(timeOfWaitInSeconds, TimeUnit.SECONDS); this.driver.manage().timeouts().scriptTimeout(Duration.ofSeconds(timeOfWaitInSeconds));
this.configureDriver(new org.openqa.selenium.Dimension(1920, 1080)); this.configureDriver(new org.openqa.selenium.Dimension(1920, 1080));
} }

View File

@ -2,11 +2,11 @@ package io.openvidu.test.browsers;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.concurrent.TimeUnit; import java.time.Duration;
import org.openqa.selenium.opera.OperaDriver; import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.opera.OperaOptions; import org.openqa.selenium.remote.Browser;
import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.RemoteWebDriver;
public class OperaUser extends BrowserUser { public class OperaUser extends BrowserUser {
@ -14,16 +14,17 @@ public class OperaUser extends BrowserUser {
public OperaUser(String userName, int timeOfWaitInSeconds) { public OperaUser(String userName, int timeOfWaitInSeconds) {
super(userName, timeOfWaitInSeconds); super(userName, timeOfWaitInSeconds);
DesiredCapabilities capabilities = DesiredCapabilities.operaBlink(); ChromeOptions options = new ChromeOptions();
capabilities.setAcceptInsecureCerts(true); options.setCapability(CapabilityType.BROWSER_NAME, Browser.OPERA.browserName());
OperaOptions options = new OperaOptions(); options.setAcceptInsecureCerts(true);
options.addArguments("---allow-elevated-browser");
options.setExperimentalOption("w3c", true);
// 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");
// This flag fakes user media with synthetic video // This flag fakes user media with synthetic video
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");
options.merge(capabilities);
String REMOTE_URL = System.getProperty("REMOTE_URL_OPERA"); String REMOTE_URL = System.getProperty("REMOTE_URL_OPERA");
if (REMOTE_URL != null) { if (REMOTE_URL != null) {
@ -35,10 +36,10 @@ public class OperaUser extends BrowserUser {
} }
} else { } else {
log.info("Using local web driver"); log.info("Using local web driver");
this.driver = new OperaDriver(options); // this.driver = new OperaDriver(options);
} }
this.driver.manage().timeouts().setScriptTimeout(timeOfWaitInSeconds, TimeUnit.SECONDS); this.driver.manage().timeouts().scriptTimeout(Duration.ofSeconds(timeOfWaitInSeconds));
this.configureDriver(new org.openqa.selenium.Dimension(1920, 1080)); this.configureDriver(new org.openqa.selenium.Dimension(1920, 1080));
} }

View File

@ -75,7 +75,7 @@
<dependency> <dependency>
<groupId>io.github.bonigarcia</groupId> <groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId> <artifactId>webdrivermanager</artifactId>
<version>${version.webdrivermanager}</version> <version>5.3.1</version>
<exclusions> <exclusions>
<exclusion> <exclusion>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>

View File

@ -20,7 +20,6 @@ import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import org.apache.commons.io.FileUtils;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
@ -35,6 +34,7 @@ import org.springframework.http.HttpMethod;
import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.containers.wait.strategy.WaitStrategy; import org.testcontainers.containers.wait.strategy.WaitStrategy;
import org.testcontainers.shaded.org.apache.commons.io.FileUtils;
import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.DockerImageName;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;

View File

@ -103,8 +103,8 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
protected static void setupAll() throws Exception { protected static void setupAll() throws Exception {
checkFfmpegInstallation(); checkFfmpegInstallation();
loadEnvironmentVariables(); loadEnvironmentVariables();
prepareBrowserDrivers(new HashSet<>(Arrays.asList(BrowserNames.CHROME, BrowserNames.FIREFOX, BrowserNames.OPERA, prepareBrowserDrivers(new HashSet<>(Arrays.asList(BrowserNames.CHROME, BrowserNames.FIREFOX,
BrowserNames.EDGE, BrowserNames.ANDROID))); BrowserNames.EDGE /* , BrowserNames.OPERA, BrowserNames.ANDROID */)));
cleanFoldersAndSetUpOpenViduJavaClient(); cleanFoldersAndSetUpOpenViduJavaClient();
getDefaultTranscodingValues(); getDefaultTranscodingValues();
} }
@ -127,6 +127,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
@Test @Test
@DisplayName("One2One Opera") @DisplayName("One2One Opera")
@Disabled
void oneToOneOpera() throws Exception { void oneToOneOpera() throws Exception {
OpenViduTestappUser user = setupBrowserAndConnectToOpenViduTestapp("opera"); OpenViduTestappUser user = setupBrowserAndConnectToOpenViduTestapp("opera");
log.info("One2One Opera"); log.info("One2One Opera");
@ -456,7 +457,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
} }
}; };
final CountDownLatch latch = new CountDownLatch(4); final CountDownLatch latch = new CountDownLatch(3);
final BiFunction<OpenViduTestappUser, String, Void> browserTest = (user, browserName) -> { final BiFunction<OpenViduTestappUser, String, Void> browserTest = (user, browserName) -> {
@ -464,13 +465,13 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
user.getDriver().findElement(By.className("join-btn")).click(); user.getDriver().findElement(By.className("join-btn")).click();
try { try {
user.getEventManager().waitUntilEventReaches("connectionCreated", 4, 100, true); user.getEventManager().waitUntilEventReaches("connectionCreated", 3, 100, true);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("streamCreated", 4); user.getEventManager().waitUntilEventReaches("streamCreated", 3);
user.getEventManager().waitUntilEventReaches("streamPlaying", 4); user.getEventManager().waitUntilEventReaches("streamPlaying", 3);
final int numberOfVideos = user.getDriver().findElements(By.tagName("video")).size(); final int numberOfVideos = user.getDriver().findElements(By.tagName("video")).size();
Assertions.assertEquals(4, numberOfVideos, "Wrong number of videos"); Assertions.assertEquals(3, numberOfVideos, "Wrong number of videos");
Assertions Assertions
.assertTrue( .assertTrue(
user.getEventManager().assertMediaTracks( user.getEventManager().assertMediaTracks(
@ -515,16 +516,6 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
}); });
Thread threadOpera = new Thread(() -> {
try {
browserTest.apply(setupBrowserAndConnectToOpenViduTestapp("opera"), "Opera");
} catch (Exception e) {
String errMsg = "Error setting up browser: " + e.getMessage();
System.err.println(errMsg);
Assertions.fail(errMsg);
Thread.currentThread().interrupt();
}
});
Thread threadEdge = new Thread(() -> { Thread threadEdge = new Thread(() -> {
try { try {
browserTest.apply(setupBrowserAndConnectToOpenViduTestapp("edge"), "Edge"); browserTest.apply(setupBrowserAndConnectToOpenViduTestapp("edge"), "Edge");
@ -535,19 +526,29 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
}); });
// Thread threadOpera = new Thread(() -> {
// try {
// browserTest.apply(setupBrowserAndConnectToOpenViduTestapp("opera"), "Opera");
// } catch (Exception e) {
// String errMsg = "Error setting up browser: " + e.getMessage();
// System.err.println(errMsg);
// Assertions.fail(errMsg);
// Thread.currentThread().interrupt();
// }
// });
threadChrome.setUncaughtExceptionHandler(h); threadChrome.setUncaughtExceptionHandler(h);
threadFirefox.setUncaughtExceptionHandler(h); threadFirefox.setUncaughtExceptionHandler(h);
threadOpera.setUncaughtExceptionHandler(h);
threadEdge.setUncaughtExceptionHandler(h); threadEdge.setUncaughtExceptionHandler(h);
// threadOpera.setUncaughtExceptionHandler(h);
threadChrome.start(); threadChrome.start();
threadFirefox.start(); threadFirefox.start();
threadOpera.start();
threadEdge.start(); threadEdge.start();
// threadOpera.start();
threadChrome.join(); threadChrome.join();
threadFirefox.join(); threadFirefox.join();
threadOpera.join();
threadEdge.join(); threadEdge.join();
// threadOpera.join();
synchronized (lock) { synchronized (lock) {
if (OpenViduTestAppE2eTest.ex != null) { if (OpenViduTestAppE2eTest.ex != null) {

View File

@ -51,7 +51,7 @@
<version.openvidu.test.e2e>1.1.1</version.openvidu.test.e2e> <version.openvidu.test.e2e>1.1.1</version.openvidu.test.e2e>
<version.junit>5.9.1</version.junit> <version.junit>5.9.1</version.junit>
<version.selenium>3.141.59</version.selenium> <version.selenium>4.6.0</version.selenium>
<version.mockito.core>4.9.0</version.mockito.core> <version.mockito.core>4.9.0</version.mockito.core>
<version.powermock>2.0.9</version.powermock> <version.powermock>2.0.9</version.powermock>
<version.janino>3.1.9</version.janino> <version.janino>3.1.9</version.janino>
@ -63,8 +63,6 @@
<version.appium>7.6.0</version.appium> <version.appium>7.6.0</version.appium>
<version.stringsimilarity>2.0.0</version.stringsimilarity> <version.stringsimilarity>2.0.0</version.stringsimilarity>
<version.webdrivermanager>4.2.2</version.webdrivermanager>
<version.enforcer.plugin>3.1.0</version.enforcer.plugin> <version.enforcer.plugin>3.1.0</version.enforcer.plugin>
<version.extra.enforcer.rules.plugin>1.6.1</version.extra.enforcer.rules.plugin> <version.extra.enforcer.rules.plugin>1.6.1</version.extra.enforcer.rules.plugin>
<version.source.plugin>3.2.1</version.source.plugin> <version.source.plugin>3.2.1</version.source.plugin>