From 16fb9ad696e4410d552d1fe34be6f8b6d4101e8a Mon Sep 17 00:00:00 2001 From: Richard North Date: Sun, 4 Dec 2016 19:50:36 +0000 Subject: [PATCH 1/2] Allow docker image used for selenium to be specified, instead of always trying to figure out from classpath dependencies. Refs #171 --- .../containers/BrowserWebDriverContainer.java | 20 +++++++++++-- ...ecificImageNameWebDriverContainerTest.java | 28 +++++++++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 modules/selenium/src/test/java/org/testcontainers/junit/SpecificImageNameWebDriverContainerTest.java diff --git a/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java b/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java index 4c7d6019c3b..17ad2dfbe71 100644 --- a/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java +++ b/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java @@ -36,15 +36,16 @@ public class BrowserWebDriverContainer currentVncRecordings = new ArrayList<>(); private static final Logger LOGGER = LoggerFactory.getLogger(BrowserWebDriverContainer.class); - private static final SimpleDateFormat filenameDateFormat = new SimpleDateFormat("YYYYMMdd-HHmmss"); /** @@ -53,9 +54,22 @@ public BrowserWebDriverContainer() { } + /** + * Constructor taking a specific webdriver container name and tag + * @param dockerImageName + */ + public BrowserWebDriverContainer(String dockerImageName) { + super.setDockerImageName(dockerImageName); + this.imageNameIsSet = true; + } + public SELF withDesiredCapabilities(DesiredCapabilities desiredCapabilities) { - super.setDockerImageName(getImageForCapabilities(desiredCapabilities)); + + if (! imageNameIsSet) { + super.setDockerImageName(getImageForCapabilities(desiredCapabilities)); + } + this.desiredCapabilities = desiredCapabilities; return self(); } diff --git a/modules/selenium/src/test/java/org/testcontainers/junit/SpecificImageNameWebDriverContainerTest.java b/modules/selenium/src/test/java/org/testcontainers/junit/SpecificImageNameWebDriverContainerTest.java new file mode 100644 index 00000000000..1db034502ac --- /dev/null +++ b/modules/selenium/src/test/java/org/testcontainers/junit/SpecificImageNameWebDriverContainerTest.java @@ -0,0 +1,28 @@ +package org.testcontainers.junit; + +import org.junit.Rule; +import org.junit.Test; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.testcontainers.containers.BrowserWebDriverContainer; + +import java.io.IOException; + +/** + * + */ +public class SpecificImageNameWebDriverContainerTest extends BaseWebDriverContainerTest { + + @Rule + public BrowserWebDriverContainer firefox = new BrowserWebDriverContainer("selenium/standalone-firefox-debug:2.53.1-beryllium") + .withDesiredCapabilities(DesiredCapabilities.firefox()); + + @Test + public void simpleTest() throws IOException { + doSimpleWebdriverTest(firefox); + } + + @Test + public void simpleExploreTest() throws IOException { + doSimpleExplore(firefox); + } +} From 8efdaa87684821bf6a57ff859eeffad05d485217 Mon Sep 17 00:00:00 2001 From: Richard North Date: Sat, 17 Dec 2016 21:25:17 +0000 Subject: [PATCH 2/2] Move logic relating to setting of custom/automatic webdriver image name, and clarify name of field --- .../containers/BrowserWebDriverContainer.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java b/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java index 17ad2dfbe71..1798ec41116 100644 --- a/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java +++ b/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java @@ -16,10 +16,14 @@ import java.net.MalformedURLException; import java.net.URL; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import static com.google.common.base.Preconditions.checkState; + /** * A chrome/firefox/custom container based on SeleniumHQ's standalone container sets. *

@@ -36,7 +40,7 @@ public class BrowserWebDriverContainer