summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser_service_workers_unregister.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /devtools/client/aboutdebugging/test/browser_service_workers_unregister.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser_service_workers_unregister.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser_service_workers_unregister.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser_service_workers_unregister.js b/devtools/client/aboutdebugging/test/browser_service_workers_unregister.js
new file mode 100644
index 000000000..b6076ea07
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser_service_workers_unregister.js
@@ -0,0 +1,77 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test that clicking on the unregister link in the Service Worker details works
+// as intended in about:debugging.
+// It should unregister the service worker, which should trigger an update of
+// the displayed list of service workers.
+
+// Service workers can't be loaded from chrome://, but http:// is ok with
+// dom.serviceWorkers.testing.enabled turned on.
+const SCOPE = URL_ROOT + "service-workers/";
+const SERVICE_WORKER = SCOPE + "empty-sw.js";
+const TAB_URL = SCOPE + "empty-sw.html";
+
+add_task(function* () {
+ info("Turn on workers via mochitest http.");
+ yield new Promise(done => {
+ let options = { "set": [
+ // Accept workers from mochitest's http.
+ ["dom.serviceWorkers.enabled", true],
+ ["dom.serviceWorkers.openWindow.enabled", true],
+ ["dom.serviceWorkers.testing.enabled", true],
+ ["dom.ipc.processCount", 1],
+ ]};
+ SpecialPowers.pushPrefEnv(options, done);
+ });
+
+ let { tab, document } = yield openAboutDebugging("workers");
+
+ // Listen for mutations in the service-workers list.
+ let serviceWorkersElement = getServiceWorkerList(document);
+ let onMutation = waitForMutation(serviceWorkersElement, { childList: true });
+
+ // Open a tab that registers an empty service worker.
+ let swTab = yield addTab(TAB_URL);
+
+ // Wait for the service workers-list to update.
+ yield onMutation;
+
+ // Check that the service worker appears in the UI.
+ assertHasTarget(true, document, "service-workers", SERVICE_WORKER);
+
+ yield waitForServiceWorkerActivation(SERVICE_WORKER, document);
+
+ info("Ensure that the registration resolved before trying to interact with " +
+ "the service worker.");
+ yield waitForServiceWorkerRegistered(swTab);
+ ok(true, "Service worker registration resolved");
+
+ let targets = document.querySelectorAll("#service-workers .target");
+ is(targets.length, 1, "One service worker is now displayed.");
+
+ let target = targets[0];
+ let name = target.querySelector(".target-name");
+ is(name.textContent, SERVICE_WORKER, "Found the service worker in the list");
+
+ info("Check the scope displayed scope is correct");
+ let scope = target.querySelector(".service-worker-scope");
+ is(scope.textContent, SCOPE,
+ "The expected scope is displayed in the service worker info.");
+
+ info("Unregister the service worker via the unregister link.");
+ let unregisterLink = target.querySelector(".unregister-link");
+ ok(unregisterLink, "Found the unregister link");
+
+ onMutation = waitForMutation(serviceWorkersElement, { childList: true });
+ unregisterLink.click();
+ yield onMutation;
+
+ is(document.querySelector("#service-workers .target"), null,
+ "No service worker displayed anymore.");
+
+ yield removeTab(swTab);
+ yield closeAboutDebugging(tab);
+});