Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
const SHOW_SEARCH_PREF = "browser.newtabpage.activity-stream.showSearch";
const SHOW_WEATHER_SYSTEM_PREF =
"browser.newtabpage.activity-stream.system.showWeather";
const SHOW_WEATHER_PREF = "browser.newtabpage.activity-stream.showWeather";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [
["browser.settings-redesign.enabled", true],
// Opening preferences initializes FxA code which sets this pref.
// Track it to avoid test warnings.
["identity.fxaccounts.account.device.name", ""],
],
});
});
add_task(async function test_firefox_home_section_visible() {
let { doc, tab } = await openHomePreferences();
let homeGroup = doc.querySelector('setting-group[groupid="home"]');
ok(homeGroup, "Firefox Home setting group exists");
ok(BrowserTestUtils.isVisible(homeGroup), "Firefox Home section is visible");
let fieldset = homeGroup.querySelector("moz-fieldset");
ok(fieldset, "Firefox Home moz-fieldset exists");
await fieldset.updateComplete;
let heading = fieldset.shadowRoot.querySelector("h2");
ok(heading, "Firefox Home heading exists in shadow DOM");
Assert.greater(
heading.textContent.length,
0,
"Firefox Home heading has localized text"
);
let icon = fieldset.shadowRoot.querySelector('img[src*="home.svg"]');
ok(icon, "Firefox Home icon is present in shadow DOM");
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_web_search_toggle() {
await SpecialPowers.pushPrefEnv({
set: [[SHOW_SEARCH_PREF, true]],
});
let { win, tab } = await openHomePreferences();
let webSearchControl = await settingControlRenders("webSearch", win);
ok(webSearchControl, "Web search control exists");
let toggle = webSearchControl.querySelector("moz-toggle");
ok(toggle, "Web search toggle element exists");
ok(toggle.pressed, "Web search toggle is initially checked");
let prefChanged = waitForPrefChange(SHOW_SEARCH_PREF, false);
toggle.click();
await prefChanged;
await waitForToggleState(toggle, false);
ok(
!Services.prefs.getBoolPref(SHOW_SEARCH_PREF),
"Web search pref is now false"
);
ok(!toggle.pressed, "Web search toggle is now unchecked");
prefChanged = waitForPrefChange(SHOW_SEARCH_PREF, true);
toggle.click();
await prefChanged;
await waitForToggleState(toggle, true);
ok(
Services.prefs.getBoolPref(SHOW_SEARCH_PREF),
"Web search pref is now true"
);
ok(toggle.pressed, "Web search toggle is now checked");
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_weather_widget_visibility() {
await SpecialPowers.pushPrefEnv({
set: [[SHOW_WEATHER_SYSTEM_PREF, false]],
});
let { win, tab } = await openHomePreferences();
let weatherWrapper = getSettingControl("weather", win);
ok(
!weatherWrapper || BrowserTestUtils.isHidden(weatherWrapper),
"Weather control is hidden when system pref is false"
);
BrowserTestUtils.removeTab(tab);
await SpecialPowers.pushPrefEnv({
set: [[SHOW_WEATHER_SYSTEM_PREF, true]],
});
({ win, tab } = await openHomePreferences());
weatherWrapper = await settingControlRenders("weather", win);
ok(weatherWrapper, "Weather control exists when system pref is true");
ok(
BrowserTestUtils.isVisible(weatherWrapper),
"Weather control is visible when system pref is true"
);
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_weather_toggle_functionality() {
await SpecialPowers.pushPrefEnv({
set: [
[SHOW_WEATHER_SYSTEM_PREF, true],
[SHOW_WEATHER_PREF, true],
],
});
let { win, tab } = await openHomePreferences();
let weatherControl = await settingControlRenders("weather", win);
ok(weatherControl, "Weather control exists");
let toggle = weatherControl.querySelector("moz-toggle");
ok(toggle, "Weather toggle element exists");
ok(toggle.pressed, "Weather toggle is initially checked");
let prefChanged = waitForPrefChange(SHOW_WEATHER_PREF, false);
toggle.click();
await prefChanged;
await waitForToggleState(toggle, false);
ok(
!Services.prefs.getBoolPref(SHOW_WEATHER_PREF),
"Weather pref is now false"
);
ok(!toggle.pressed, "Weather toggle is now unchecked");
prefChanged = waitForPrefChange(SHOW_WEATHER_PREF, true);
toggle.click();
await prefChanged;
await waitForToggleState(toggle, true);
ok(Services.prefs.getBoolPref(SHOW_WEATHER_PREF), "Weather pref is now true");
ok(toggle.pressed, "Weather toggle is now checked");
BrowserTestUtils.removeTab(tab);
});