Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const { FirefoxLabs } = ChromeUtils.importESModule(
"resource://nimbus/FirefoxLabs.sys.mjs"
);
add_setup(async function setup() {
const cleanup = await setupLabsTest();
registerCleanupFunction(cleanup);
});
// This test verifies that pressing the reset all button for experimental features
// resets all of the checkboxes to their default state.
add_task(async function testResetAll() {
await BrowserTestUtils.openNewForegroundTab(
gBrowser,
`about:preferences#paneExperimental`
);
const doc = gBrowser.contentDocument;
await TestUtils.waitForCondition(
() => doc.querySelector(".featureGate"),
"wait for features to be added to the DOM"
);
const qa1El = doc.getElementById("nimbus-qa-1");
const qa2El = doc.getElementById("nimbus-qa-2");
ok(
!ExperimentAPI._manager.store.get("nimbus-qa-1")?.active,
"Should not enroll in nimbus-qa-1"
);
ok(
!ExperimentAPI._manager.store.get("nimbus-qa-2")?.active,
"Should not enroll in nimbus-qa-2"
);
ok(!qa1El.checked, "nimbus-qa-1 checkbox unchecked");
ok(!qa2El.checked, "nimbus-qa-2 checkbox unchecked");
// Modify the state of some of the features.
await enrollByClick(qa1El, true);
await enrollByClick(qa2El, true);
ok(
ExperimentAPI._manager.store.get("nimbus-qa-1")?.active,
"Should enroll in nimbus-qa-1"
);
ok(
ExperimentAPI._manager.store.get("nimbus-qa-2")?.active,
"Should enroll in nimbus-qa-2"
);
ok(qa1El.checked, "nimbus-qa-1 checkbox checked");
ok(qa2El.checked, "nimbus-qa-2 checkbox checked");
const unenrollPromises = [
promiseNimbusStoreUpdate("nimbus-qa-1", false),
promiseNimbusStoreUpdate("nimbus-qa-2", false),
];
doc.getElementById("experimentalCategory-reset").click();
await Promise.all(unenrollPromises);
ok(
!ExperimentAPI._manager.store.get("nimbus-qa-1")?.active,
"Should unenroll from nimbus-qa-1"
);
ok(
!ExperimentAPI._manager.store.get("nimbus-qa-2")?.active,
"Should unenroll from nimbus-qa-2"
);
ok(!qa1El.checked, "nimbus-qa-1 checkbox unchecked");
ok(!qa2El.checked, "nimbus-qa-2 checkbox unchecked");
BrowserTestUtils.removeTab(gBrowser.selectedTab);
});