Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
const NETWORK_RUNTIME_HOST = "localhost:6080";
const NETWORK_RUNTIME_APP_NAME = "TestNetworkApp";
const WORKER_NAME = "testserviceworker";
// Test that navigating from:
// - a remote runtime page that contains a service worker
// to:
// - this firefox
// does not crash. See Bug 1519088.
add_task(async function () {
const mocks = new Mocks();
const { document, tab, window } = await openAboutDebugging({
enableWorkerUpdates: true,
});
await selectThisFirefoxPage(document, window.AboutDebugging.store);
info("Prepare Network client mock");
const networkClient = mocks.createNetworkRuntime(NETWORK_RUNTIME_HOST, {
name: NETWORK_RUNTIME_APP_NAME,
});
info("Connect and select the network runtime");
await connectToRuntime(NETWORK_RUNTIME_HOST, document);
await selectRuntime(NETWORK_RUNTIME_HOST, NETWORK_RUNTIME_APP_NAME, document);
info(`Add a service worker to the network client`);
const workers = {
otherWorkers: [],
serviceWorkers: [
{
name: WORKER_NAME,
workerDescriptorFront: { actorID: WORKER_NAME },
},
],
sharedWorkers: [],
};
networkClient.listWorkers = () => workers;
networkClient._eventEmitter.emit("workersUpdated");
info("Wait until the service worker is displayed");
await waitUntil(() => findDebugTargetByText(WORKER_NAME, document));
info("Go to This Firefox again");
const thisFirefoxString = getThisFirefoxString(window);
const thisFirefoxSidebarItem = findSidebarItemByText(
thisFirefoxString,
document
);
const thisFirefoxLink =
thisFirefoxSidebarItem.querySelector(".qa-sidebar-link");
info("Click on the ThisFirefox item in the sidebar");
const requestsSuccess = waitForRequestsSuccess(window.AboutDebugging.store);
thisFirefoxLink.click();
info("Wait for all target requests to complete");
await requestsSuccess;
info("Check that the runtime info is rendered for This Firefox");
const thisFirefoxRuntimeInfo = document.querySelector(".qa-runtime-name");
ok(
thisFirefoxRuntimeInfo,
"Runtime info for this-firefox runtime is displayed"
);
const text = thisFirefoxRuntimeInfo.textContent;
ok(
text.includes("Firefox") && text.includes("63.0"),
"this-firefox runtime info shows the correct values"
);
await removeTab(tab);
});