121 lines
3.8 KiB
JavaScript
121 lines
3.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const EXPECTED_TARGET_PANES = [
|
|
"Tabs",
|
|
"Temporary Extensions",
|
|
"Extensions",
|
|
"Service Workers",
|
|
"Shared Workers",
|
|
"Other Workers",
|
|
];
|
|
|
|
/**
|
|
* Check that the This Firefox runtime page contains the expected categories if
|
|
* the preference to enable local tab debugging is true.
|
|
*/
|
|
add_task(async function testThisFirefoxWithLocalTab() {
|
|
const { document, tab, window } = await openAboutDebugging({
|
|
enableLocalTabs: true,
|
|
});
|
|
await selectThisFirefoxPage(document, window.AboutDebugging.store);
|
|
|
|
// Expect all target panes to be displayed including tabs.
|
|
await checkThisFirefoxTargetPanes(document, EXPECTED_TARGET_PANES);
|
|
|
|
await removeTab(tab);
|
|
});
|
|
|
|
/**
|
|
* Check that the This Firefox runtime page contains the expected categories if
|
|
* the preference to enable local tab debugging is false.
|
|
*/
|
|
add_task(async function testThisFirefoxWithoutLocalTab() {
|
|
const { document, tab, window } = await openAboutDebugging({
|
|
enableLocalTabs: false,
|
|
});
|
|
await selectThisFirefoxPage(document, window.AboutDebugging.store);
|
|
|
|
// Expect all target panes but tabs to be displayed.
|
|
const expectedTargetPanesWithoutTabs = EXPECTED_TARGET_PANES.filter(
|
|
p => p !== "Tabs"
|
|
);
|
|
await checkThisFirefoxTargetPanes(document, expectedTargetPanesWithoutTabs);
|
|
|
|
await removeTab(tab);
|
|
});
|
|
|
|
/**
|
|
* Check that the tab which is discarded keeps the state after open the aboutdebugging.
|
|
*/
|
|
add_task(async function testThisFirefoxKeepDiscardedTab() {
|
|
const targetTab = await addTab("https://example.com/");
|
|
const blankTab = await addTab("about:blank");
|
|
targetTab.ownerGlobal.gBrowser.discardBrowser(targetTab);
|
|
|
|
const { document, tab, window } = await openAboutDebugging({
|
|
enableLocalTabs: false,
|
|
});
|
|
await selectThisFirefoxPage(document, window.AboutDebugging.store);
|
|
|
|
ok(!targetTab.linkedPanel, "The target tab is still discarded");
|
|
|
|
await removeTab(blankTab);
|
|
await removeTab(targetTab);
|
|
await removeTab(tab);
|
|
});
|
|
|
|
/**
|
|
* Check that the Temporary Extensions is hidden if "xpinstall.enabled" is set to false.
|
|
*/
|
|
add_task(async function testThisFirefoxWithXpinstallDisabled() {
|
|
await pushPref("xpinstall.enabled", false);
|
|
|
|
const { document, tab, window } = await openAboutDebugging();
|
|
await selectThisFirefoxPage(document, window.AboutDebugging.store);
|
|
|
|
// Expect all target panes but temporary extensions to be displayed.
|
|
const expectedTargetPanesWithXpinstallDisabled = EXPECTED_TARGET_PANES.filter(
|
|
p => p !== "Temporary Extensions"
|
|
);
|
|
await checkThisFirefoxTargetPanes(
|
|
document,
|
|
expectedTargetPanesWithXpinstallDisabled
|
|
);
|
|
|
|
await removeTab(tab);
|
|
});
|
|
|
|
async function checkThisFirefoxTargetPanes(doc, expectedTargetPanes) {
|
|
const win = doc.ownerGlobal;
|
|
// Check that the selected sidebar item is "This Firefox"/"This Nightly"/...
|
|
const selectedSidebarItem = doc.querySelector(".qa-sidebar-item-selected");
|
|
ok(selectedSidebarItem, "An item is selected in the sidebar");
|
|
|
|
const thisFirefoxString = getThisFirefoxString(win);
|
|
is(
|
|
selectedSidebarItem.textContent,
|
|
thisFirefoxString,
|
|
"The selected sidebar item is " + thisFirefoxString
|
|
);
|
|
|
|
const paneTitlesEls = doc.querySelectorAll(".qa-debug-target-pane-title");
|
|
is(
|
|
paneTitlesEls.length,
|
|
expectedTargetPanes.length,
|
|
"This Firefox has the expected number of debug target categories"
|
|
);
|
|
|
|
const paneTitles = [...paneTitlesEls].map(el => el.textContent);
|
|
|
|
for (let i = 0; i < expectedTargetPanes.length; i++) {
|
|
const expectedPaneTitle = expectedTargetPanes[i];
|
|
const actualPaneTitle = paneTitles[i];
|
|
ok(
|
|
actualPaneTitle.startsWith(expectedPaneTitle),
|
|
`Expected debug target category found: ${expectedPaneTitle}`
|
|
);
|
|
}
|
|
}
|