commit fa3d7c3009495ba39c6c04c115946cf58c389773
parent ee1c5b8158bdac2a799d36ac30783bf897ee2fde
Author: Emma Zuehlcke <emz@mozilla.com>
Date: Tue, 30 Sep 2025 15:22:26 +0000
Bug 1971439 - Update tests for updated Cookies and Site Data section. r=mstriemer
Differential Revision: https://phabricator.services.mozilla.com/D263917
Diffstat:
9 files changed, 90 insertions(+), 37 deletions(-)
diff --git a/browser/components/preferences/tests/browser_cookies_exceptions.js b/browser/components/preferences/tests/browser_cookies_exceptions.js
@@ -537,7 +537,14 @@ async function runTest(test, getObservances) {
let promiseSubDialogLoaded = promiseLoadSubDialog(
"chrome://browser/content/preferences/dialogs/permissions.xhtml"
);
- doc.getElementById("cookieExceptions").doCommand();
+
+ let cookieExceptionsButton = doc.getElementById("cookieExceptions");
+ cookieExceptionsButton.scrollIntoView();
+ await EventUtils.synthesizeMouseAtCenter(
+ cookieExceptionsButton,
+ {},
+ doc.ownerGlobal
+ );
let win = await promiseSubDialogLoaded;
diff --git a/browser/components/preferences/tests/browser_ignore_invalid_capability.js b/browser/components/preferences/tests/browser_ignore_invalid_capability.js
@@ -26,7 +26,14 @@ add_task(async function testInvalidCapabilityIgnored() {
let promiseSubDialogLoaded = promiseLoadSubDialog(
"chrome://browser/content/preferences/dialogs/permissions.xhtml"
);
- doc.getElementById("cookieExceptions").doCommand();
+
+ let cookieExceptionsButton = doc.getElementById("cookieExceptions");
+ cookieExceptionsButton.scrollIntoView();
+ EventUtils.synthesizeMouseAtCenter(
+ cookieExceptionsButton,
+ {},
+ doc.ownerGlobal
+ );
let win = await promiseSubDialogLoaded;
doc = win.document;
diff --git a/browser/components/preferences/tests/browser_privacy_syncDataClearing.js b/browser/components/preferences/tests/browser_privacy_syncDataClearing.js
@@ -199,6 +199,9 @@ add_task(async function test_syncWithCustomPrefs() {
alwaysClearBox.click();
+ // Wait for UI to update.
+ await new Promise(resolve => requestAnimationFrame(resolve));
+
ok(!alwaysClearBox.checked, "AlwaysClear is deselected");
is(
deleteOnCloseBox.checked,
diff --git a/browser/components/preferences/tests/browser_privacy_syncDataClearing_v2.js b/browser/components/preferences/tests/browser_privacy_syncDataClearing_v2.js
@@ -226,6 +226,9 @@ add_task(async function test_syncWithCustomPrefs() {
alwaysClearBox.click();
+ // Wait for UI to update.
+ await new Promise(resolve => requestAnimationFrame(resolve));
+
ok(!alwaysClearBox.checked, "AlwaysClear is deselected");
is(
deleteOnCloseBox.checked,
diff --git a/browser/components/preferences/tests/privacypane_tests_perwindow.js b/browser/components/preferences/tests/privacypane_tests_perwindow.js
@@ -142,9 +142,9 @@ function test_dependent_elements(win) {
check_independents(false);
}
-function test_dependent_cookie_elements(win) {
+async function test_dependent_cookie_elements(win) {
let deleteOnCloseCheckbox = win.document.getElementById("deleteOnClose");
- let deleteOnCloseNote = win.document.getElementById("deleteOnCloseNote");
+ let deleteOnCloseNote = win.document.getElementById("deleteOnCloseInfo");
let blockCookiesMenu = win.document.getElementById("blockCookiesMenu");
let controls = [blockCookiesMenu, deleteOnCloseCheckbox];
@@ -171,10 +171,12 @@ function test_dependent_cookie_elements(win) {
blockCookiesCheckbox.checked = true;
controlChanged(blockCookiesCheckbox);
+ await new Promise(resolve => requestAnimationFrame(resolve));
expect_disabled(false);
blockCookiesCheckbox.checked = false;
controlChanged(blockCookiesCheckbox);
+ await new Promise(resolve => requestAnimationFrame(resolve));
expect_disabled(true, [blockCookiesMenu]);
expect_disabled(false, [deleteOnCloseCheckbox]);
is_element_hidden(
@@ -184,6 +186,7 @@ function test_dependent_cookie_elements(win) {
blockCookiesMenu.value = "always";
controlChanged(blockCookiesMenu);
+ await new Promise(resolve => requestAnimationFrame(resolve));
expect_disabled(true, [deleteOnCloseCheckbox]);
expect_disabled(false, [blockCookiesMenu]);
is_element_hidden(
@@ -197,6 +200,7 @@ function test_dependent_cookie_elements(win) {
blockCookiesMenu.value = "unvisited";
}
controlChanged(blockCookiesMenu);
+ await new Promise(resolve => requestAnimationFrame(resolve));
expect_disabled(false);
let historymode = win.document.getElementById("historyMode");
@@ -205,6 +209,7 @@ function test_dependent_cookie_elements(win) {
// disable the "keep cookies until..." menu.
historymode.value = "dontremember";
controlChanged(historymode);
+ await new Promise(resolve => requestAnimationFrame(resolve));
expect_disabled(true, [deleteOnCloseCheckbox]);
is_element_visible(
deleteOnCloseNote,
@@ -214,6 +219,7 @@ function test_dependent_cookie_elements(win) {
historymode.value = "remember";
controlChanged(historymode);
+ await new Promise(resolve => requestAnimationFrame(resolve));
expect_disabled(false);
is_element_hidden(
deleteOnCloseNote,
diff --git a/browser/components/preferences/tests/siteData/browser_clearSiteData.js b/browser/components/preferences/tests/siteData/browser_clearSiteData.js
@@ -52,8 +52,10 @@ async function testClearData(clearSiteData, clearCache) {
gBrowser.selectedBrowser,
[],
async function () {
- let sizeLabel = content.document.getElementById("totalSiteDataSize");
- return sizeLabel.textContent;
+ let siteDataSizeItem = content.document.getElementById("siteDataSize");
+ // The <strong> element contains the data size.
+ let usage = siteDataSizeItem.querySelector("strong");
+ return usage.textContent;
}
);
@@ -62,7 +64,12 @@ async function testClearData(clearSiteData, clearCache) {
let url = "chrome://browser/content/preferences/dialogs/clearSiteData.xhtml";
let dialogOpened = promiseLoadSubDialog(url);
- clearSiteDataButton.doCommand();
+ clearSiteDataButton.scrollIntoView();
+ EventUtils.synthesizeMouseAtCenter(
+ clearSiteDataButton.buttonEl,
+ {},
+ doc.ownerGlobal
+ );
let dialogWin = await dialogOpened;
// Convert the usage numbers in the same way the UI does it to assert
@@ -176,11 +183,12 @@ async function testClearData(clearSiteData, clearCache) {
gBrowser.selectedBrowser,
[{ initialSizeLabelValue }],
async function (opts) {
- let sizeLabel = content.document.getElementById("totalSiteDataSize");
- await ContentTaskUtils.waitForCondition(
- () => sizeLabel.textContent != opts.initialSizeLabelValue,
- "Site data size label should have updated."
- );
+ let siteDataSizeItem = content.document.getElementById("siteDataSize");
+ let usage = siteDataSizeItem.querySelector("strong");
+ let siteDataSizeText = usage.textContent;
+ await ContentTaskUtils.waitForCondition(() => {
+ return siteDataSizeText != opts.initialSizeLabelValue;
+ }, "Site data size label should have updated.");
}
);
}
diff --git a/browser/components/preferences/tests/siteData/browser_clearSiteData_v2.js b/browser/components/preferences/tests/siteData/browser_clearSiteData_v2.js
@@ -52,8 +52,11 @@ async function testClearData(clearSiteData, clearCache) {
gBrowser.selectedBrowser,
[],
async function () {
- let sizeLabel = content.document.getElementById("totalSiteDataSize");
- return sizeLabel.textContent;
+ let siteDataSizeItem = content.document.getElementById("siteDataSize");
+ // The <strong> element contains the data size.
+ let usage = siteDataSizeItem.querySelector("strong");
+ let siteDataSizeText = usage.textContent;
+ return siteDataSizeText;
}
);
@@ -62,7 +65,7 @@ async function testClearData(clearSiteData, clearCache) {
let url = "chrome://browser/content/sanitize_v2.xhtml";
let dialogOpened = promiseLoadSubDialog(url);
- clearSiteDataButton.doCommand();
+ clearSiteDataButton.click();
let dialogWin = await dialogOpened;
// Convert the usage numbers in the same way the UI does it to assert
@@ -166,11 +169,13 @@ async function testClearData(clearSiteData, clearCache) {
gBrowser.selectedBrowser,
[{ initialSizeLabelValue }],
async function (opts) {
- let sizeLabel = content.document.getElementById("totalSiteDataSize");
- await ContentTaskUtils.waitForCondition(
- () => sizeLabel.textContent != opts.initialSizeLabelValue,
- "Site data size label should have updated."
- );
+ let siteDataSizeItem = content.document.getElementById("siteDataSize");
+ // The <strong> element contains the data size.
+ let usage = siteDataSizeItem.querySelector("strong");
+ let siteDataSizeText = usage.textContent;
+ await ContentTaskUtils.waitForCondition(() => {
+ return siteDataSizeText != opts.initialSizeLabelValue;
+ }, "Site data size label should have updated.");
}
);
}
@@ -234,7 +239,7 @@ add_task(async function testPersistentStorage() {
let url = "chrome://browser/content/sanitize_v2.xhtml";
let dialogOpened = promiseLoadSubDialog(url);
- clearSiteDataButton.doCommand();
+ clearSiteDataButton.click();
let dialogWin = await dialogOpened;
let dialogClosed = BrowserTestUtils.waitForEvent(dialogWin, "unload");
diff --git a/browser/components/preferences/tests/siteData/browser_siteData.js b/browser/components/preferences/tests/siteData/browser_siteData.js
@@ -17,7 +17,7 @@ function getPersistentStoragePermStatus(origin) {
// Test listing site using quota usage or site using appcache
// This is currently disabled because of bug 1414751.
-add_task(async function () {
+add_task(async function test_list_sites() {
// Open a test site which would save into appcache
await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_OFFLINE_URL);
BrowserTestUtils.removeTab(gBrowser.selectedTab);
@@ -69,7 +69,7 @@ add_task(async function () {
}).skip(); // Bug 1414751
// Test buttons are disabled and loading message shown while updating sites
-add_task(async function () {
+add_task(async function test_ui_loading_state() {
let updatedPromise = promiseSiteDataManagerSitesUpdated();
await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
await updatedPromise;
@@ -78,7 +78,7 @@ add_task(async function () {
let doc = gBrowser.selectedBrowser.contentDocument;
let clearBtn = doc.getElementById("clearSiteDataButton");
let settingsButton = doc.getElementById("siteDataSettings");
- let totalSiteDataSizeLabel = doc.getElementById("totalSiteDataSize");
+ let totalSiteDataSizeLabel = doc.getElementById("siteDataSize");
is(
clearBtn.disabled,
false,
@@ -94,7 +94,7 @@ add_task(async function () {
Assert.deepEqual(
doc.l10n.getAttributes(totalSiteDataSizeLabel),
{
- id: "sitedata-total-size",
+ id: "sitedata-total-size2",
args: { value, unit },
},
"Should show the right total site data size"
@@ -102,6 +102,9 @@ add_task(async function () {
});
Services.obs.notifyObservers(null, "sitedatamanager:updating-sites");
+ // Wait a tick for the UI to update.
+ await new Promise(resolve => requestAnimationFrame(resolve));
+
is(
clearBtn.disabled,
true,
@@ -112,16 +115,16 @@ add_task(async function () {
true,
"Should disable settings button while updating sites"
);
- Assert.deepEqual(
- doc.l10n.getAttributes(totalSiteDataSizeLabel),
- {
- id: "sitedata-total-size-calculating",
- args: null,
- },
+ Assert.equal(
+ doc.l10n.getAttributes(totalSiteDataSizeLabel).id,
+ "sitedata-total-size-calculating",
"Should show the loading message while updating"
);
Services.obs.notifyObservers(null, "sitedatamanager:sites-updated");
+ // Wait a tick for the UI to update.
+ await new Promise(resolve => setTimeout(resolve, 0));
+
is(
clearBtn.disabled,
false,
@@ -138,7 +141,7 @@ add_task(async function () {
Assert.deepEqual(
doc.l10n.getAttributes(totalSiteDataSizeLabel),
{
- id: "sitedata-total-size",
+ id: "sitedata-total-size2",
args: { value, unit },
},
"Should show the right total site data size"
@@ -149,7 +152,7 @@ add_task(async function () {
});
// Test clearing service worker through the settings panel
-add_task(async function () {
+add_task(async function test_clear_service_worker() {
// Register a test service worker
await loadServiceWorkerTestPage(TEST_SERVICE_WORKER_URL);
await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
@@ -186,7 +189,7 @@ add_task(async function () {
});
// Test showing and removing sites with cookies.
-add_task(async function () {
+add_task(async function test_manage_sites_with_cookies() {
// Add some test cookies.
let uri = Services.io.newURI("https://example.com");
let uri2 = Services.io.newURI("https://example.org");
diff --git a/browser/components/preferences/tests/siteData/head.js b/browser/components/preferences/tests/siteData/head.js
@@ -132,7 +132,7 @@ function openPreferencesViaOpenPreferencesAPI(aPane, aOptions) {
});
}
-function openSiteDataSettingsDialog() {
+async function openSiteDataSettingsDialog() {
let doc = gBrowser.selectedBrowser.contentDocument;
let settingsBtn = doc.getElementById("siteDataSettings");
let dialogOverlay = content.gSubDialog._preloadDialog._overlay;
@@ -149,8 +149,19 @@ function openSiteDataSettingsDialog() {
]).then(() => {
is_element_visible(dialogOverlay, "The Settings dialog should be visible");
});
- settingsBtn.doCommand();
- return fullyLoadPromise;
+ // Wait for the dialog button to be enabled. It is disabled while
+ // SiteDataManager updates the site list and usage.
+ await BrowserTestUtils.waitForMutationCondition(
+ settingsBtn,
+ {
+ attributeFilter: ["disabled"],
+ },
+ () => {
+ return !settingsBtn.disabled;
+ }
+ );
+ settingsBtn.click();
+ await fullyLoadPromise;
}
function promiseSettingsDialogClose() {