diff options
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_select_page_with_serviceworker.js')
-rw-r--r-- | devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_select_page_with_serviceworker.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_select_page_with_serviceworker.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_select_page_with_serviceworker.js new file mode 100644 index 0000000000..41e69a0d42 --- /dev/null +++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_select_page_with_serviceworker.js @@ -0,0 +1,78 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"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); +}); |