Skip to content

Commit 996ea54

Browse files
committed
[java] Adding more tests for merging ChromeOptions
1 parent d78e447 commit 996ea54

File tree

3 files changed

+89
-6
lines changed

3 files changed

+89
-6
lines changed

java/client/src/org/openqa/selenium/chromium/ChromiumOptions.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.util.ArrayList;
3333
import java.util.Arrays;
3434
import java.util.Base64;
35-
import java.util.Collections;
3635
import java.util.HashMap;
3736
import java.util.List;
3837
import java.util.Map;
@@ -60,7 +59,7 @@
6059
*
6160
* @since Since chromedriver v17.0.963.0
6261
*/
63-
public class ChromiumOptions<T extends ChromiumOptions> extends AbstractDriverOptions<ChromiumOptions> {
62+
public class ChromiumOptions<T extends ChromiumOptions<?>> extends AbstractDriverOptions<ChromiumOptions<?>> {
6463

6564
private String binary;
6665
private final List<String> args = new ArrayList<>();

java/client/test/org/openqa/selenium/chrome/ChromeOptionsTest.java

+72-4
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@
2424
import static org.openqa.selenium.chrome.ChromeDriverLogLevel.OFF;
2525
import static org.openqa.selenium.chrome.ChromeDriverLogLevel.SEVERE;
2626

27+
import java.io.File;
28+
import java.util.Base64;
2729
import java.util.List;
2830
import java.util.Map;
2931
import org.junit.Test;
3032
import org.junit.experimental.categories.Category;
33+
import org.openqa.selenium.testing.TestUtilities;
3134
import org.openqa.selenium.testing.UnitTests;
3235

3336
@Category(UnitTests.class)
@@ -37,19 +40,19 @@ public class ChromeOptionsTest {
3740
public void optionsAsMapShouldBeImmutable() {
3841
Map<String, Object> options = new ChromeOptions().asMap();
3942
assertThatExceptionOfType(UnsupportedOperationException.class)
40-
.isThrownBy(() -> options.put("browserType", "firefox"));
43+
.isThrownBy(() -> options.put("browserType", "firefox"));
4144

4245
Map<String, Object> googOptions = (Map<String, Object>) options.get(ChromeOptions.CAPABILITY);
4346
assertThatExceptionOfType(UnsupportedOperationException.class)
44-
.isThrownBy(() -> googOptions.put("binary", ""));
47+
.isThrownBy(() -> googOptions.put("binary", ""));
4548

4649
List<String> extensions = (List<String>) googOptions.get("extensions");
4750
assertThatExceptionOfType(UnsupportedOperationException.class)
48-
.isThrownBy(() -> extensions.add("x"));
51+
.isThrownBy(() -> extensions.add("x"));
4952

5053
List<String> args = (List<String>) googOptions.get("args");
5154
assertThatExceptionOfType(UnsupportedOperationException.class)
52-
.isThrownBy(() -> args.add("-help"));
55+
.isThrownBy(() -> args.add("-help"));
5356
}
5457

5558
@Test
@@ -69,4 +72,69 @@ public void mergingOptionsMergesArguments() {
6972
.extractingByKey("args").asInstanceOf(LIST)
7073
.containsExactly("verbose", "silent");
7174
}
75+
76+
@Test
77+
public void mergingOptionsMergesEncodedExtensions() {
78+
String ext1 = Base64.getEncoder().encodeToString("ext1".getBytes());
79+
String ext2 = Base64.getEncoder().encodeToString("ext2".getBytes());
80+
81+
ChromeOptions one = new ChromeOptions().addEncodedExtensions(ext1);
82+
ChromeOptions two = new ChromeOptions().addEncodedExtensions(ext2);
83+
ChromeOptions merged = one.merge(two);
84+
85+
assertThat(merged.asMap()).asInstanceOf(MAP)
86+
.extractingByKey(ChromeOptions.CAPABILITY).asInstanceOf(MAP)
87+
.extractingByKey("extensions").asInstanceOf(LIST)
88+
.containsExactly(ext1, ext2);
89+
}
90+
91+
@Test
92+
public void mergingOptionsMergesExtensions() {
93+
File ext1 = TestUtilities.createTmpFile("ext1");
94+
String ext1Encoded = Base64.getEncoder().encodeToString("ext1".getBytes());
95+
File ext2 = TestUtilities.createTmpFile("ext2");
96+
String ext2Encoded = Base64.getEncoder().encodeToString("ext2".getBytes());
97+
98+
ChromeOptions one = new ChromeOptions().addExtensions(ext1);
99+
ChromeOptions two = new ChromeOptions().addExtensions(ext2);
100+
ChromeOptions merged = one.merge(two);
101+
102+
assertThat(merged.asMap()).asInstanceOf(MAP)
103+
.extractingByKey(ChromeOptions.CAPABILITY).asInstanceOf(MAP)
104+
.extractingByKey("extensions").asInstanceOf(LIST)
105+
.containsExactly(ext1Encoded, ext2Encoded);
106+
}
107+
108+
@Test
109+
public void mergingOptionsMergesEncodedExtensionsAndFileExtensions() {
110+
File ext1 = TestUtilities.createTmpFile("ext1");
111+
String ext1Encoded = Base64.getEncoder().encodeToString("ext1".getBytes());
112+
String ext2 = Base64.getEncoder().encodeToString("ext2".getBytes());
113+
114+
ChromeOptions one = new ChromeOptions().addExtensions(ext1);
115+
ChromeOptions two = new ChromeOptions().addEncodedExtensions(ext2);
116+
ChromeOptions merged = one.merge(two);
117+
118+
assertThat(merged.asMap()).asInstanceOf(MAP)
119+
.extractingByKey(ChromeOptions.CAPABILITY).asInstanceOf(MAP)
120+
.extractingByKey("extensions").asInstanceOf(LIST)
121+
.containsExactly(ext1Encoded, ext2);
122+
}
123+
124+
@Test
125+
public void mergingOptionsMergesExperimentalOptions() {
126+
ChromeOptions one = new ChromeOptions()
127+
.setExperimentalOption("opt1", "val1")
128+
.setExperimentalOption("opt2", "val2");
129+
ChromeOptions two = new ChromeOptions()
130+
.setExperimentalOption("opt2", "val4")
131+
.setExperimentalOption("opt3", "val3");
132+
ChromeOptions merged = one.merge(two);
133+
134+
assertThat(merged.asMap()).asInstanceOf(MAP)
135+
.extractingByKey(ChromeOptions.CAPABILITY).asInstanceOf(MAP)
136+
.containsEntry("opt1", "val1")
137+
.containsEntry("opt2", "val4")
138+
.containsEntry("opt3", "val3");
139+
}
72140
}

java/client/test/org/openqa/selenium/testing/TestUtilities.java

+16
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
2626
import org.openqa.selenium.remote.CapabilityType;
2727

28+
import java.io.File;
29+
import java.io.IOException;
30+
import java.io.UncheckedIOException;
31+
import java.nio.charset.StandardCharsets;
32+
import java.nio.file.Files;
2833
import java.util.Map;
2934
import java.util.regex.Matcher;
3035
import java.util.regex.Pattern;
@@ -178,4 +183,15 @@ public static boolean isOnTravis() {
178183
public static boolean isOnGitHubActions() {
179184
return Boolean.parseBoolean(System.getenv("GITHUB_ACTIONS"));
180185
}
186+
187+
public static File createTmpFile(String content) {
188+
try {
189+
File f = File.createTempFile("webdriver", "tmp");
190+
f.deleteOnExit();
191+
Files.write(f.toPath(), content.getBytes(StandardCharsets.UTF_8));
192+
return f;
193+
} catch (IOException e) {
194+
throw new UncheckedIOException(e);
195+
}
196+
}
181197
}

0 commit comments

Comments
 (0)