Skip to content

Commit 2d15014

Browse files
authored
Move Selenium tests to JUnit Jupiter (#10804)
1 parent 7369dd9 commit 2d15014

13 files changed

+102
-105
lines changed

modules/selenium/build.gradle

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ dependencies {
66
provided 'org.seleniumhq.selenium:selenium-remote-driver:4.10.0'
77
provided 'org.seleniumhq.selenium:selenium-chrome-driver:4.10.0'
88

9+
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.11.0'
10+
11+
testImplementation 'org.junit.jupiter:junit-jupiter:5.13.4'
912
testImplementation platform('org.seleniumhq.selenium:selenium-bom:4.13.0')
1013
testImplementation 'org.seleniumhq.selenium:selenium-firefox-driver'
1114
testImplementation 'org.seleniumhq.selenium:selenium-edge-driver'
@@ -17,3 +20,7 @@ dependencies {
1720

1821
compileOnly 'org.jetbrains:annotations:26.0.2'
1922
}
23+
24+
test {
25+
useJUnitPlatform()
26+
}

modules/selenium/src/test/java/org/testcontainers/junit/BaseWebDriverContainerTest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.testcontainers.junit;
22

3-
import org.junit.ClassRule;
43
import org.openqa.selenium.By;
54
import org.openqa.selenium.Capabilities;
65
import org.openqa.selenium.WebElement;
@@ -15,15 +14,10 @@
1514

1615
import static org.assertj.core.api.Assertions.assertThat;
1716

18-
/**
19-
*
20-
*/
2117
public class BaseWebDriverContainerTest {
2218

23-
@ClassRule
2419
public static Network NETWORK = Network.newNetwork();
2520

26-
@ClassRule
2721
public static GenericContainer<?> HELLO_WORLD = new GenericContainer<>(
2822
DockerImageName.parse("testcontainers/helloworld:1.1.0")
2923
)
@@ -32,6 +26,10 @@ public class BaseWebDriverContainerTest {
3226
.withExposedPorts(8080, 8081)
3327
.waitingFor(new HttpWaitStrategy());
3428

29+
static {
30+
HELLO_WORLD.start();
31+
}
32+
3533
protected static void doSimpleExplore(BrowserWebDriverContainer<?> rule, Capabilities capabilities) {
3634
RemoteWebDriver driver = new RemoteWebDriver(rule.getSeleniumAddress(), capabilities);
3735
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));

modules/selenium/src/test/java/org/testcontainers/junit/BrowserWebDriverContainerTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
import com.github.dockerjava.api.command.InspectContainerResponse;
44
import org.apache.commons.io.FileUtils;
55
import org.apache.commons.lang3.SystemUtils;
6-
import org.junit.Assume;
7-
import org.junit.Test;
6+
import org.junit.jupiter.api.Test;
87
import org.openqa.selenium.chrome.ChromeOptions;
98
import org.openqa.selenium.firefox.FirefoxOptions;
109
import org.testcontainers.containers.BrowserWebDriverContainer;
@@ -14,15 +13,16 @@
1413
import java.util.stream.Collectors;
1514

1615
import static org.assertj.core.api.Assertions.assertThat;
16+
import static org.assertj.core.api.Assumptions.assumeThat;
1717

18-
public class BrowserWebDriverContainerTest {
18+
class BrowserWebDriverContainerTest {
1919

2020
private static final String NO_PROXY_KEY = "no_proxy";
2121

2222
private static final String NO_PROXY_VALUE = "localhost,.noproxy-domain.com";
2323

2424
@Test
25-
public void honorPresetNoProxyEnvironment() {
25+
void honorPresetNoProxyEnvironment() {
2626
try (
2727
BrowserWebDriverContainer chromeWithNoProxySet = (BrowserWebDriverContainer) new BrowserWebDriverContainer()
2828
.withCapabilities(new ChromeOptions())
@@ -36,7 +36,7 @@ public void honorPresetNoProxyEnvironment() {
3636
}
3737

3838
@Test
39-
public void provideDefaultNoProxyEnvironmentIfNotSet() {
39+
void provideDefaultNoProxyEnvironmentIfNotSet() {
4040
try (
4141
BrowserWebDriverContainer chromeWithoutNoProxySet = new BrowserWebDriverContainer()
4242
.withCapabilities(new ChromeOptions())
@@ -49,8 +49,8 @@ public void provideDefaultNoProxyEnvironmentIfNotSet() {
4949
}
5050

5151
@Test
52-
public void createContainerWithShmVolume() {
53-
Assume.assumeFalse("SHM isn't mounted on Windows", SystemUtils.IS_OS_WINDOWS);
52+
void createContainerWithShmVolume() {
53+
assumeThat(SystemUtils.IS_OS_WINDOWS).isTrue();
5454
try (
5555
BrowserWebDriverContainer webDriverContainer = new BrowserWebDriverContainer()
5656
.withCapabilities(new FirefoxOptions())
@@ -66,7 +66,7 @@ public void createContainerWithShmVolume() {
6666
}
6767

6868
@Test
69-
public void createContainerWithoutShmVolume() {
69+
void createContainerWithoutShmVolume() {
7070
try (
7171
BrowserWebDriverContainer webDriverContainer = new BrowserWebDriverContainer<>()
7272
.withSharedMemorySize(512 * FileUtils.ONE_MB)

modules/selenium/src/test/java/org/testcontainers/junit/ChromeRecordingWebDriverContainerTest.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package org.testcontainers.junit;
22

33
import com.google.common.io.PatternFilenameFilter;
4-
import org.junit.Rule;
5-
import org.junit.Test;
6-
import org.junit.experimental.runners.Enclosed;
7-
import org.junit.rules.TemporaryFolder;
8-
import org.junit.runner.RunWith;
4+
import org.junit.jupiter.api.Nested;
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.io.TempDir;
97
import org.openqa.selenium.chrome.ChromeOptions;
108
import org.testcontainers.containers.BrowserWebDriverContainer;
119
import org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode;
@@ -20,30 +18,31 @@
2018

2119
import java.io.File;
2220
import java.io.IOException;
21+
import java.nio.file.Path;
2322
import java.time.Duration;
2423
import java.time.temporal.ChronoUnit;
2524
import java.util.Optional;
2625
import java.util.concurrent.TimeUnit;
2726

2827
import static org.assertj.core.api.Assertions.assertThat;
2928

30-
@RunWith(Enclosed.class)
31-
public class ChromeRecordingWebDriverContainerTest extends BaseWebDriverContainerTest {
29+
class ChromeRecordingWebDriverContainerTest extends BaseWebDriverContainerTest {
3230

3331
/**
3432
* Guaranty a minimum video length for FFmpeg re-encoding.
3533
* @see VncRecordingFormat#reencodeRecording(VncRecordingContainer, String)
3634
*/
3735
private static final int MINIMUM_VIDEO_DURATION_MILLISECONDS = 200;
3836

39-
public static class ChromeThatRecordsAllTests {
37+
@Nested
38+
class ChromeThatRecordsAllTests {
4039

41-
@Rule
42-
public TemporaryFolder vncRecordingDirectory = new TemporaryFolder();
40+
@TempDir
41+
public Path vncRecordingDirectory;
4342

4443
@Test
45-
public void recordingTestThatShouldBeRecordedAndRetainedInFlvFormatAsDefault() throws InterruptedException {
46-
File target = vncRecordingDirectory.getRoot();
44+
void recordingTestThatShouldBeRecordedAndRetainedInFlvFormatAsDefault() throws InterruptedException {
45+
File target = vncRecordingDirectory.toFile();
4746
try (
4847
// recordAll {
4948
// To do this, simply add extra parameters to the rule constructor, so video will default to FLV format:
@@ -80,12 +79,12 @@ public String getFilesystemFriendlyName() {
8079
Optional.empty()
8180
);
8281

83-
return vncRecordingDirectory.getRoot().listFiles(new PatternFilenameFilter(fileNamePattern));
82+
return vncRecordingDirectory.toFile().listFiles(new PatternFilenameFilter(fileNamePattern));
8483
}
8584

8685
@Test
87-
public void recordingTestShouldHaveFlvExtension() throws InterruptedException {
88-
File target = vncRecordingDirectory.getRoot();
86+
void recordingTestShouldHaveFlvExtension() throws InterruptedException {
87+
File target = vncRecordingDirectory.toFile();
8988
try (
9089
// recordFlv {
9190
// Set (explicitly) FLV format for recorded video:
@@ -102,8 +101,8 @@ public void recordingTestShouldHaveFlvExtension() throws InterruptedException {
102101
}
103102

104103
@Test
105-
public void recordingTestShouldHaveMp4Extension() throws InterruptedException {
106-
File target = vncRecordingDirectory.getRoot();
104+
void recordingTestShouldHaveMp4Extension() throws InterruptedException {
105+
File target = vncRecordingDirectory.toFile();
107106
try (
108107
// recordMp4 {
109108
// Set MP4 format for recorded video:
@@ -120,12 +119,12 @@ public void recordingTestShouldHaveMp4Extension() throws InterruptedException {
120119
}
121120

122121
@Test
123-
public void recordingTestThatShouldHaveCorrectDuration() throws IOException, InterruptedException {
122+
void recordingTestThatShouldHaveCorrectDuration() throws IOException, InterruptedException {
124123
MountableFile mountableFile;
125124
try (
126125
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
127126
.withCapabilities(new ChromeOptions())
128-
.withRecordingMode(VncRecordingMode.RECORD_ALL, vncRecordingDirectory.getRoot())
127+
.withRecordingMode(VncRecordingMode.RECORD_ALL, vncRecordingDirectory.toFile())
129128
.withRecordingFileFactory(new DefaultRecordingFileFactory())
130129
.withNetwork(NETWORK)
131130
) {
@@ -159,13 +158,14 @@ public void recordingTestThatShouldHaveCorrectDuration() throws IOException, Int
159158
}
160159
}
161160

162-
public static class ChromeThatRecordsFailingTests {
161+
@Nested
162+
class ChromeThatRecordsFailingTests {
163163

164-
@Rule
165-
public TemporaryFolder vncRecordingDirectory = new TemporaryFolder();
164+
@TempDir
165+
public Path vncRecordingDirectory;
166166

167167
@Test
168-
public void recordingTestThatShouldBeRecordedButNotPersisted() {
168+
void recordingTestThatShouldBeRecordedButNotPersisted() {
169169
try (
170170
// withRecordingFileFactory {
171171
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
@@ -183,8 +183,8 @@ public void recordingTestThatShouldBeRecordedButNotPersisted() {
183183
}
184184

185185
@Test
186-
public void recordingTestThatShouldBeRecordedAndRetained() throws InterruptedException {
187-
File target = vncRecordingDirectory.getRoot();
186+
void recordingTestThatShouldBeRecordedAndRetained() throws InterruptedException {
187+
File target = vncRecordingDirectory.toFile();
188188
try (
189189
// recordFailing {
190190
// or if you only want videos for test failures:
@@ -214,11 +214,11 @@ public String getFilesystemFriendlyName() {
214214
Optional.of(new RuntimeException("Force writing of video file."))
215215
);
216216

217-
String[] files = vncRecordingDirectory.getRoot().list(new PatternFilenameFilter("FAILED-.*\\.flv"));
217+
String[] files = vncRecordingDirectory.toFile().list(new PatternFilenameFilter("FAILED-.*\\.flv"));
218218
assertThat(files).as("recorded file count").hasSize(1);
219219
}
220220
}
221221

222-
private static class CustomRecordingFileFactory extends DefaultRecordingFileFactory {}
222+
class CustomRecordingFileFactory extends DefaultRecordingFileFactory {}
223223
}
224224
}
Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
11
package org.testcontainers.junit;
22

3-
import org.junit.Before;
4-
import org.junit.Rule;
5-
import org.junit.Test;
3+
import org.junit.jupiter.api.BeforeEach;
4+
import org.junit.jupiter.api.Test;
65
import org.openqa.selenium.chrome.ChromeOptions;
76
import org.testcontainers.containers.BrowserWebDriverContainer;
87

9-
/**
10-
*
11-
*/
12-
public class ChromeWebDriverContainerTest extends BaseWebDriverContainerTest {
8+
class ChromeWebDriverContainerTest extends BaseWebDriverContainerTest {
139

1410
// junitRule {
15-
@Rule
1611
public BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
1712
.withCapabilities(new ChromeOptions())
1813
// }
1914
.withNetwork(NETWORK);
2015

21-
@Before
16+
@BeforeEach
2217
public void checkBrowserIsIndeedChrome() {
18+
chrome.start();
2319
assertBrowserNameIs(chrome, "chrome", new ChromeOptions());
2420
}
2521

2622
@Test
27-
public void simpleExploreTest() {
23+
void simpleExploreTest() {
2824
doSimpleExplore(chrome, new ChromeOptions());
2925
}
3026
}
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
11
package org.testcontainers.junit;
22

3-
import org.junit.Rule;
4-
import org.junit.Test;
3+
import org.junit.jupiter.api.AutoClose;
4+
import org.junit.jupiter.api.BeforeEach;
5+
import org.junit.jupiter.api.Test;
56
import org.openqa.selenium.chrome.ChromeOptions;
67
import org.testcontainers.containers.BrowserWebDriverContainer;
78

8-
public class ContainerWithoutCapabilitiesTest extends BaseWebDriverContainerTest {
9+
class ContainerWithoutCapabilitiesTest extends BaseWebDriverContainerTest {
910

10-
@Rule
11+
@AutoClose
1112
public BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>().withNetwork(NETWORK);
1213

14+
@BeforeEach
15+
public void setUp() {
16+
chrome.start();
17+
}
18+
1319
@Test
14-
public void chromeIsStartedIfNoCapabilitiesProvided() {
20+
void chromeIsStartedIfNoCapabilitiesProvided() {
1521
assertBrowserNameIs(chrome, "chrome", new ChromeOptions());
1622
}
1723

1824
@Test
19-
public void simpleExploreTestWhenNoCapabilitiesProvided() {
25+
void simpleExploreTestWhenNoCapabilitiesProvided() {
2026
doSimpleExplore(chrome, new ChromeOptions());
2127
}
2228
}
Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
11
package org.testcontainers.junit;
22

3-
import org.junit.Rule;
4-
import org.junit.Test;
3+
import org.junit.jupiter.api.Test;
54
import org.openqa.selenium.chrome.ChromeOptions;
65
import org.testcontainers.containers.BrowserWebDriverContainer;
76

87
import java.time.Duration;
98
import java.time.temporal.ChronoUnit;
109

11-
/**
12-
*
13-
*/
14-
public class CustomWaitTimeoutWebDriverContainerTest extends BaseWebDriverContainerTest {
10+
class CustomWaitTimeoutWebDriverContainerTest extends BaseWebDriverContainerTest {
1511

16-
@Rule
1712
public BrowserWebDriverContainer<?> chromeWithCustomTimeout = new BrowserWebDriverContainer<>()
1813
.withCapabilities(new ChromeOptions())
1914
.withStartupTimeout(Duration.of(30, ChronoUnit.SECONDS))
2015
.withNetwork(NETWORK);
2116

2217
@Test
23-
public void simpleExploreTest() {
18+
void simpleExploreTest() {
19+
chromeWithCustomTimeout.start();
2420
doSimpleExplore(chromeWithCustomTimeout, new ChromeOptions());
2521
}
2622
}
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
package org.testcontainers.junit;
22

3-
import org.junit.Before;
4-
import org.junit.Rule;
5-
import org.junit.Test;
3+
import org.junit.jupiter.api.BeforeEach;
4+
import org.junit.jupiter.api.Test;
65
import org.openqa.selenium.edge.EdgeOptions;
76
import org.testcontainers.containers.BrowserWebDriverContainer;
87

9-
public class EdgeWebDriverContainerTest extends BaseWebDriverContainerTest {
8+
class EdgeWebDriverContainerTest extends BaseWebDriverContainerTest {
109

1110
// junitRule {
12-
@Rule
1311
public BrowserWebDriverContainer<?> edge = new BrowserWebDriverContainer<>()
1412
.withCapabilities(new EdgeOptions())
1513
// }
1614
.withNetwork(NETWORK);
1715

18-
@Before
16+
@BeforeEach
1917
public void checkBrowserIsIndeedMSEdge() {
18+
edge.start();
2019
assertBrowserNameIs(edge, "msedge", new EdgeOptions());
2120
}
2221

2322
@Test
24-
public void simpleExploreTest() {
23+
void simpleExploreTest() {
2524
doSimpleExplore(edge, new EdgeOptions());
2625
}
2726
}

0 commit comments

Comments
 (0)