Files
sousa-gecko/devtools/client/application/test/browser_application_panel_debug-service-worker.js
T

61 lines
2.1 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
/* import-globals-from ../../debugger/new/test/mochitest/helpers.js */
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/debugger/new/test/mochitest/helpers.js",
this);
const TAB_URL = URL_ROOT + "service-workers/debug.html";
add_task(async function() {
await enableApplicationPanel();
let { panel, tab, target } = await openNewTabAndApplicationPanel(TAB_URL);
let doc = panel.panelWin.document;
info("Wait until the service worker appears in the application panel");
await waitUntil(() => getWorkerContainers(doc).length === 1);
let container = getWorkerContainers(doc)[0];
info("Wait until the debug link is displayed and enabled");
await waitUntil(() =>
container.querySelector(".js-debug-link:not(.worker__debug-link--disabled)"));
info("Click on the debug link and wait for the new toolbox to be ready");
let onToolboxReady = gDevTools.once("toolbox-ready");
let debugLink = container.querySelector(".js-debug-link");
debugLink.click();
let serviceWorkerToolbox = await onToolboxReady;
await serviceWorkerToolbox.selectTool("jsdebugger");
let debuggerContext = createDebuggerContext(serviceWorkerToolbox);
await waitForSources(debuggerContext, "debug-sw.js");
await selectSource(debuggerContext, "debug-sw.js");
await waitForLoadedSource(debuggerContext, "debug-sw.js");
await addBreakpoint(debuggerContext, "debug-sw.js", 8);
info("Reload the main tab, expect the service worker script to pause on line 8");
tab.linkedBrowser.reload();
await waitForPaused(debuggerContext);
assertPausedLocation(debuggerContext);
await resume(debuggerContext);
const workerScript = findSource(debuggerContext, "debug-sw.js");
await removeBreakpoint(debuggerContext, workerScript.id, 8, 0);
info("Destroy the worker toolbox");
await serviceWorkerToolbox.destroy();
info("Wait until the focus goes back to the main window");
await waitUntil(() => gBrowser.selectedBrowser === tab.linkedBrowser);
await unregisterAllWorkers(target.client);
});