Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* Any copyright is dedicated to the Public Domain.
"use strict";
const WORKER1_URL = URL_ROOT + "resources/service-workers/simple.html";
const WORKER2_URL = URL_ROOT + "resources/service-workers/debug.html";
add_task(async function () {
await enableApplicationPanel();
await openTabAndWaitForWorker(WORKER1_URL);
const { panel, tab, commands } = await openTabAndWaitForWorker(WORKER2_URL);
const doc = panel.panelWin.document;
let registrationContainer = getWorkerContainers(doc)[0];
info("Wait until the unregister button is displayed for the registration");
await waitUntil(() => {
registrationContainer = getWorkerContainers(doc)[0];
return registrationContainer.querySelector(".js-unregister-button");
});
const scopeEl = registrationContainer.querySelector(".js-sw-scope");
const expectedScope =
"example.com/browser/devtools/client/application/test/" +
"browser/resources/service-workers";
ok(
scopeEl.textContent.startsWith(expectedScope),
"Registration has the expected scope"
);
// check the workers data
// note that the worker from WORKER2_URL will appear second in the list with
// the "installed" state
info("Check the workers data for this registration");
const workers = registrationContainer.querySelectorAll(".js-sw-worker");
is(workers.length, 2, "Registration has two workers");
// check url for worker from WORKER1_URL
const url1El = workers[0].querySelector(".js-source-url");
is(url1El.textContent, "empty-sw.js", "First worker has correct URL");
// check url for worker from WORKER2_URL
const url2El = workers[1].querySelector(".js-source-url");
is(url2El.textContent, "debug-sw.js", "Second worker has correct URL");
await unregisterAllWorkers(commands.client, doc);
// close the tab
info("Closing the tab.");
await BrowserTestUtils.removeTab(tab);
});
async function openTabAndWaitForWorker(url) {
const { panel, commands, tab } = await openNewTabAndApplicationPanel(url);
const doc = panel.panelWin.document;
selectPage(panel, "service-workers");
info("Wait until the service worker appears in the application panel");
await waitUntil(() => getWorkerContainers(doc).length === 1);
return { panel, commands, tab };
}