Skip to content

Commit 003329d

Browse files
authored
fix ignored firefox prefs (#1437)
1 parent afb12b4 commit 003329d

2 files changed

Lines changed: 36 additions & 0 deletions

File tree

src/main/java/com/codeborne/selenide/webdriver/FirefoxDriverFactory.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public FirefoxOptions createCapabilities(Config config, Browser browser,
6868
if (!ffProfile.isEmpty()) {
6969
transferFirefoxProfileFromSystemProperties(firefoxOptions, ffProfile);
7070
}
71+
injectFirefoxPrefs(firefoxOptions);
7172
return firefoxOptions;
7273
}
7374

@@ -151,4 +152,22 @@ else if (isInteger(value)) {
151152
profile.setPreference(capability, value);
152153
}
153154
}
155+
156+
private void injectFirefoxPrefs(FirefoxOptions options) {
157+
if (Optional.ofNullable(options.getCapability("moz:firefoxOptions")).isPresent()) {
158+
Map<String, Map<String, Object>> mozOptions = (Map<String, Map<String, Object>>) options.getCapability("moz:firefoxOptions");
159+
160+
if (mozOptions.containsKey("prefs")) {
161+
for (Map.Entry<String, Object> pref : mozOptions.get("prefs").entrySet()) {
162+
if (pref.getValue() instanceof String) {
163+
options.addPreference(pref.getKey(), (String) pref.getValue());
164+
} else if (pref.getValue() instanceof Integer) {
165+
options.addPreference(pref.getKey(), (Integer) pref.getValue());
166+
} else if (pref.getValue() instanceof Boolean) {
167+
options.addPreference(pref.getKey(), (Boolean) pref.getValue());
168+
}
169+
}
170+
}
171+
}
172+
}
154173
}

src/test/java/com/codeborne/selenide/webdriver/FirefoxDriverFactoryTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,23 @@ void shouldNotSetupDownloadFolder_forRemoteWebdriver() {
164164
assertThat(options.getProfile()).isNull();
165165
}
166166

167+
@Test
168+
public void injectPrefs() {
169+
FirefoxOptions firefoxOptions = new FirefoxOptions();
170+
firefoxOptions.addPreference("general.useragent.override", "my agent");
171+
firefoxOptions.addPreference("boolean pref", true);
172+
firefoxOptions.addPreference("int pref", 10);
173+
config.browserCapabilities(new DesiredCapabilities(firefoxOptions));
174+
175+
Map<String, Object> options = driverFactory.createCapabilities(config, browser, proxy, null).asMap();
176+
assertThat(options.get("moz:firefoxOptions") != null);
177+
178+
Map<String, Object> prefs = (Map<String, Object>) ((Map<String, Object>) options.get("moz:firefoxOptions")).get("prefs");
179+
assertThat(prefs.get("general.useragent.override")).isEqualTo("my agent");
180+
assertThat(prefs.get("boolean pref")).isEqualTo(true);
181+
assertThat(prefs.get("int pref")).isEqualTo(10);
182+
}
183+
167184
@SuppressWarnings("unchecked")
168185
private Map<String, Object> prefs(FirefoxOptions options) {
169186
Map<String, Object> firefoxOptions = (Map<String, Object>) options.asMap().get("moz:firefoxOptions");

0 commit comments

Comments
 (0)