Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
describe("setting-pane", () => {
let doc, win, testSubPaneButton;
beforeEach(async function setup() {
await openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true });
doc = gBrowser.selectedBrowser.contentDocument;
win = doc.ownerGlobal;
testSubPaneButton = doc.createElement("moz-button");
testSubPaneButton.hidden = true;
testSubPaneButton.setAttribute("data-category", "panePrivacy");
testSubPaneButton.textContent = "Go to test pane";
testSubPaneButton.addEventListener("click", () =>
win.gotoPref("paneTestSubPane")
);
let privacyHeading = doc.getElementById("browserPrivacyCategory");
privacyHeading.insertAdjacentElement("afterend", testSubPaneButton);
win.Preferences.addSetting({
id: "testSetting",
get: () => true,
});
win.SettingGroupManager.registerGroup("testGroup", {
l10nId: "downloads-header-2",
headingLevel: 2,
items: [
{
id: "testSetting",
controlAttrs: {
label: "Test setting",
},
},
],
});
win.SettingPaneManager.registerPane("testSubPane", {
parent: "privacy",
l10nId: "containers-section-header",
groupIds: ["testGroup"],
});
});
afterEach(() => BrowserTestUtils.removeTab(gBrowser.selectedTab));
it("can load/go back sub-pane", async () => {
let pane = doc.querySelector(
'setting-pane[data-category="paneTestSubPane"]'
);
is_element_hidden(pane, "Sub pane is initially hidden");
// Load the privacy pane
let paneLoaded = waitForPaneChange("privacy");
EventUtils.synthesizeMouseAtCenter(
doc.getElementById("category-privacy"),
{},
win
);
await paneLoaded;
// Load the sub pane
paneLoaded = waitForPaneChange("testSubPane");
EventUtils.synthesizeMouseAtCenter(testSubPaneButton, {}, win);
await paneLoaded;
is_element_visible(pane, "Page header is visible");
ok(pane, "There is a setting pane");
await pane.updateComplete;
let pageHeader = pane.pageHeaderEl;
ok(pageHeader, "There is a page header");
is(
pageHeader.dataset.l10nId,
"containers-section-header",
"Page header has its l10nId"
);
let heading = pageHeader.headingEl;
ok(heading, "There is a heading in the header");
ok(heading.innerText, "The heading has text");
is(heading.innerText, pageHeader.heading, "The text is localized");
let backButton = pageHeader.backButtonEl;
ok(backButton, "There is a back button");
// Go back
paneLoaded = waitForPaneChange("privacy");
EventUtils.synthesizeMouseAtCenter(backButton, {}, win);
await paneLoaded;
is_element_hidden(pane, "Sub pane is hidden again");
});
});