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
--- 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);