diff --git a/devtools/client/debugger/test/mochitest/browser.ini b/devtools/client/debugger/test/mochitest/browser.ini index 90f8628dd47a..e352e1dc189b 100644 --- a/devtools/client/debugger/test/mochitest/browser.ini +++ b/devtools/client/debugger/test/mochitest/browser.ini @@ -186,6 +186,8 @@ skip-if = true #Bug 1571994 [browser_dbg-windowless-workers.js] [browser_dbg-windowless-workers-early-breakpoint.js] [browser_dbg-worker-exception.js] +[browser_dbg-windowless-service-workers-reload.js] +skip-if = !serviceworker_e10s # parent intercept mode required. [browser_dbg-windowless-service-workers.js] skip-if = !nightly_build || (os == 'linux' && ccov) # parent intercept mode is needed bug 1588154. Bug 1613543, the test consistently timeouts on Linux coverage builds. [browser_dbg-worker-scopes.js] diff --git a/devtools/client/debugger/test/mochitest/browser_dbg-windowless-service-workers-reload.js b/devtools/client/debugger/test/mochitest/browser_dbg-windowless-service-workers-reload.js new file mode 100644 index 000000000000..9b25fe30811d --- /dev/null +++ b/devtools/client/debugger/test/mochitest/browser_dbg-windowless-service-workers-reload.js @@ -0,0 +1,29 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at . */ + +// Test that service worker sources are still displayed after reloading the page +// and that we can hit breakpoints in them. +add_task(async function() { + await pushPref("devtools.debugger.features.windowless-service-workers", true); + await pushPref("devtools.debugger.workers-visible", true); + await pushPref("dom.serviceWorkers.enabled", true); + await pushPref("dom.serviceWorkers.testing.enabled", true); + const dbg = await initDebugger("doc-service-workers.html"); + + invokeInTab("registerWorker"); + await waitForSource(dbg, "service-worker.sjs"); + const workerSource = findSource(dbg, "service-worker.sjs"); + + await reload(dbg, "service-worker.sjs"); + + await addBreakpoint(dbg, "service-worker.sjs", 13); + invokeInTab("fetchFromWorker"); + + await waitForPaused(dbg); + assertPausedAtSourceAndLine(dbg, workerSource.id, 13); + + await resume(dbg); + await waitForRequestsToSettle(dbg); + await removeTab(gBrowser.selectedTab); +});