diff options
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_targets_sorted.js')
-rw-r--r-- | devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_targets_sorted.js | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_targets_sorted.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_targets_sorted.js new file mode 100644 index 0000000000..4fc9bb87c0 --- /dev/null +++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_targets_sorted.js @@ -0,0 +1,111 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Check that all debug targets except tabs are sorted alphabetically. +add_task(async function () { + const thisFirefoxClient = setupThisFirefoxMock(); + + thisFirefoxClient.listAddons = () => [ + createAddonData({ id: "addon-b", name: "Addon B" }), + createAddonData({ id: "addon-c", name: "Addon C" }), + createAddonData({ id: "addon-a", name: "Addon A" }), + createAddonData({ id: "tmp-b", name: "Temporary B", temporary: true }), + createAddonData({ id: "tmp-c", name: "Temporary C", temporary: true }), + createAddonData({ id: "tmp-a", name: "Temporary A", temporary: true }), + ]; + + thisFirefoxClient.listWorkers = () => { + return { + otherWorkers: [ + { id: "worker-b", name: "Worker B" }, + { id: "worker-c", name: "Worker C" }, + { id: "worker-a", name: "Worker A" }, + ], + sharedWorkers: [ + { id: "shared-worker-b", name: "Shared Worker B" }, + { id: "shared-worker-c", name: "Shared Worker C" }, + { id: "shared-worker-a", name: "Shared Worker A" }, + ], + serviceWorkers: [ + { id: "service-worker-b", name: "Service Worker B" }, + { id: "service-worker-c", name: "Service Worker C" }, + { id: "service-worker-a", name: "Service Worker A" }, + ], + }; + }; + + thisFirefoxClient.listTabs = () => [ + { + browserId: 2, + title: "Tab B", + url: "https://www.b.com", + retrieveFavicon: () => {}, + }, + { + browserId: 3, + title: "Tab C", + url: "https://www.c.com", + retrieveFavicon: () => {}, + }, + { + browserId: 1, + title: "Tab A", + url: "https://www.a.com", + retrieveFavicon: () => {}, + }, + ]; + + const { document, tab, window } = await openAboutDebugging(); + await selectThisFirefoxPage(document, window.AboutDebugging.store); + + function findTargetIndex(name) { + const targets = [...document.querySelectorAll(".qa-debug-target-item")]; + return targets.findIndex(target => target.textContent.includes(name)); + } + + function assertTargetOrder(targetNames, message) { + let isSorted = true; + for (let i = 1; i < targetNames.length; i++) { + const index1 = findTargetIndex(targetNames[i - 1]); + const index2 = findTargetIndex(targetNames[i]); + if (index1 > index2) { + isSorted = false; + info( + `Targets ${targetNames[i - 1]} and ${targetNames[i]} ` + + `are not sorted as expected` + ); + } + } + + ok(isSorted, message); + } + + assertTargetOrder( + ["Tab B", "Tab C", "Tab A"], + "Tabs are sorted as returned by the back-end" + ); + assertTargetOrder( + ["Addon A", "Addon B", "Addon C"], + "Addons are sorted alphabetically" + ); + assertTargetOrder( + ["Temporary A", "Temporary B", "Temporary C"], + "Temporary addons are sorted alphabetically" + ); + assertTargetOrder( + ["Worker A", "Worker B", "Worker C"], + "Workers are sorted alphabetically" + ); + assertTargetOrder( + ["Shared Worker A", "Shared Worker B", "Shared Worker C"], + "Shared workers are sorted alphabetically" + ); + assertTargetOrder( + ["Service Worker A", "Service Worker B", "Service Worker C"], + "Service workers are sorted alphabetically" + ); + + await removeTab(tab); +}); |