|
12 | 12 | import java.io.File;
|
13 | 13 | import java.io.IOException;
|
14 | 14 | import java.net.InetAddress;
|
15 |
| -import java.net.MalformedURLException; |
16 |
| -import java.net.URL; |
17 | 15 | import java.net.UnknownHostException;
|
18 | 16 | import java.nio.file.Files;
|
19 | 17 | import java.nio.file.Path;
|
20 | 18 | import java.nio.file.Paths;
|
21 | 19 | import java.nio.file.StandardCopyOption;
|
22 | 20 | import java.time.Duration;
|
23 |
| -import java.util.HashMap; |
24 | 21 | import java.util.Locale;
|
25 | 22 | import java.util.Map;
|
26 | 23 | import java.util.logging.Logger;
|
|
66 | 63 | import org.openqa.selenium.firefox.FirefoxDriver;
|
67 | 64 | import org.openqa.selenium.firefox.FirefoxOptions;
|
68 | 65 | import org.openqa.selenium.firefox.GeckoDriverService;
|
69 |
| -import org.openqa.selenium.remote.Augmenter; |
70 | 66 | import org.openqa.selenium.remote.CapabilityType;
|
71 | 67 | import org.openqa.selenium.remote.LocalFileDetector;
|
72 | 68 | import org.openqa.selenium.remote.RemoteWebDriver;
|
@@ -116,19 +112,10 @@ private WebDriver createWebDriver(TestCleaner cleaner, TestName testName) throws
|
116 | 112 | return createContainerWebDriver(
|
117 | 113 | cleaner, "selenium/standalone-firefox:4.32.0", buildFirefoxOptions(testName));
|
118 | 114 | case "chrome-container":
|
119 |
| - return createContainerWebDriver(cleaner, "selenium/standalone-chrome:4.32.0", new ChromeOptions()); |
| 115 | + return createContainerWebDriver( |
| 116 | + cleaner, "selenium/standalone-chrome:4.32.0", buildChromeOptions(testName)); |
120 | 117 | case "chrome":
|
121 |
| - Map<String, String> prefs = new HashMap<>(); |
122 |
| - prefs.put(LANGUAGE_SELECTOR, "en"); |
123 |
| - ChromeOptions options = new ChromeOptions(); |
124 |
| - options.setExperimentalOption("prefs", prefs); |
125 |
| - if (HarRecorder.isCaptureHarEnabled()) { |
126 |
| - options.setAcceptInsecureCerts(true); |
127 |
| - options.setProxy(createSeleniumProxy(testName.get())); |
128 |
| - } |
129 |
| - |
130 |
| - setDriverPropertyIfMissing("chromedriver", ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY); |
131 |
| - return new ChromeDriver(options); |
| 118 | + return new ChromeDriver(buildChromeOptions(testName)); |
132 | 119 | case "safari":
|
133 | 120 | return new SafariDriver();
|
134 | 121 | case "saucelabs":
|
@@ -157,16 +144,16 @@ private WebDriver createWebDriver(TestCleaner cleaner, TestName testName) throws
|
157 | 144 | }
|
158 | 145 | }
|
159 | 146 |
|
160 |
| - private WebDriver buildRemoteWebDriver(Capabilities options) throws MalformedURLException { |
| 147 | + private WebDriver buildRemoteWebDriver(Capabilities options) { |
161 | 148 | String u = System.getenv("REMOTE_WEBDRIVER_URL");
|
162 | 149 | if (StringUtils.isBlank(u)) {
|
163 | 150 | throw new Error("remote-webdriver type browsers require REMOTE_WEBDRIVER_URL to be set");
|
164 | 151 | }
|
165 |
| - RemoteWebDriver driver = new RemoteWebDriver( |
166 |
| - new URL(u), // http://192.168.99.100:4444/wd/hub |
167 |
| - options); |
168 |
| - driver.setFileDetector(new LocalFileDetector()); |
169 |
| - return new Augmenter().augment(driver); |
| 152 | + // http://192.168.99.100:4444/wd/hub |
| 153 | + WebDriver driver = |
| 154 | + RemoteWebDriver.builder().address(u).addAlternative(options).build(); |
| 155 | + ((RemoteWebDriver) driver).setFileDetector(new LocalFileDetector()); |
| 156 | + return driver; |
170 | 157 | }
|
171 | 158 |
|
172 | 159 | private String getBrowser() {
|
@@ -202,9 +189,15 @@ private FirefoxOptions buildFirefoxOptions(TestName testName) throws IOException
|
202 | 189 |
|
203 | 190 | private ChromeOptions buildChromeOptions(TestName testName) throws IOException {
|
204 | 191 | ChromeOptions chromeOptions = new ChromeOptions();
|
| 192 | + chromeOptions.setExperimentalOption("prefs", Map.of(LANGUAGE_SELECTOR, "en")); |
| 193 | + chromeOptions.enableBiDi(); |
205 | 194 | if (HarRecorder.isCaptureHarEnabled()) {
|
206 | 195 | chromeOptions.setProxy(createSeleniumProxy(testName.get()));
|
207 | 196 | }
|
| 197 | + setDriverPropertyIfMissing("chromedriver", ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY); |
| 198 | + chromeOptions.setCapability("se:name", testName.get()); |
| 199 | + chromeOptions.setCapability( |
| 200 | + "se:recordVideo", TestRecorderRule.isRecorderEnabled() && System.getenv("VIDEO_FOLDER") != null); |
208 | 201 | return chromeOptions;
|
209 | 202 | }
|
210 | 203 |
|
@@ -266,10 +259,12 @@ public String toString() {
|
266 | 259 | Thread.sleep(3000); // Give the container and selenium some time to spawn
|
267 | 260 |
|
268 | 261 | try {
|
269 |
| - RemoteWebDriver remoteWebDriver = |
270 |
| - new RemoteWebDriver(new URL("http://127.0.0.1:" + controlPort + "/wd/hub"), capabilities); |
| 262 | + WebDriver driver = RemoteWebDriver.builder() |
| 263 | + .address("http://127.0.0.1:" + controlPort + "/wd/hub") |
| 264 | + .addAlternative(capabilities) |
| 265 | + .build(); |
271 | 266 | cleaner.addTask(cleanContainer);
|
272 |
| - return new Augmenter().augment(remoteWebDriver); |
| 267 | + return driver; |
273 | 268 | } catch (RuntimeException e) {
|
274 | 269 | cleanContainer.close();
|
275 | 270 | throw e;
|
|
0 commit comments