diff --git a/AUTHORS b/AUTHORS index f67f444bf02..26ab8313e53 100644 --- a/AUTHORS +++ b/AUTHORS @@ -9,3 +9,4 @@ Asaf Mesika Sergei Egorov Pete Cornish Miguel Gonzalez Sanchez +Julien LAMY diff --git a/CHANGELOG.md b/CHANGELOG.md index 8701480fc13..df073b90805 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Fixed `getServicePort` on `DockerComposeContainer` throws NullPointerException if service instance number in not used. ([\#619](https://github.com/testcontainers/testcontainers-java/issues/619)) ### Changed +- Added compatibility with selenium greater than 3.X ([\#611](https://github.com/testcontainers/testcontainers-java/issues/611)) - Abstracted and changed database init script functionality to support use of SQL-like scripts with non-JDBC connections. ([\#551](https://github.com/testcontainers/testcontainers-java/pull/551)) - Added `JdbcDatabaseContainer(Future)` constructor. ([\#543](https://github.com/testcontainers/testcontainers-java/issues/543)) - Mark DockerMachineClientProviderStrategy as not persistable ([\#593](https://github.com/testcontainers/testcontainers-java/pull/593)) diff --git a/modules/selenium/src/main/java/org/testcontainers/containers/SeleniumUtils.java b/modules/selenium/src/main/java/org/testcontainers/containers/SeleniumUtils.java index 9c0fd822a66..1a6319d3103 100644 --- a/modules/selenium/src/main/java/org/testcontainers/containers/SeleniumUtils.java +++ b/modules/selenium/src/main/java/org/testcontainers/containers/SeleniumUtils.java @@ -38,17 +38,12 @@ public static String determineClasspathSeleniumVersion() { Manifest manifest = new Manifest(); manifest.read(is); - Attributes buildInfo = manifest.getAttributes("Build-Info"); - if (buildInfo != null) { - String seleniumVersion = buildInfo.getValue("Selenium-Version"); - - if (seleniumVersion != null) { - seleniumVersions.add(seleniumVersion); - LOGGER.info("Selenium API version {} detected on classpath", seleniumVersion); - } + String seleniumVersion = getSeleniumVersionFromManifest(manifest); + if (seleniumVersion != null) { + seleniumVersions.add(seleniumVersion); + LOGGER.info("Selenium API version {} detected on classpath", seleniumVersion); } } - } } catch (Exception e) { @@ -67,4 +62,26 @@ public static String determineClasspathSeleniumVersion() { return foundVersion; } + + /** + * Read Manifest to get Selenium Version. + * @param manifest + * @return Selenium Version detected + */ + public static String getSeleniumVersionFromManifest(Manifest manifest) { + String seleniumVersion = null; + Attributes buildInfo = manifest.getAttributes("Build-Info"); + if (buildInfo != null) { + seleniumVersion = buildInfo.getValue("Selenium-Version"); + } + + // Compatibility Selenium > 3.X + if(seleniumVersion == null) { + Attributes seleniumInfo = manifest.getAttributes("Selenium"); + if (seleniumInfo != null) { + seleniumVersion = seleniumInfo.getValue("Selenium-Version"); + } + } + return seleniumVersion; + } } diff --git a/modules/selenium/src/test/java/org/testcontainers/junit/SeleniumUtilsTest.java b/modules/selenium/src/test/java/org/testcontainers/junit/SeleniumUtilsTest.java new file mode 100644 index 00000000000..d706d0fc390 --- /dev/null +++ b/modules/selenium/src/test/java/org/testcontainers/junit/SeleniumUtilsTest.java @@ -0,0 +1,39 @@ +package org.testcontainers.junit; + +import org.junit.Test; +import org.testcontainers.containers.SeleniumUtils; + +import java.io.IOException; +import java.util.jar.Manifest; + +import static org.rnorth.visibleassertions.VisibleAssertions.*; + + +/** + * Created by Julien LAMY + */ +public class SeleniumUtilsTest { + + @Test + public void detectSeleniumVersionUnder3() throws IOException { + checkSeleniumVersionDetected("manifests/MANIFEST-2.45.0.MF", "2.45.0"); + } + + @Test + public void detectSeleniumVersionUpper3() throws IOException { + checkSeleniumVersionDetected("manifests/MANIFEST-3.5.2.MF", "3.5.2"); + } + + /** + * Check if Selenium Version detected is the correct one. + * @param urlManifest : manifest file + * @throws IOException + */ + private void checkSeleniumVersionDetected(String urlManifest, String expectedVersion) throws IOException { + Manifest manifest = new Manifest(); + manifest.read(this.getClass().getClassLoader().getResourceAsStream(urlManifest)); + String seleniumVersion = SeleniumUtils.getSeleniumVersionFromManifest(manifest); + assertEquals("Check if Selenium Version detected is the correct one.", expectedVersion, seleniumVersion); + } + +} diff --git a/modules/selenium/src/test/resources/manifests/MANIFEST-2.45.0.MF b/modules/selenium/src/test/resources/manifests/MANIFEST-2.45.0.MF new file mode 100644 index 00000000000..ad494a3ec0e --- /dev/null +++ b/modules/selenium/src/test/resources/manifests/MANIFEST-2.45.0.MF @@ -0,0 +1,11 @@ +Manifest-Version: 1.0 +Built-By: linman +Build-Jdk: 1.7.0_65 +Created-By: Apache Maven 3.1.1 +Archiver-Version: Plexus Archiver + +Name: Build-Info +Selenium-Revision: 5017cb8e7ca8e37638dc3091b2440b90a1d8686f +Selenium-Version: 2.45.0 +Selenium-Build-Time: 2015-02-27 09:10:26 + diff --git a/modules/selenium/src/test/resources/manifests/MANIFEST-3.5.2.MF b/modules/selenium/src/test/resources/manifests/MANIFEST-3.5.2.MF new file mode 100755 index 00000000000..772380fed70 --- /dev/null +++ b/modules/selenium/src/test/resources/manifests/MANIFEST-3.5.2.MF @@ -0,0 +1,8 @@ +Manifest-Version: 1.0 + +Name: Build-Info +Build-Revision: 21ac65f960 +Build-Time: 2017-08-21T20:29:34.71Z +Build-User: lamaille +Selenium-Version: 3.5.2 +