Skip to content

Commit 13d0408

Browse files
authored
[java] set isDisabled to true by default (make Bindings opt-in) (#342)
1 parent 481e8ae commit 13d0408

File tree

14 files changed

+212
-144
lines changed

14 files changed

+212
-144
lines changed

.github/workflows/java.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ jobs:
6161
run: git --no-pager diff --exit-code
6262
main:
6363
runs-on: ubuntu-latest
64+
strategy:
65+
matrix:
66+
profile: [enabled, disabled]
6467
steps:
6568
- uses: actions/checkout@v4
6669
- name: Set up JDK 11
@@ -71,11 +74,11 @@ jobs:
7174
- name: Remove driver directories
7275
run: |
7376
sudo rm -rf $CHROMEWEBDRIVER $EDGEWEBDRIVER $GECKOWEBDRIVER
74-
- name: Test with Maven
77+
- name: Sauce (${{ matrix.profile }})
7578
env:
7679
SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
7780
SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
78-
run: cd java/main && mvn clean test -Dmaven.javadoc.skip=true
81+
run: cd java/main && mvn clean test -Psauce-${{ matrix.profile }} -Dmaven.javadoc.skip=true
7982
junit4:
8083
runs-on: ubuntu-latest
8184
steps:
@@ -95,6 +98,9 @@ jobs:
9598
run: cd java/junit4 && mvn clean test -Dmaven.javadoc.skip=true
9699
junit5:
97100
runs-on: ubuntu-latest
101+
strategy:
102+
matrix:
103+
profile: [enabled, disabled]
98104
steps:
99105
- uses: actions/checkout@v4
100106
- name: Set up JDK 11
@@ -113,11 +119,11 @@ jobs:
113119
echo "DISPLAY=:99" >> "$GITHUB_ENV"
114120
- name: Install main bindings snapshot
115121
run: cd java/main && mvn clean package install -DskipTests -Dgpg.skip=true
116-
- name: Test with Maven
122+
- name: Sauce (${{ matrix.profile }})
117123
env:
118124
SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
119125
SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
120-
run: cd java/junit5 && mvn clean test -Dmaven.javadoc.skip=true
126+
run: cd java/junit5 && mvn clean test -Psauce-${{ matrix.profile }} -Dmaven.javadoc.skip=true
121127
testng:
122128
runs-on: ubuntu-latest
123129
steps:

java/junit5/pom.xml

Lines changed: 53 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,59 @@
7777
</dependency>
7878
</dependencies>
7979

80+
<profiles>
81+
<profile>
82+
<id>sauce-enabled</id>
83+
<build>
84+
<plugins>
85+
<plugin>
86+
<groupId>org.apache.maven.plugins</groupId>
87+
<artifactId>maven-surefire-plugin</artifactId>
88+
<version>3.5.1</version>
89+
<configuration>
90+
<includes>
91+
<include>**/*Test.java</include>
92+
</includes>
93+
<systemPropertyVariables>
94+
<sauce.enabled>true</sauce.enabled>
95+
</systemPropertyVariables>
96+
<properties>
97+
<configurationParameters>
98+
junit.jupiter.execution.parallel.enabled = true
99+
junit.jupiter.execution.parallel.mode.default = concurrent
100+
junit.jupiter.execution.parallel.config.strategy = fixed
101+
junit.jupiter.execution.parallel.config.fixed.parallelism = ${surefire.parallel}
102+
junit.jupiter.execution.parallel.config.fixed.max-pool-size = ${surefire.parallel}
103+
</configurationParameters>
104+
</properties>
105+
</configuration>
106+
</plugin>
107+
</plugins>
108+
</build>
109+
</profile>
110+
<profile>
111+
<id>sauce-disabled</id>
112+
<activation>
113+
<activeByDefault>true</activeByDefault>
114+
</activation>
115+
<build>
116+
<plugins>
117+
<plugin>
118+
<groupId>org.apache.maven.plugins</groupId>
119+
<artifactId>maven-surefire-plugin</artifactId>
120+
<version>3.5.1</version>
121+
<configuration>
122+
<includes>
123+
<include>**/*Example.java</include>
124+
<include>**/ToggleTest.java</include>
125+
</includes>
126+
</configuration>
127+
</plugin>
128+
</plugins>
129+
</build>
130+
</profile>
131+
</profiles>
132+
80133
<build>
81134
<resources>
82135
<resource>
@@ -98,48 +151,6 @@
98151
</execution>
99152
</executions>
100153
</plugin>
101-
<plugin>
102-
<groupId>org.apache.maven.plugins</groupId>
103-
<artifactId>maven-surefire-plugin</artifactId>
104-
<version>3.1.2</version>
105-
<executions>
106-
<execution>
107-
<id>sauce-enabled</id>
108-
<goals>
109-
<goal>test</goal>
110-
</goals>
111-
<configuration>
112-
<properties>
113-
<configurationParameters>
114-
sauce.disabled = false
115-
junit.jupiter.execution.parallel.enabled = true
116-
junit.jupiter.execution.parallel.mode.default = concurrent
117-
junit.jupiter.execution.parallel.config.strategy = fixed
118-
junit.jupiter.execution.parallel.config.fixed.parallelism = ${surefire.parallel}
119-
junit.jupiter.execution.parallel.config.fixed.max-pool-size = ${surefire.parallel}
120-
</configurationParameters>
121-
</properties>
122-
</configuration>
123-
</execution>
124-
<execution>
125-
<id>sauce-disabled</id>
126-
<goals>
127-
<goal>test</goal>
128-
</goals>
129-
<configuration>
130-
<includes>
131-
<include>**/ToggleTest.java</include>
132-
</includes>
133-
<properties>
134-
<configurationParameters>
135-
sauce.disabled = true
136-
junit.jupiter.execution.parallel.enabled = false
137-
</configurationParameters>
138-
</properties>
139-
</configuration>
140-
</execution>
141-
</executions>
142-
</plugin>
143154
<plugin>
144155
<groupId>org.apache.maven.plugins</groupId>
145156
<artifactId>maven-gpg-plugin</artifactId>

java/junit5/src/main/java/com/saucelabs/saucebindings/junit5/SauceBindingsExtension.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ private SauceBindingsExtension(SauceOptions sauceOptions, DataCenter dataCenter)
3737
this.buildName = CITools.getBuildName() + ": " + CITools.getBuildNumber();
3838
}
3939

40+
public void enable() {
41+
System.setProperty("sauce.enabled", "true");
42+
}
43+
4044
public static Builder builder() {
4145
return new Builder();
4246
}
@@ -100,7 +104,7 @@ private ExtensionContext.Store getStore(ExtensionContext context) {
100104

101105
@Override
102106
public void testSuccessful(ExtensionContext context) {
103-
if (!SauceSession.isDisabled()) {
107+
if (SauceSession.isEnabled()) {
104108
SauceSession session = (SauceSession) getStore(context).get("session");
105109
try {
106110
session.stop(true);
@@ -114,7 +118,7 @@ public void testSuccessful(ExtensionContext context) {
114118

115119
@Override
116120
public void testFailed(ExtensionContext context, Throwable cause) {
117-
if (!SauceSession.isDisabled()) {
121+
if (SauceSession.isEnabled()) {
118122
SauceSession session = (SauceSession) getStore(context).get("session");
119123
try {
120124
session.stop(cause);

java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/ToggleTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ public class ToggleTest {
1313
@RegisterExtension static SauceBindingsExtension sauceExtension = new SauceBindingsExtension();
1414

1515
@Test
16-
@EnabledIfSystemProperty(named = "sauce.disabled", matches = "true")
17-
@DisabledIfSystemProperty(named = "sauce.disabled", matches = "(?!true)") // Needed for IntelliJ
16+
@DisabledIfSystemProperty(named = "sauce.enabled", matches = "true")
17+
@EnabledIfSystemProperty(named = "sauce.enabled", matches = "(?!true)") // Needed for IntelliJ
1818
public void disableSauce(SauceSession session, WebDriver driver) {
1919
Assertions.assertNull(driver);
2020

java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/AccessibilityExample.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,14 @@ public class AccessibilityExample {
1212
WebDriver driver;
1313
SauceSession session;
1414

15+
// Register extension
1516
@RegisterExtension static SauceBindingsExtension sauceExtension = new SauceBindingsExtension();
1617

18+
// Enable extension (this also can be done by running with -Dsaucelabs.enable=true)
19+
static {
20+
sauceExtension.enable();
21+
}
22+
1723
@BeforeEach
1824
public void setUp(SauceSession session) {
1925
this.session = session;

java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/CapabilitiesExample.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,16 @@ public class CapabilitiesExample {
1515
WebDriver driver;
1616
SauceSession session;
1717

18+
// Register extension with Selenium capabilities instance
1819
@RegisterExtension
19-
SauceBindingsExtension sauceExtension =
20+
static SauceBindingsExtension sauceExtension =
2021
SauceBindingsExtension.builder().withCapabilities(getCapabilities()).build();
2122

23+
// Enable extension (this also can be done by running with -Dsaucelabs.enable=true)
24+
static {
25+
sauceExtension.enable();
26+
}
27+
2228
@BeforeEach
2329
public void setUp(SauceSession session, WebDriver driver) {
2430
this.session = session;

java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/DataCenterExample.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,16 @@ public class DataCenterExample {
1212
WebDriver driver;
1313
SauceSession session;
1414

15+
// Register extension with custom data center
1516
@RegisterExtension
1617
static SauceBindingsExtension sauceExtension =
1718
SauceBindingsExtension.builder().withDataCenter(DataCenter.EU_CENTRAL).build();
1819

20+
// Enable extension (this also can be done by running with -Dsaucelabs.enable=true)
21+
static {
22+
sauceExtension.enable();
23+
}
24+
1925
@BeforeEach
2026
public void setUp(SauceSession session, WebDriver driver) {
2127
this.session = session;

java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/OptionsExample.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,16 @@ public class OptionsExample {
1515
WebDriver driver;
1616
SauceSession session;
1717

18+
// Register extension with SauceOptions
1819
@RegisterExtension
1920
static SauceBindingsExtension sauceExtension =
2021
SauceBindingsExtension.builder().withSauceOptions(getSauceOptions()).build();
2122

23+
// Enable extension (this also can be done by running with -Dsaucelabs.enable=true)
24+
static {
25+
sauceExtension.enable();
26+
}
27+
2228
@BeforeEach
2329
public void setUp(SauceSession session, WebDriver driver) {
2430
this.session = session;

java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/QuickStartExample.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,14 @@ public class QuickStartExample {
1111
WebDriver driver;
1212
SauceSession session;
1313

14+
// Register extension with defaults
1415
@RegisterExtension static SauceBindingsExtension sauceExtension = new SauceBindingsExtension();
1516

17+
// Enable extension (this also can be done by running with -Dsaucelabs.enable=true)
18+
static {
19+
sauceExtension.enable();
20+
}
21+
1622
@BeforeEach
1723
public void setUp(SauceSession session, WebDriver driver) {
1824
this.session = session;

java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/ToggleLocalExample.java renamed to java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/RunLocalExample.java

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.saucelabs.saucebindings.SauceSession;
44
import com.saucelabs.saucebindings.junit5.SauceBindingsExtension;
5-
import org.junit.jupiter.api.BeforeAll;
65
import org.junit.jupiter.api.BeforeEach;
76
import org.junit.jupiter.api.Test;
87
import org.junit.jupiter.api.extension.ExtensionContext;
@@ -11,24 +10,27 @@
1110
import org.openqa.selenium.WebDriver;
1211
import org.openqa.selenium.chrome.ChromeDriver;
1312

14-
public class ToggleLocalExample {
13+
public class RunLocalExample {
1514
WebDriver driver;
1615
SauceSession session;
1716

18-
// Register multiple test watchers for local and sauce execution
17+
// Register Sauce Bindings extension with defaults
1918
@RegisterExtension static SauceBindingsExtension sauceExtension = new SauceBindingsExtension();
19+
// Register additional test watcher(s) for local execution
2020
@RegisterExtension TestWatcher testWatcher = new LocalTestWatcher();
2121

22-
// Change this property to "true" to run locally
23-
@BeforeAll
24-
public static void toggleSauce() {
25-
System.setProperty("sauce.disabled", "false");
26-
}
27-
2822
@BeforeEach
2923
public void setUp(SauceSession session, WebDriver driver) {
3024
this.session = session;
31-
this.driver = SauceSession.isDisabled() ? new ChromeDriver() : driver;
25+
this.driver = SauceSession.isEnabled() ? driver : new ChromeDriver();
26+
}
27+
28+
// Sauce Labs execution is disabled by default,
29+
// To run tests without Sauce, do not enable the extension (`sauceExtension.enable()`)
30+
// and do not execute with `-Dsaucelabs.enabled=true`
31+
static {
32+
System.out.println("Sauce Bindings Extension not Enabled");
33+
// sauceExtension.enable();
3234
}
3335

3436
@Test
@@ -43,15 +45,9 @@ public class LocalTestWatcher implements TestWatcher {
4345
@Override
4446
public void testSuccessful(ExtensionContext context) {
4547
System.out.println("Test Succeeded");
46-
if (SauceSession.isDisabled()) {
47-
driver.quit();
48-
}
49-
}
50-
51-
@Override
52-
public void testFailed(ExtensionContext context, Throwable cause) {
53-
System.out.println("Test Failed: " + cause.getMessage());
54-
if (SauceSession.isDisabled()) {
48+
if (SauceSession.isEnabled()) {
49+
throw new RuntimeException("Test should not run when Extension is enabled");
50+
} else {
5551
driver.quit();
5652
}
5753
}

0 commit comments

Comments
 (0)