Skip to content

Commit 0abaf4a

Browse files
jlamaillebsideup
authored andcommitted
Add compatibility with selenium greater than 3.X (#632)
* Add compatibility with selenium greater than 3.X * Add unit tests for compatibility Selenium > 3
1 parent ac1d4af commit 0abaf4a

File tree

6 files changed

+86
-9
lines changed

6 files changed

+86
-9
lines changed

AUTHORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ Asaf Mesika <[email protected]>
99
Sergei Egorov <[email protected]>
1010
Pete Cornish <[email protected]>
1111
Miguel Gonzalez Sanchez <[email protected]>
12+
Julien LAMY <[email protected]>

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.
88
- Fixed `getServicePort` on `DockerComposeContainer` throws NullPointerException if service instance number in not used. ([\#619](https://github.com/testcontainers/testcontainers-java/issues/619))
99

1010
### Changed
11+
- Added compatibility with selenium greater than 3.X ([\#611](https://github.com/testcontainers/testcontainers-java/issues/611))
1112
- 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))
1213
- Added `JdbcDatabaseContainer(Future)` constructor. ([\#543](https://github.com/testcontainers/testcontainers-java/issues/543))
1314
- Mark DockerMachineClientProviderStrategy as not persistable ([\#593](https://github.com/testcontainers/testcontainers-java/pull/593))

modules/selenium/src/main/java/org/testcontainers/containers/SeleniumUtils.java

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,12 @@ public static String determineClasspathSeleniumVersion() {
3838
Manifest manifest = new Manifest();
3939
manifest.read(is);
4040

41-
Attributes buildInfo = manifest.getAttributes("Build-Info");
42-
if (buildInfo != null) {
43-
String seleniumVersion = buildInfo.getValue("Selenium-Version");
44-
45-
if (seleniumVersion != null) {
46-
seleniumVersions.add(seleniumVersion);
47-
LOGGER.info("Selenium API version {} detected on classpath", seleniumVersion);
48-
}
41+
String seleniumVersion = getSeleniumVersionFromManifest(manifest);
42+
if (seleniumVersion != null) {
43+
seleniumVersions.add(seleniumVersion);
44+
LOGGER.info("Selenium API version {} detected on classpath", seleniumVersion);
4945
}
5046
}
51-
5247
}
5348

5449
} catch (Exception e) {
@@ -67,4 +62,26 @@ public static String determineClasspathSeleniumVersion() {
6762

6863
return foundVersion;
6964
}
65+
66+
/**
67+
* Read Manifest to get Selenium Version.
68+
* @param manifest
69+
* @return Selenium Version detected
70+
*/
71+
public static String getSeleniumVersionFromManifest(Manifest manifest) {
72+
String seleniumVersion = null;
73+
Attributes buildInfo = manifest.getAttributes("Build-Info");
74+
if (buildInfo != null) {
75+
seleniumVersion = buildInfo.getValue("Selenium-Version");
76+
}
77+
78+
// Compatibility Selenium > 3.X
79+
if(seleniumVersion == null) {
80+
Attributes seleniumInfo = manifest.getAttributes("Selenium");
81+
if (seleniumInfo != null) {
82+
seleniumVersion = seleniumInfo.getValue("Selenium-Version");
83+
}
84+
}
85+
return seleniumVersion;
86+
}
7087
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.testcontainers.junit;
2+
3+
import org.junit.Test;
4+
import org.testcontainers.containers.SeleniumUtils;
5+
6+
import java.io.IOException;
7+
import java.util.jar.Manifest;
8+
9+
import static org.rnorth.visibleassertions.VisibleAssertions.*;
10+
11+
12+
/**
13+
* Created by Julien LAMY
14+
*/
15+
public class SeleniumUtilsTest {
16+
17+
@Test
18+
public void detectSeleniumVersionUnder3() throws IOException {
19+
checkSeleniumVersionDetected("manifests/MANIFEST-2.45.0.MF", "2.45.0");
20+
}
21+
22+
@Test
23+
public void detectSeleniumVersionUpper3() throws IOException {
24+
checkSeleniumVersionDetected("manifests/MANIFEST-3.5.2.MF", "3.5.2");
25+
}
26+
27+
/**
28+
* Check if Selenium Version detected is the correct one.
29+
* @param urlManifest : manifest file
30+
* @throws IOException
31+
*/
32+
private void checkSeleniumVersionDetected(String urlManifest, String expectedVersion) throws IOException {
33+
Manifest manifest = new Manifest();
34+
manifest.read(this.getClass().getClassLoader().getResourceAsStream(urlManifest));
35+
String seleniumVersion = SeleniumUtils.getSeleniumVersionFromManifest(manifest);
36+
assertEquals("Check if Selenium Version detected is the correct one.", expectedVersion, seleniumVersion);
37+
}
38+
39+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Manifest-Version: 1.0
2+
Built-By: linman
3+
Build-Jdk: 1.7.0_65
4+
Created-By: Apache Maven 3.1.1
5+
Archiver-Version: Plexus Archiver
6+
7+
Name: Build-Info
8+
Selenium-Revision: 5017cb8e7ca8e37638dc3091b2440b90a1d8686f
9+
Selenium-Version: 2.45.0
10+
Selenium-Build-Time: 2015-02-27 09:10:26
11+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Manifest-Version: 1.0
2+
3+
Name: Build-Info
4+
Build-Revision: 21ac65f960
5+
Build-Time: 2017-08-21T20:29:34.71Z
6+
Build-User: lamaille
7+
Selenium-Version: 3.5.2
8+

0 commit comments

Comments
 (0)