|
59 | 59 | import java.nio.file.Paths; |
60 | 60 | import java.nio.file.attribute.PosixFilePermission; |
61 | 61 | import java.util.Arrays; |
| 62 | +import java.util.HashMap; |
62 | 63 | import java.util.List; |
63 | 64 | import java.util.Map; |
64 | 65 |
|
@@ -439,6 +440,68 @@ void mergingOptionsWithMutableCapabilities() { |
439 | 440 | assertThat(extractedProfile.getStringPreference(key, "-")).isEqualTo(value); |
440 | 441 | } |
441 | 442 |
|
| 443 | + @Test |
| 444 | + void mergingOptionsWithOptionsAsMutableCapabilities() throws IOException { |
| 445 | + Map<String, String> prefs = new HashMap<>(); |
| 446 | + prefs.put("opt1", "val1"); |
| 447 | + prefs.put("opt2", "val4"); |
| 448 | + |
| 449 | + String key = "browser.startup.homepage"; |
| 450 | + String value = "about:robots"; |
| 451 | + |
| 452 | + FirefoxProfile profile = new FirefoxProfile(); |
| 453 | + profile.setPreference(key, value); |
| 454 | + |
| 455 | + File binary = TestUtilities.createTmpFile("binary"); |
| 456 | + |
| 457 | + MutableCapabilities browserCaps = new MutableCapabilities(); |
| 458 | + |
| 459 | + browserCaps.setCapability("args", Arrays.asList("verbose", "silent")); |
| 460 | + browserCaps.setCapability("prefs", prefs); |
| 461 | + browserCaps.setCapability("profile", profile.toJson()); |
| 462 | + browserCaps.setCapability("binary", binary.getPath()); |
| 463 | + browserCaps.setCapability("log", DEBUG.toJson()); |
| 464 | + |
| 465 | + MutableCapabilities one = new MutableCapabilities(); |
| 466 | + one.setCapability(FIREFOX_OPTIONS, browserCaps); |
| 467 | + |
| 468 | + FirefoxOptions two = new FirefoxOptions(); |
| 469 | + two.addArguments("verbose"); |
| 470 | + two.addPreference("opt2", "val2"); |
| 471 | + two.addPreference("opt3", "val3"); |
| 472 | + two = two.merge(one); |
| 473 | + |
| 474 | + Map<String, Object> map = two.asMap(); |
| 475 | + |
| 476 | + assertThat(map).asInstanceOf(MAP) |
| 477 | + .extractingByKey(FIREFOX_OPTIONS).asInstanceOf(MAP) |
| 478 | + .extractingByKey("args").asInstanceOf(LIST) |
| 479 | + .containsExactly("verbose", "silent"); |
| 480 | + |
| 481 | + assertThat(map).asInstanceOf(MAP) |
| 482 | + .extractingByKey(FIREFOX_OPTIONS).asInstanceOf(MAP) |
| 483 | + .extractingByKey("prefs").asInstanceOf(MAP) |
| 484 | + .containsEntry("opt1", "val1") |
| 485 | + .containsEntry("opt2", "val4") |
| 486 | + .containsEntry("opt3", "val3"); |
| 487 | + |
| 488 | + assertThat(map).asInstanceOf(MAP) |
| 489 | + .extractingByKey(ACCEPT_INSECURE_CERTS).isExactlyInstanceOf(Boolean.class); |
| 490 | + |
| 491 | + assertThat(map).asInstanceOf(MAP) |
| 492 | + .extractingByKey(FIREFOX_OPTIONS).asInstanceOf(MAP) |
| 493 | + .extractingByKey("binary").asInstanceOf(STRING) |
| 494 | + .isEqualTo(binary.getPath()); |
| 495 | + |
| 496 | + assertThat(map).asInstanceOf(MAP) |
| 497 | + .extractingByKey(FIREFOX_OPTIONS).asInstanceOf(MAP) |
| 498 | + .extractingByKey("log").asInstanceOf(MAP) |
| 499 | + .containsEntry("level", "debug"); |
| 500 | + |
| 501 | + FirefoxProfile extractedProfile = two.getProfile(); |
| 502 | + assertThat(extractedProfile.getStringPreference(key, "-")).isEqualTo(value); |
| 503 | + } |
| 504 | + |
442 | 505 | @Test |
443 | 506 | void firefoxOptionsShouldEqualEquivalentImmutableCapabilities() { |
444 | 507 | FirefoxOptions |
|
0 commit comments