browser_aboutdebugging_serviceworker_runtime-page.js (2297B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 /* import-globals-from helper-serviceworker.js */ 7 Services.scriptloader.loadSubScript( 8 CHROME_URL_ROOT + "helper-serviceworker.js", 9 this 10 ); 11 /* import-globals-from helper-collapsibilities.js */ 12 Services.scriptloader.loadSubScript( 13 CHROME_URL_ROOT + "helper-collapsibilities.js", 14 this 15 ); 16 17 const SW_TAB_URL = URL_ROOT_SSL + "resources/service-workers/push-sw.html"; 18 const SW_URL = URL_ROOT_SSL + "resources/service-workers/push-sw.worker.js"; 19 20 /** 21 * Test that service workers appear and dissapear from the runtime page when they 22 * are registered / unregistered. 23 */ 24 add_task(async function () { 25 prepareCollapsibilitiesTest(); 26 await enableServiceWorkerDebugging(); 27 const { document, tab, window } = await openAboutDebugging({ 28 enableWorkerUpdates: true, 29 }); 30 const store = window.AboutDebugging.store; 31 32 await selectThisFirefoxPage(document, store); 33 34 // check that SW list is empty 35 info("Check that the SW pane is empty"); 36 let swPane = getDebugTargetPane("Service Workers", document); 37 ok(!swPane.querySelector(".qa-debug-target-item"), "SW list is empty"); 38 39 // open a tab and register service worker 40 info("Register a service worker"); 41 const swTab = await addTab(SW_TAB_URL); 42 43 // check that service worker is rendered 44 info("Wait until the service worker appears and is running"); 45 await waitForServiceWorkerRunning(SW_URL, document); 46 47 swPane = getDebugTargetPane("Service Workers", document); 48 Assert.strictEqual( 49 swPane.querySelectorAll(".qa-debug-target-item").length, 50 1, 51 "Service worker list has one element" 52 ); 53 ok( 54 swPane.querySelector(".qa-debug-target-item").textContent.includes(SW_URL), 55 "Service worker list is the one we registered" 56 ); 57 58 // unregister the service worker 59 info("Unregister service worker"); 60 await unregisterServiceWorker(swTab); 61 // check that service worker is not rendered anymore 62 info("Wait for service worker to disappear"); 63 await waitUntil(() => { 64 swPane = getDebugTargetPane("Service Workers", document); 65 return swPane.querySelectorAll(".qa-debug-target-item").length === 0; 66 }); 67 68 info("Remove tabs"); 69 await removeTab(swTab); 70 await removeTab(tab); 71 });