Bug 1386412 - fix race conditions in browser_service_workers_multi_content_process.js;r=ochameau draft
authorJulian Descottes <jdescottes@mozilla.com>
Wed, 02 Aug 2017 08:35:10 +0200
changeset 619637 1f310ec7b7556451b65b973e1d6ae2368bb3aa43
parent 619581 52285ea5e54c73d3ed824544cef2ee3f195f05e6
child 640466 9337d486d0ed89ca066edae8cfb4d4442504d803
push id71754
push userjdescottes@mozilla.com
push dateWed, 02 Aug 2017 10:35:15 +0000
reviewersochameau
bugs1386412
milestone57.0a1
Bug 1386412 - fix race conditions in browser_service_workers_multi_content_process.js;r=ochameau MozReview-Commit-ID: JnvTkmDrbDo
devtools/client/aboutdebugging/test/browser_service_workers_multi_content_process.js
--- a/devtools/client/aboutdebugging/test/browser_service_workers_multi_content_process.js
+++ b/devtools/client/aboutdebugging/test/browser_service_workers_multi_content_process.js
@@ -16,38 +16,43 @@ add_task(function* () {
   yield pushPref("dom.ipc.processCount", 2);
 
   let { tab, document } = yield openAboutDebugging("workers");
 
   let warningSection = document.querySelector(".service-worker-multi-process");
   let img = warningSection.querySelector(".warning");
   ok(img, "warning message is rendered");
 
+  let serviceWorkersElement = getServiceWorkerList(document);
+  let onMutation = waitForMutation(serviceWorkersElement, { childList: true });
+
   let swTab = yield addTab(TAB_URL, { background: true });
-  let serviceWorkersElement = getServiceWorkerList(document);
 
-  yield waitForMutation(serviceWorkersElement, { childList: true });
+  info("Wait for service worker to appear in the list");
+  yield onMutation;
 
   info("Check that service worker buttons are disabled.");
   // Check that the service worker appears in the UI
   let serviceWorkerContainer = getServiceWorkerContainer(SERVICE_WORKER, document);
   let debugButton = serviceWorkerContainer.querySelector(".debug-button");
   ok(debugButton.disabled, "Start/Debug button is disabled");
 
   info("Update the preference to 1");
   let onWarningCleared = waitUntil(() => {
-    return document.querySelector(".service-worker-multi-process");
+    let hasWarning = document.querySelector(".service-worker-multi-process");
+    return !hasWarning && !debugButton.disabled;
   });
   yield pushPref("dom.ipc.processCount", 1);
   yield onWarningCleared;
   ok(!debugButton.disabled, "Debug button is enabled.");
 
   info("Update the preference back to 2");
   let onWarningRestored = waitUntil(() => {
-    return document.querySelector(".service-worker-multi-process");
+    let hasWarning = document.querySelector(".service-worker-multi-process");
+    return hasWarning && debugButton.disabled;
   });
   yield pushPref("dom.ipc.processCount", 2);
   yield onWarningRestored;
   ok(debugButton.disabled, "Debug button is disabled again.");
 
   info("Unregister service worker");
   try {
     yield unregisterServiceWorker(swTab, serviceWorkersElement);