Bug 1151909 - Fix browser_markup_load_01.js race by listening for events before executing the action that trigger them. r=pbro draft
authorAlexandre Poirot <poirot.alex@gmail.com>
Wed, 09 Nov 2016 09:21:17 -0800
changeset 444599 0d1d2b60f9cd347b8ac04cd3e8a0104be6ced00c
parent 444598 71ebb82a308238b62f55441ccfe4d68f2aeca69c
child 444600 5947fd8a6f08e5c90213b8f44a3661962ed1e926
push id37302
push userbmo:poirot.alex@gmail.com
push dateMon, 28 Nov 2016 09:49:58 +0000
reviewerspbro
bugs1151909
milestone53.0a1
Bug 1151909 - Fix browser_markup_load_01.js race by listening for events before executing the action that trigger them. r=pbro MozReview-Commit-ID: B7gA7CBxWam
devtools/client/inspector/markup/test/browser_markup_load_01.js
--- a/devtools/client/inspector/markup/test/browser_markup_load_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_load_01.js
@@ -23,45 +23,56 @@ server.registerPathHandler("/slow.gif", 
 });
 
 // Test page load events.
 const TEST_URL = "data:text/html," +
   "<!DOCTYPE html>" +
   "<head><meta charset='utf-8' /></head>" +
   "<body>" +
   "<p>Slow script</p>" +
-  "<img src='http://localhost:" + server.identity.primaryPort + "/slow.gif' /></script>" +
+  "<img src='http://localhost:" + server.identity.primaryPort + "/slow.gif' />" +
   "</body>" +
   "</html>";
 
 add_task(function* () {
   let {inspector, testActor, tab} = yield openInspectorForURL(TEST_URL);
+
   let domContentLoaded = waitForLinkedBrowserEvent(tab, "DOMContentLoaded");
   let pageLoaded = waitForLinkedBrowserEvent(tab, "load");
 
   ok(inspector.markup, "There is a markup view");
 
   // Select an element while the tab is in the middle of a slow reload.
   testActor.eval("location.reload()");
+
+  info("Wait for DOMContentLoaded");
   yield domContentLoaded;
-  yield chooseWithInspectElementContextMenu("img", testActor);
+
+  info("Inspect element via context menu");
+  let markupLoaded = inspector.once("markuploaded");
+  let multipleChildrenUpdates = waitForMultipleChildrenUpdates(inspector);
+  yield chooseWithInspectElementContextMenu("img", tab);
+
+  info("Wait for load");
   yield pageLoaded;
 
-  yield inspector.once("markuploaded");
-  yield waitForMultipleChildrenUpdates(inspector);
+  info("Wait for markup-loaded after element inspection");
+  yield markupLoaded;
+  info("Wait for multiple children updates after element inspection");
+  yield multipleChildrenUpdates;
 
   ok(inspector.markup, "There is a markup view");
   is(inspector.markup._elt.children.length, 1, "The markup view is rendering");
 });
 
-function* chooseWithInspectElementContextMenu(selector, testActor) {
+function* chooseWithInspectElementContextMenu(selector, tab) {
   yield BrowserTestUtils.synthesizeMouseAtCenter(selector, {
     type: "contextmenu",
     button: 2
-  }, gBrowser.selectedBrowser);
+  }, tab.linkedBrowser);
 
   yield EventUtils.synthesizeKey("Q", {});
 }
 
 function waitForLinkedBrowserEvent(tab, event) {
   let def = defer();
   tab.linkedBrowser.addEventListener(event, function cb() {
     tab.linkedBrowser.removeEventListener(event, cb, true);