Bug 1386412 - fix race conditions in browser_service_workers_multi_content_process.js;r=ochameau
MozReview-Commit-ID: JnvTkmDrbDo
--- 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);