|
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