Skip to content

Commit 27428a0

Browse files
authored
Remove dependency upon internet URLs for selenium tests (#3271)
1 parent 53932d9 commit 27428a0

9 files changed

+50
-156
lines changed
Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,62 @@
11
package org.testcontainers.junit;
22

33
import org.jetbrains.annotations.NotNull;
4+
import org.junit.ClassRule;
45
import org.openqa.selenium.By;
56
import org.openqa.selenium.WebElement;
67
import org.openqa.selenium.remote.RemoteWebDriver;
7-
import org.openqa.selenium.support.ui.ExpectedConditions;
8-
import org.openqa.selenium.support.ui.WebDriverWait;
98
import org.testcontainers.containers.BrowserWebDriverContainer;
9+
import org.testcontainers.containers.GenericContainer;
10+
import org.testcontainers.containers.Network;
11+
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
12+
import org.testcontainers.utility.DockerImageName;
1013

11-
import java.util.List;
1214
import java.util.concurrent.TimeUnit;
1315

1416
import static java.lang.String.format;
17+
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
1518
import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue;
1619

1720
/**
1821
*
1922
*/
2023
public class BaseWebDriverContainerTest {
2124

22-
protected void doSimpleWebdriverTest(BrowserWebDriverContainer rule) {
25+
@ClassRule
26+
public static Network NETWORK = Network.newNetwork();
27+
28+
@ClassRule
29+
public static GenericContainer<?> HELLO_WORLD = new GenericContainer<>(DockerImageName.parse("testcontainers/helloworld:1.0.0"))
30+
.withNetwork(NETWORK)
31+
.withNetworkAliases("helloworld")
32+
.withExposedPorts(8080, 8081)
33+
.waitingFor(new HttpWaitStrategy());
34+
35+
protected static void doSimpleExplore(BrowserWebDriverContainer<?> rule) {
2336
RemoteWebDriver driver = setupDriverFromRule(rule);
2437
System.out.println("Selenium remote URL is: " + rule.getSeleniumAddress());
2538
System.out.println("VNC URL is: " + rule.getVncAddress());
2639

27-
driver.get("http://www.google.com");
28-
WebElement search = driver.findElement(By.name("q"));
29-
search.sendKeys("testcontainers");
30-
search.submit();
40+
driver.get("http://helloworld:8080");
41+
WebElement title = driver.findElement(By.tagName("h1"));
3142

32-
List<WebElement> results = new WebDriverWait(driver, 15)
33-
.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("#search h3")));
34-
35-
assertTrue("the word 'testcontainers' appears in search results",
36-
results.stream()
37-
.anyMatch(el -> el.getText().contains("testcontainers")));
43+
assertEquals("the index page contains the title 'Hello world'",
44+
"Hello world",
45+
title.getText().trim()
46+
);
3847
}
3948

40-
protected void assertBrowserNameIs(BrowserWebDriverContainer rule, String expectedName) {
49+
protected void assertBrowserNameIs(BrowserWebDriverContainer<?> rule, String expectedName) {
4150
RemoteWebDriver driver = setupDriverFromRule(rule);
4251
String actual = driver.getCapabilities().getBrowserName();
4352
assertTrue(format("actual browser name is %s", actual),
4453
actual.equals(expectedName));
4554
}
4655

4756
@NotNull
48-
private static RemoteWebDriver setupDriverFromRule(BrowserWebDriverContainer rule) {
57+
private static RemoteWebDriver setupDriverFromRule(BrowserWebDriverContainer<?> rule) {
4958
RemoteWebDriver driver = rule.getWebDriver();
5059
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
5160
return driver;
5261
}
53-
54-
protected static void doSimpleExplore(BrowserWebDriverContainer rule) {
55-
RemoteWebDriver driver = setupDriverFromRule(rule);
56-
driver.get("http://en.wikipedia.org/wiki/Randomness");
57-
58-
// Oh! The irony!
59-
assertTrue("Randomness' description has the word 'pattern'", driver.findElementByPartialLinkText("pattern").isDisplayed());
60-
}
61-
6262
}

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,12 @@ public void recordingTestThatShouldBeRecordedAndRetained() {
3333
try (
3434
// recordAll {
3535
// To do this, simply add extra parameters to the rule constructor:
36-
BrowserWebDriverContainer chrome = new BrowserWebDriverContainer()
36+
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
3737
.withCapabilities(new ChromeOptions())
3838
.withRecordingMode(RECORD_ALL, target)
3939
// }
4040
.withRecordingFileFactory(new DefaultRecordingFileFactory())
41+
.withNetwork(NETWORK)
4142
) {
4243
chrome.start();
4344

@@ -69,12 +70,13 @@ public static class ChromeThatRecordsFailingTests {
6970
public void recordingTestThatShouldBeRecordedButNotPersisted() {
7071
try (
7172
// withRecordingFileFactory {
72-
BrowserWebDriverContainer chrome = new BrowserWebDriverContainer()
73+
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
7374
// }
7475
.withCapabilities(new ChromeOptions())
7576
// withRecordingFileFactory {
7677
.withRecordingFileFactory(new CustomRecordingFileFactory())
77-
// }
78+
// }
79+
.withNetwork(NETWORK)
7880
) {
7981
chrome.start();
8082

@@ -88,11 +90,12 @@ public void recordingTestThatShouldBeRecordedAndRetained() {
8890
try (
8991
// recordFailing {
9092
// or if you only want videos for test failures:
91-
BrowserWebDriverContainer chrome = new BrowserWebDriverContainer()
93+
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
9294
.withCapabilities(new ChromeOptions())
9395
.withRecordingMode(RECORD_FAILING, target)
9496
// }
9597
.withRecordingFileFactory(new DefaultRecordingFileFactory())
98+
.withNetwork(NETWORK)
9699
) {
97100
chrome.start();
98101

@@ -115,6 +118,7 @@ public String getFilesystemFriendlyName() {
115118

116119
}
117120

118-
private static class CustomRecordingFileFactory extends DefaultRecordingFileFactory { }
121+
private static class CustomRecordingFileFactory extends DefaultRecordingFileFactory {
122+
}
119123
}
120124
}

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,16 @@ public class ChromeWebDriverContainerTest extends BaseWebDriverContainerTest {
1313

1414
// junitRule {
1515
@Rule
16-
public BrowserWebDriverContainer chrome = new BrowserWebDriverContainer()
17-
.withCapabilities(new ChromeOptions());
16+
public BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
17+
.withCapabilities(new ChromeOptions())
1818
// }
19+
.withNetwork(NETWORK);
1920

2021
@Before
2122
public void checkBrowserIsIndeedChrome() {
2223
assertBrowserNameIs(chrome, "chrome");
2324
}
2425

25-
@Test
26-
public void simpleTest() {
27-
doSimpleWebdriverTest(chrome);
28-
}
29-
3026
@Test
3127
public void simpleExploreTest() {
3228
doSimpleExplore(chrome);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
public class ContainerWithoutCapabilitiesTest extends BaseWebDriverContainerTest{
88

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

1213
@Test
1314
public void chromeIsStartedIfNoCapabilitiesProvided() {

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@
1515
public class CustomWaitTimeoutWebDriverContainerTest extends BaseWebDriverContainerTest {
1616

1717
@Rule
18-
public BrowserWebDriverContainer chromeWithCustomTimeout = new BrowserWebDriverContainer<>()
19-
.withCapabilities(new ChromeOptions())
20-
.withStartupTimeout(Duration.of(30, SECONDS));
18+
public BrowserWebDriverContainer<?> chromeWithCustomTimeout = new BrowserWebDriverContainer<>()
19+
.withCapabilities(new ChromeOptions())
20+
.withStartupTimeout(Duration.of(30, SECONDS))
21+
.withNetwork(NETWORK);
2122

2223
@Test
23-
public void simpleTest() {
24-
doSimpleWebdriverTest(chromeWithCustomTimeout);
24+
public void simpleExploreTest() {
25+
doSimpleExplore(chromeWithCustomTimeout);
2526
}
2627
}

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,16 @@ public class FirefoxWebDriverContainerTest extends BaseWebDriverContainerTest {
1313

1414
// junitRule {
1515
@Rule
16-
public BrowserWebDriverContainer firefox = new BrowserWebDriverContainer()
17-
.withCapabilities(new FirefoxOptions());
16+
public BrowserWebDriverContainer<?> firefox = new BrowserWebDriverContainer<>()
17+
.withCapabilities(new FirefoxOptions())
1818
// }
19+
.withNetwork(NETWORK);
1920

2021
@Before
2122
public void checkBrowserIsIndeedFirefox() {
2223
assertBrowserNameIs(firefox, "firefox");
2324
}
2425

25-
@Test
26-
public void simpleTest() {
27-
doSimpleWebdriverTest(firefox);
28-
}
29-
3026
@Test
3127
public void simpleExploreTest() {
3228
doSimpleExplore(firefox);

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

Lines changed: 0 additions & 31 deletions
This file was deleted.

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

Lines changed: 0 additions & 69 deletions
This file was deleted.

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,8 @@ public class SpecificImageNameWebDriverContainerTest extends BaseWebDriverContai
1212

1313
@Rule
1414
public BrowserWebDriverContainer<?> firefox = new BrowserWebDriverContainer<>(FIREFOX_IMAGE)
15-
.withCapabilities(new FirefoxOptions());
16-
17-
@Test
18-
public void simpleTest() {
19-
doSimpleWebdriverTest(firefox);
20-
}
15+
.withCapabilities(new FirefoxOptions())
16+
.withNetwork(NETWORK);
2117

2218
@Test
2319
public void simpleExploreTest() {

0 commit comments

Comments
 (0)