summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/browser_hometab_restore_defaults.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/tests/browser_hometab_restore_defaults.js')
-rw-r--r--browser/components/preferences/tests/browser_hometab_restore_defaults.js220
1 files changed, 220 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/browser_hometab_restore_defaults.js b/browser/components/preferences/tests/browser_hometab_restore_defaults.js
new file mode 100644
index 0000000000..55a9a974b2
--- /dev/null
+++ b/browser/components/preferences/tests/browser_hometab_restore_defaults.js
@@ -0,0 +1,220 @@
+add_task(async function testRestoreDefaultsBtn_visible() {
+ const before = SpecialPowers.Services.prefs.getStringPref(
+ "browser.newtabpage.activity-stream.feeds.section.topstories.options",
+ ""
+ );
+
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ // Hide Pocket prefs so we don't trigger network requests when we reset all preferences
+ [
+ "browser.newtabpage.activity-stream.feeds.section.topstories.options",
+ JSON.stringify(Object.assign({}, JSON.parse(before), { hidden: true })),
+ ],
+ [
+ "browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear",
+ "",
+ ],
+ // Set a user pref to false to force the Restore Defaults button to be visible
+ ["browser.newtabpage.activity-stream.feeds.topsites", false],
+ ],
+ });
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ "about:preferences#home",
+ false
+ );
+ let browser = tab.linkedBrowser;
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.getElementById("restoreDefaultHomePageBtn") !== null
+ ),
+ "Wait for the button to be added to the page"
+ );
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.querySelector(
+ "[data-subcategory='topsites'] checkbox"
+ ) !== null
+ ),
+ "Wait for the preference checkbox to load"
+ );
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.getElementById("restoreDefaultHomePageBtn")
+ .hidden === false
+ ),
+ "Should show the Restore Defaults btn because pref is changed"
+ );
+
+ await SpecialPowers.spawn(browser, [], () =>
+ content.document.getElementById("restoreDefaultHomePageBtn").click()
+ );
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.querySelector(
+ "[data-subcategory='topsites'] checkbox"
+ ).checked
+ ),
+ "Should have checked preference"
+ );
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.getElementById("restoreDefaultHomePageBtn").style
+ .visibility === "hidden"
+ ),
+ "Should not show the Restore Defaults btn if prefs were reset"
+ );
+
+ const topsitesPref = await SpecialPowers.Services.prefs.getBoolPref(
+ "browser.newtabpage.activity-stream.feeds.topsites"
+ );
+ Assert.ok(topsitesPref, "Topsites pref should have the default value");
+
+ await SpecialPowers.popPrefEnv();
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function testRestoreDefaultsBtn_hidden() {
+ const before = SpecialPowers.Services.prefs.getStringPref(
+ "browser.newtabpage.activity-stream.feeds.section.topstories.options",
+ ""
+ );
+
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ // Hide Pocket pref so we don't trigger network requests when we reset all preferences
+ [
+ "browser.newtabpage.activity-stream.feeds.section.topstories.options",
+ JSON.stringify(Object.assign({}, JSON.parse(before), { hidden: true })),
+ ],
+ [
+ "browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear",
+ "",
+ ],
+ ],
+ });
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ "about:preferences#home",
+ false
+ );
+ let browser = tab.linkedBrowser;
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.getElementById("restoreDefaultHomePageBtn") !== null
+ ),
+ "Wait for the button to be added to the page"
+ );
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.querySelector(
+ "[data-subcategory='topsites'] checkbox"
+ ) !== null
+ ),
+ "Wait for the preference checkbox to load"
+ );
+
+ const btnDefault = await SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.getElementById("restoreDefaultHomePageBtn").style
+ .visibility
+ );
+ Assert.equal(
+ btnDefault,
+ "hidden",
+ "When no prefs are changed button should not show up"
+ );
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.querySelector(
+ "[data-subcategory='topsites'] checkbox"
+ ).checked
+ ),
+ "Should have checked preference"
+ );
+
+ // Uncheck a pref
+ await SpecialPowers.spawn(browser, [], () =>
+ content.document
+ .querySelector("[data-subcategory='topsites'] checkbox")
+ .click()
+ );
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ !content.document.querySelector(
+ "[data-subcategory='topsites'] checkbox"
+ ).checked
+ ),
+ "Should have unchecked preference"
+ );
+
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ SpecialPowers.spawn(
+ browser,
+ [],
+ () =>
+ content.document.getElementById("restoreDefaultHomePageBtn").style
+ .visibility === ""
+ ),
+ "Should show the Restore Defaults btn if prefs were changed"
+ );
+
+ // Reset the pref
+ await SpecialPowers.Services.prefs.clearUserPref(
+ "browser.newtabpage.activity-stream.feeds.topsites"
+ );
+
+ await SpecialPowers.popPrefEnv();
+ BrowserTestUtils.removeTab(tab);
+});