Skip to content

Commit 6f2ad21

Browse files
committed
[java] revamp tests for bindings to be opt-in
1 parent b11ef96 commit 6f2ad21

File tree

8 files changed

+137
-120
lines changed

8 files changed

+137
-120
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 & 41 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,47 +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.enabled = true
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-
junit.jupiter.execution.parallel.enabled = false
136-
</configurationParameters>
137-
</properties>
138-
</configuration>
139-
</execution>
140-
</executions>
141-
</plugin>
142154
<plugin>
143155
<groupId>org.apache.maven.plugins</groupId>
144156
<artifactId>maven-gpg-plugin</artifactId>

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ public void enable() {
4141
System.setProperty("sauce.enabled", "true");
4242
}
4343

44-
public static Builder builder() {
45-
return new Builder();
46-
}
44+
public static Builder builder() {
45+
return new Builder();
46+
}
4747

48-
@Override
48+
@Override
4949
public void beforeEach(ExtensionContext context) {
5050
SauceOptions options = updateOptions(context);
5151
SauceSession session = new SauceSession(options);

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/ToggleLocalExample.java renamed to java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/RunLocalExample.java

Lines changed: 12 additions & 18 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,7 +10,7 @@
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

@@ -20,19 +19,20 @@ public class ToggleLocalExample {
2019
// Register additional test watcher(s) for local execution
2120
@RegisterExtension TestWatcher testWatcher = new LocalTestWatcher();
2221

23-
// Sauce Labs execution is disabled by default,
24-
// To run tests without Sauce, remove this code block and do not execute code with
25-
// `-Dsaucelabs.enabled=true`
26-
static {
27-
sauceExtension.enable();
28-
}
29-
3022
@BeforeEach
3123
public void setUp(SauceSession session, WebDriver driver) {
3224
this.session = session;
3325
this.driver = SauceSession.isEnabled() ? driver : new ChromeDriver();
3426
}
3527

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();
34+
}
35+
3636
@Test
3737
public void toggleExample() {
3838
// This code executes whether running locally or on Sauce
@@ -45,15 +45,9 @@ public class LocalTestWatcher implements TestWatcher {
4545
@Override
4646
public void testSuccessful(ExtensionContext context) {
4747
System.out.println("Test Succeeded");
48-
if (!SauceSession.isEnabled()) {
49-
driver.quit();
50-
}
51-
}
52-
53-
@Override
54-
public void testFailed(ExtensionContext context, Throwable cause) {
55-
System.out.println("Test Failed: " + cause.getMessage());
56-
if (!SauceSession.isEnabled()) {
48+
if (SauceSession.isEnabled()) {
49+
throw new RuntimeException("Test should not run when Extension is enabled");
50+
} else {
5751
driver.quit();
5852
}
5953
}

java/junit5/src/test/java/com/saucelabs/saucebindings/junit5/examples/without/ToggleLocalExample.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.time.Duration;
88
import java.util.HashMap;
99
import java.util.Map;
10-
import org.junit.jupiter.api.AfterAll;
1110
import org.junit.jupiter.api.BeforeAll;
1211
import org.junit.jupiter.api.BeforeEach;
1312
import org.junit.jupiter.api.Test;

java/main/pom.xml

Lines changed: 53 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,58 @@
111111
</dependency>
112112
</dependencies>
113113

114+
<profiles>
115+
<profile>
116+
<id>sauce-enabled</id>
117+
<activation>
118+
<activeByDefault>true</activeByDefault>
119+
</activation>
120+
<build>
121+
<plugins>
122+
<plugin>
123+
<groupId>org.apache.maven.plugins</groupId>
124+
<artifactId>maven-surefire-plugin</artifactId>
125+
<version>3.5.1</version>
126+
<configuration>
127+
<excludes>
128+
<exclude>**/DisabledSauceTest.java</exclude>
129+
</excludes>
130+
<systemPropertyVariables>
131+
<sauce.enabled>true</sauce.enabled>
132+
</systemPropertyVariables>
133+
<properties>
134+
<configurationParameters>
135+
junit.jupiter.execution.parallel.enabled = true
136+
junit.jupiter.execution.parallel.mode.default = concurrent
137+
junit.jupiter.execution.parallel.config.strategy = fixed
138+
junit.jupiter.execution.parallel.config.fixed.parallelism = ${surefire.parallel}
139+
junit.jupiter.execution.parallel.config.fixed.max-pool-size = ${surefire.parallel}
140+
</configurationParameters>
141+
</properties>
142+
</configuration>
143+
</plugin>
144+
</plugins>
145+
</build>
146+
</profile>
147+
<profile>
148+
<id>sauce-disabled</id>
149+
<build>
150+
<plugins>
151+
<plugin>
152+
<groupId>org.apache.maven.plugins</groupId>
153+
<artifactId>maven-surefire-plugin</artifactId>
154+
<version>3.5.1</version>
155+
<configuration>
156+
<includes>
157+
<include>**/DisabledSauceTest.java</include>
158+
</includes>
159+
</configuration>
160+
</plugin>
161+
</plugins>
162+
</build>
163+
</profile>
164+
</profiles>
165+
114166
<build>
115167
<resources>
116168
<resource>
@@ -133,47 +185,6 @@
133185
</execution>
134186
</executions>
135187
</plugin>
136-
<plugin>
137-
<groupId>org.apache.maven.plugins</groupId>
138-
<artifactId>maven-surefire-plugin</artifactId>
139-
<version>3.1.2</version>
140-
<executions>
141-
<execution>
142-
<id>sauce-enabled</id>
143-
<goals>
144-
<goal>test</goal>
145-
</goals>
146-
<configuration>
147-
<properties>
148-
<configurationParameters>
149-
sauce.enabled = true
150-
junit.jupiter.execution.parallel.enabled = true
151-
junit.jupiter.execution.parallel.mode.default = concurrent
152-
junit.jupiter.execution.parallel.config.strategy = fixed
153-
junit.jupiter.execution.parallel.config.fixed.parallelism = ${surefire.parallel}
154-
junit.jupiter.execution.parallel.config.fixed.max-pool-size = ${surefire.parallel}
155-
</configurationParameters>
156-
</properties>
157-
</configuration>
158-
</execution>
159-
<execution>
160-
<id>sauce-disabled</id>
161-
<goals>
162-
<goal>test</goal>
163-
</goals>
164-
<configuration>
165-
<includes>
166-
<include>**/DisableSauceTest.java</include>
167-
</includes>
168-
<properties>
169-
<configurationParameters>
170-
junit.jupiter.execution.parallel.enabled = false
171-
</configurationParameters>
172-
</properties>
173-
</configuration>
174-
</execution>
175-
</executions>
176-
</plugin>
177188
<plugin>
178189
<groupId>org.apache.maven.plugins</groupId>
179190
<artifactId>maven-gpg-plugin</artifactId>
@@ -220,7 +231,7 @@
220231
<dependency>
221232
<groupId>org.apache.maven.scm</groupId>
222233
<artifactId>maven-scm-provider-gitexe</artifactId>
223-
<version>2.1.0</version>
234+
<version>2.0.1</version>
224235
</dependency>
225236
</dependencies>
226237
</plugin>

java/main/src/test/java/com/saucelabs/saucebindings/integration/DisableSauceTest.java renamed to java/main/src/test/java/com/saucelabs/saucebindings/DisabledSauceTest.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
1-
package com.saucelabs.saucebindings.integration;
1+
package com.saucelabs.saucebindings;
22

3-
import com.saucelabs.saucebindings.SauceSession;
43
import java.util.List;
54
import org.junit.jupiter.api.Assertions;
65
import org.junit.jupiter.api.Test;
7-
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
8-
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
96
import org.openqa.selenium.WebDriver;
107

11-
public class DisableSauceTest {
8+
public class DisabledSauceTest {
129

1310
@Test
14-
@EnabledIfSystemProperty(named = "sauce.enabled", matches = "(!?true)")
15-
@DisabledIfSystemProperty(named = "sauce.enabled", matches = "true") // Needed for IntelliJ
16-
public void disableSauce() {
11+
public void disabledByDefault() {
1712
SauceSession session = new SauceSession();
1813
WebDriver driver = session.start();
1914

0 commit comments

Comments
 (0)