Skip to content

Commit 263d346

Browse files
committed
[java] Do not start multiple browsers in tests when not necessary using @NoDriverBeforeTest
This should also decrease the number of times browsers are opened and closed without doing anything.
1 parent da43407 commit 263d346

11 files changed

+246
-244
lines changed

java/test/org/openqa/selenium/chrome/ChromeDriverFunctionalTest.java

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.openqa.selenium.chrome;
1919

2020
import org.junit.Test;
21+
import org.openqa.selenium.Capabilities;
2122
import org.openqa.selenium.JavascriptExecutor;
2223
import org.openqa.selenium.WebDriver;
2324
import org.openqa.selenium.WebDriverException;
@@ -30,6 +31,7 @@
3031
import org.openqa.selenium.remote.http.ClientConfig;
3132
import org.openqa.selenium.testing.Ignore;
3233
import org.openqa.selenium.testing.JUnit4TestBase;
34+
import org.openqa.selenium.testing.NoDriverBeforeTest;
3335
import org.openqa.selenium.testing.drivers.WebDriverBuilder;
3436

3537
import java.time.Duration;
@@ -47,23 +49,26 @@ public class ChromeDriverFunctionalTest extends JUnit4TestBase {
4749
private final String CLIPBOARD_WRITE = "clipboard-write";
4850

4951
@Test
52+
@NoDriverBeforeTest
5053
public void builderGeneratesDefaultChromeOptions() {
51-
WebDriver driver = ChromeDriver.builder().build();
52-
driver.quit();
54+
localDriver = ChromeDriver.builder().build();
55+
Capabilities capabilities = ((ChromeDriver) localDriver).getCapabilities();
56+
57+
assertThat(localDriver.manage().timeouts().getImplicitWaitTimeout()).isEqualTo(Duration.ZERO);
58+
assertThat(capabilities.getCapability("browserName")).isEqualTo("chrome");
5359
}
5460

5561
@Test
62+
@NoDriverBeforeTest
5663
public void builderOverridesDefaultChromeOptions() {
5764
ChromeOptions options = new ChromeOptions();
5865
options.setImplicitWaitTimeout(Duration.ofMillis(1));
59-
WebDriver driver = ChromeDriver.builder().oneOf(options).build();
60-
assertThat(driver.manage().timeouts().getImplicitWaitTimeout()).isEqualTo(Duration.ofMillis(1));
61-
62-
driver.quit();
66+
localDriver = ChromeDriver.builder().oneOf(options).build();
67+
assertThat(localDriver.manage().timeouts().getImplicitWaitTimeout()).isEqualTo(Duration.ofMillis(1));
6368
}
6469

6570
@Test
66-
public void builderWithClientConfigthrowsException() {
71+
public void builderWithClientConfigThrowsException() {
6772
ClientConfig clientConfig = ClientConfig.defaultConfig().readTimeout(Duration.ofMinutes(1));
6873
RemoteWebDriverBuilder builder = ChromeDriver.builder().config(clientConfig);
6974

@@ -88,27 +93,23 @@ public void canSetPermission() {
8893
}
8994

9095
@Test
96+
@NoDriverBeforeTest
9197
public void canSetPermissionHeadless() {
9298
ChromeOptions options = new ChromeOptions();
9399
options.setHeadless(true);
94100

95-
//TestChromeDriver is not honoring headless request; using ChromeDriver instead
96-
WebDriver driver = new WebDriverBuilder().get(options);
97-
try {
98-
HasPermissions permissions = (HasPermissions) driver;
101+
localDriver = new WebDriverBuilder().get(options);
102+
HasPermissions permissions = (HasPermissions) localDriver;
99103

100-
driver.get(pages.clicksPage);
101-
assertThat(checkPermission(driver, CLIPBOARD_READ)).isEqualTo("prompt");
102-
assertThat(checkPermission(driver, CLIPBOARD_WRITE)).isEqualTo("prompt");
104+
localDriver.get(pages.clicksPage);
105+
assertThat(checkPermission(localDriver, CLIPBOARD_READ)).isEqualTo("prompt");
106+
assertThat(checkPermission(localDriver, CLIPBOARD_WRITE)).isEqualTo("prompt");
103107

104-
permissions.setPermission(CLIPBOARD_READ, "granted");
105-
permissions.setPermission(CLIPBOARD_WRITE, "granted");
108+
permissions.setPermission(CLIPBOARD_READ, "granted");
109+
permissions.setPermission(CLIPBOARD_WRITE, "granted");
106110

107-
assertThat(checkPermission(driver, CLIPBOARD_READ)).isEqualTo("granted");
108-
assertThat(checkPermission(driver, CLIPBOARD_WRITE)).isEqualTo("granted");
109-
} finally {
110-
driver.quit();
111-
}
111+
assertThat(checkPermission(localDriver, CLIPBOARD_READ)).isEqualTo("granted");
112+
assertThat(checkPermission(localDriver, CLIPBOARD_WRITE)).isEqualTo("granted");
112113
}
113114

114115
public String checkPermission(WebDriver driver, String permission){

java/test/org/openqa/selenium/chrome/ChromeOptionsFunctionalTest.java

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@
2323
import org.junit.After;
2424
import org.junit.Test;
2525
import org.openqa.selenium.By;
26+
import org.openqa.selenium.JavascriptExecutor;
2627
import org.openqa.selenium.WebElement;
2728
import org.openqa.selenium.build.InProject;
29+
import org.openqa.selenium.remote.RemoteWebDriver;
2830
import org.openqa.selenium.testing.JUnit4TestBase;
31+
import org.openqa.selenium.testing.NoDriverBeforeTest;
2932
import org.openqa.selenium.testing.TestUtilities;
3033

3134
import java.io.IOException;
@@ -36,26 +39,18 @@ public class ChromeOptionsFunctionalTest extends JUnit4TestBase {
3639

3740
private static final String EXT_PATH = "common/extensions/webextensions-selenium-example.crx";
3841

39-
private ChromeDriver driver = null;
40-
41-
@After
42-
public void tearDown() {
43-
if (driver != null) {
44-
driver.quit();
45-
}
46-
}
47-
4842
@Test
43+
@NoDriverBeforeTest
4944
public void canStartChromeWithCustomOptions() {
5045
ChromeOptions options = new ChromeOptions();
5146
if (TestUtilities.isOnTravis()) {
5247
options.setHeadless(true);
5348
}
5449
options.addArguments("user-agent=foo;bar");
55-
driver = new ChromeDriver(options);
50+
localDriver = new ChromeDriver(options);
5651

57-
driver.get(pages.clickJacker);
58-
Object userAgent = driver.executeScript("return window.navigator.userAgent");
52+
localDriver.get(pages.clickJacker);
53+
Object userAgent = ((ChromeDriver) localDriver).executeScript("return window.navigator.userAgent");
5954
assertThat(userAgent).isEqualTo("foo;bar");
6055
}
6156

@@ -69,50 +64,52 @@ public void optionsStayEqualAfterSerialization() {
6964
}
7065

7166
@Test
67+
@NoDriverBeforeTest
7268
public void canSetAcceptInsecureCerts() {
7369
ChromeOptions options = new ChromeOptions();
7470
if (TestUtilities.isOnTravis()) {
7571
options.setHeadless(true);
7672
}
7773
options.setAcceptInsecureCerts(true);
78-
driver = new ChromeDriver(options);
74+
localDriver = new ChromeDriver(options);
7975

80-
assertThat(driver.getCapabilities().getCapability(ACCEPT_INSECURE_CERTS)).isEqualTo(true);
76+
assertThat(((ChromeDriver) localDriver).getCapabilities().getCapability(ACCEPT_INSECURE_CERTS)).isEqualTo(true);
8177
}
8278

8379
@Test
80+
@NoDriverBeforeTest
8481
public void canAddExtensionFromFile() {
8582
ChromeOptions options = new ChromeOptions();
8683
if (TestUtilities.isOnTravis()) {
8784
options.setHeadless(true);
8885
}
8986
options.addExtensions(InProject.locate(EXT_PATH).toFile());
90-
driver = new ChromeDriver(options);
87+
localDriver = new ChromeDriver(options);
9188

92-
driver.get(pages.echoPage);
89+
localDriver.get(pages.echoPage);
9390

94-
WebElement footerElement = driver.findElement(By.id("webextensions-selenium-example"));
91+
WebElement footerElement = localDriver.findElement(By.id("webextensions-selenium-example"));
9592

9693
String footText = footerElement.getText();
9794
assertThat(footText).isEqualTo("Content injected by webextensions-selenium-example");
9895
}
9996

10097
@Test
98+
@NoDriverBeforeTest
10199
public void canAddExtensionFromStringEncodedInBase64() throws IOException {
102100
ChromeOptions options = new ChromeOptions();
103101
if (TestUtilities.isOnTravis()) {
104102
options.setHeadless(true);
105103
}
106104
options.addEncodedExtensions(Base64.getEncoder().encodeToString(
107105
Files.readAllBytes(InProject.locate(EXT_PATH))));
108-
driver = new ChromeDriver(options);
106+
localDriver = new ChromeDriver(options);
109107

110-
driver.get(pages.echoPage);
108+
localDriver.get(pages.echoPage);
111109

112-
WebElement footerElement = driver.findElement(By.id("webextensions-selenium-example"));
110+
WebElement footerElement = localDriver.findElement(By.id("webextensions-selenium-example"));
113111

114112
String footText = footerElement.getText();
115113
assertThat(footText).isEqualTo("Content injected by webextensions-selenium-example");
116114
}
117-
118115
}

java/test/org/openqa/selenium/edge/EdgeDriverFunctionalTest.java

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.openqa.selenium.edge;
1919

2020
import org.junit.Test;
21+
import org.openqa.selenium.Capabilities;
2122
import org.openqa.selenium.JavascriptExecutor;
2223
import org.openqa.selenium.WebDriver;
2324
import org.openqa.selenium.WebDriverException;
@@ -29,6 +30,7 @@
2930
import org.openqa.selenium.remote.RemoteWebDriverBuilder;
3031
import org.openqa.selenium.remote.http.ClientConfig;
3132
import org.openqa.selenium.testing.JUnit4TestBase;
33+
import org.openqa.selenium.testing.NoDriverBeforeTest;
3234
import org.openqa.selenium.testing.drivers.WebDriverBuilder;
3335

3436
import java.time.Duration;
@@ -46,23 +48,26 @@ public class EdgeDriverFunctionalTest extends JUnit4TestBase {
4648
private final String CLIPBOARD_WRITE = "clipboard-write";
4749

4850
@Test
49-
public void builderGeneratesDefaultChromeOptions() {
50-
WebDriver driver = EdgeDriver.builder().build();
51-
driver.quit();
51+
@NoDriverBeforeTest
52+
public void builderGeneratesDefaultEdgeOptions() {
53+
localDriver = EdgeDriver.builder().build();
54+
Capabilities capabilities = ((EdgeDriver) localDriver).getCapabilities();
55+
56+
assertThat(localDriver.manage().timeouts().getImplicitWaitTimeout()).isEqualTo(Duration.ZERO);
57+
assertThat(capabilities.getCapability("browserName")).isEqualTo("msedge");
5258
}
5359

5460
@Test
55-
public void builderOverridesDefaultChromeOptions() {
61+
@NoDriverBeforeTest
62+
public void builderOverridesDefaultEdgeOptions() {
5663
EdgeOptions options = new EdgeOptions();
5764
options.setImplicitWaitTimeout(Duration.ofMillis(1));
58-
WebDriver driver = EdgeDriver.builder().oneOf(options).build();
59-
assertThat(driver.manage().timeouts().getImplicitWaitTimeout()).isEqualTo(Duration.ofMillis(1));
60-
61-
driver.quit();
65+
localDriver = EdgeDriver.builder().oneOf(options).build();
66+
assertThat(localDriver.manage().timeouts().getImplicitWaitTimeout()).isEqualTo(Duration.ofMillis(1));
6267
}
6368

6469
@Test
65-
public void builderWithClientConfigthrowsException() {
70+
public void builderWithClientConfigThrowsException() {
6671
ClientConfig clientConfig = ClientConfig.defaultConfig().readTimeout(Duration.ofMinutes(1));
6772
RemoteWebDriverBuilder builder = EdgeDriver.builder().config(clientConfig);
6873

@@ -87,27 +92,23 @@ public void canSetPermission() {
8792
}
8893

8994
@Test
95+
@NoDriverBeforeTest
9096
public void canSetPermissionHeadless() {
9197
EdgeOptions options = new EdgeOptions();
9298
options.setHeadless(true);
9399

94-
//TestEdgeDriver is not honoring headless request; using EdgeDriver instead
95-
WebDriver driver = new WebDriverBuilder().get(options);
96-
try {
97-
HasPermissions permissions = (HasPermissions) driver;
100+
localDriver = new WebDriverBuilder().get(options);
101+
HasPermissions permissions = (HasPermissions) localDriver;
98102

99-
driver.get(pages.clicksPage);
100-
assertThat(checkPermission(driver, CLIPBOARD_READ)).isEqualTo("prompt");
101-
assertThat(checkPermission(driver, CLIPBOARD_WRITE)).isEqualTo("prompt");
103+
localDriver.get(pages.clicksPage);
104+
assertThat(checkPermission(localDriver, CLIPBOARD_READ)).isEqualTo("prompt");
105+
assertThat(checkPermission(localDriver, CLIPBOARD_WRITE)).isEqualTo("prompt");
102106

103-
permissions.setPermission(CLIPBOARD_READ, "granted");
104-
permissions.setPermission(CLIPBOARD_WRITE, "granted");
107+
permissions.setPermission(CLIPBOARD_READ, "granted");
108+
permissions.setPermission(CLIPBOARD_WRITE, "granted");
105109

106-
assertThat(checkPermission(driver, CLIPBOARD_READ)).isEqualTo("granted");
107-
assertThat(checkPermission(driver, CLIPBOARD_WRITE)).isEqualTo("granted");
108-
} finally {
109-
driver.quit();
110-
}
110+
assertThat(checkPermission(localDriver, CLIPBOARD_READ)).isEqualTo("granted");
111+
assertThat(checkPermission(localDriver, CLIPBOARD_WRITE)).isEqualTo("granted");
111112
}
112113

113114
public String checkPermission(WebDriver driver, String permission){

java/test/org/openqa/selenium/edge/EdgeOptionsFunctionalTest.java

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -19,48 +19,35 @@
1919

2020
import static org.assertj.core.api.Assertions.assertThat;
2121
import static org.openqa.selenium.remote.CapabilityType.ACCEPT_INSECURE_CERTS;
22-
import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs;
2322

24-
import org.junit.After;
2523
import org.junit.Test;
2624
import org.openqa.selenium.By;
2725
import org.openqa.selenium.HasCapabilities;
2826
import org.openqa.selenium.JavascriptExecutor;
29-
import org.openqa.selenium.Keys;
30-
import org.openqa.selenium.WebDriver;
3127
import org.openqa.selenium.WebElement;
3228
import org.openqa.selenium.build.InProject;
33-
import org.openqa.selenium.support.ui.WebDriverWait;
3429
import org.openqa.selenium.testing.JUnit4TestBase;
30+
import org.openqa.selenium.testing.NoDriverBeforeTest;
3531
import org.openqa.selenium.testing.NotYetImplemented;
3632
import org.openqa.selenium.testing.drivers.WebDriverBuilder;
3733

3834
import java.io.IOException;
3935
import java.nio.file.Files;
40-
import java.time.Duration;
4136
import java.util.Base64;
4237

4338
public class EdgeOptionsFunctionalTest extends JUnit4TestBase {
4439

4540
private static final String EXT_PATH = "common/extensions/webextensions-selenium-example.crx";
4641

47-
private WebDriver edgeDriver = null;
48-
49-
@After
50-
public void tearDown() {
51-
if (edgeDriver != null) {
52-
edgeDriver.quit();
53-
}
54-
}
55-
5642
@Test
57-
public void canStartChromeWithCustomOptions() {
43+
@NoDriverBeforeTest
44+
public void canStartEdgeWithCustomOptions() {
5845
EdgeOptions options = new EdgeOptions();
5946
options.addArguments("user-agent=foo;bar");
60-
edgeDriver = new WebDriverBuilder().get(options);
47+
localDriver = new WebDriverBuilder().get(options);
6148

62-
edgeDriver.get(pages.clickJacker);
63-
Object userAgent = ((JavascriptExecutor) edgeDriver).executeScript("return window.navigator.userAgent");
49+
localDriver.get(pages.clickJacker);
50+
Object userAgent = ((JavascriptExecutor) localDriver).executeScript("return window.navigator.userAgent");
6451
assertThat(userAgent).isEqualTo("foo;bar");
6552
}
6653

@@ -74,45 +61,46 @@ public void optionsStayEqualAfterSerialization() {
7461
}
7562

7663
@Test
64+
@NoDriverBeforeTest
7765
public void canSetAcceptInsecureCerts() {
7866
EdgeOptions options = new EdgeOptions();
7967
options.setAcceptInsecureCerts(true);
80-
edgeDriver = new WebDriverBuilder().get(options);
81-
System.out.println(((HasCapabilities) edgeDriver).getCapabilities());
68+
localDriver = new WebDriverBuilder().get(options);
69+
System.out.println(((HasCapabilities) localDriver).getCapabilities());
8270

83-
assertThat(((HasCapabilities) edgeDriver).getCapabilities().getCapability(ACCEPT_INSECURE_CERTS)).isEqualTo(true);
71+
assertThat(((HasCapabilities) localDriver).getCapabilities().getCapability(ACCEPT_INSECURE_CERTS)).isEqualTo(true);
8472
}
8573

8674
@Test
8775
@NotYetImplemented
76+
@NoDriverBeforeTest
8877
public void canAddExtensionFromFile() {
8978
EdgeOptions options = new EdgeOptions();
9079
options.addExtensions(InProject.locate(EXT_PATH).toFile());
91-
edgeDriver = new WebDriverBuilder().get(options);
80+
localDriver = new WebDriverBuilder().get(options);
9281

93-
edgeDriver.get(pages.echoPage);
82+
localDriver.get(pages.echoPage);
9483

95-
WebElement footerElement = driver.findElement(By.id("webextensions-selenium-example"));
84+
WebElement footerElement = localDriver.findElement(By.id("webextensions-selenium-example"));
9685

9786
String footText = footerElement.getText();
9887
assertThat(footText).isEqualTo("Content injected by webextensions-selenium-example");
99-
10088
}
10189

10290
@Test
10391
@NotYetImplemented
92+
@NoDriverBeforeTest
10493
public void canAddExtensionFromStringEncodedInBase64() throws IOException {
10594
EdgeOptions options = new EdgeOptions();
10695
options.addEncodedExtensions(Base64.getEncoder().encodeToString(
10796
Files.readAllBytes(InProject.locate(EXT_PATH))));
108-
edgeDriver = new WebDriverBuilder().get(options);
97+
localDriver = new WebDriverBuilder().get(options);
10998

110-
edgeDriver.get(pages.echoPage);
99+
localDriver.get(pages.echoPage);
111100

112-
WebElement footerElement = driver.findElement(By.id("webextensions-selenium-example"));
101+
WebElement footerElement = localDriver.findElement(By.id("webextensions-selenium-example"));
113102

114103
String footText = footerElement.getText();
115104
assertThat(footText).isEqualTo("Content injected by webextensions-selenium-example");
116105
}
117-
118106
}

0 commit comments

Comments
 (0)