Bug 1443470 - Fix race when hovering status column in browser_net_filter-flags.js. r=Honza draft
authorAlexandre Poirot <poirot.alex@gmail.com>
Sun, 25 Feb 2018 11:22:01 -0800
changeset 764299 88109b7a6c074037e7245e96eacdead7fddd0ce1
parent 764298 063d128179a73ac9a0ed43b4c51399410206209e
push id101723
push userbmo:poirot.alex@gmail.com
push dateWed, 07 Mar 2018 15:55:42 +0000
reviewersHonza
bugs1443470
milestone60.0a1
Bug 1443470 - Fix race when hovering status column in browser_net_filter-flags.js. r=Honza MozReview-Commit-ID: NlcqpQLjLN
devtools/client/netmonitor/test/browser_net_filter-flags.js
--- a/devtools/client/netmonitor/test/browser_net_filter-flags.js
+++ b/devtools/client/netmonitor/test/browser_net_filter-flags.js
@@ -351,24 +351,16 @@ add_task(async function () {
 
   // Test mixing flags
   setFreetextFilter("-mime-type:HtmL status-code:200");
   await testContents([0, 0, 1, 1, 1, 1, 1, 1, 1, 0]);
 
   await teardown(monitor);
 
   async function testContents(visibility) {
-    let requestItems = document.querySelectorAll(".request-list-item");
-    for (let requestItem of requestItems) {
-      requestItem.scrollIntoView();
-      let requestsListStatus = requestItem.querySelector(".requests-list-status");
-      EventUtils.sendMouseEvent({ type: "mouseover" }, requestsListStatus);
-      await waitUntil(() => requestsListStatus.title);
-    }
-
     let items = getSortedRequests(store.getState());
     let visibleItems = getDisplayedRequests(store.getState());
 
     // Filter results will be updated asynchronously, so we should wait until
     // displayed requests reach final state.
     await waitUntil(() => {
       visibleItems = getDisplayedRequests(store.getState());
       return visibleItems.size === visibility.filter(e => e).length;
@@ -389,16 +381,29 @@ add_task(async function () {
       await waitUntil(() => {
         visibleItems = getDisplayedRequests(store.getState());
         isThere = visibleItems.some(r => r.id == itemId);
         return isThere === shouldBeVisible;
       });
 
       is(isThere, shouldBeVisible,
         `The item at index ${i} has visibility=${shouldBeVisible}`);
+    }
+
+    // Fake mouse over the status column only after the list is fully updated
+    let requestItems = document.querySelectorAll(".request-list-item");
+    for (let requestItem of requestItems) {
+      requestItem.scrollIntoView();
+      let requestsListStatus = requestItem.querySelector(".requests-list-status");
+      EventUtils.sendMouseEvent({ type: "mouseover" }, requestsListStatus);
+      await waitUntil(() => requestsListStatus.title);
+    }
+
+    for (let i = 0; i < visibility.length; i++) {
+      let shouldBeVisible = !!visibility[i];
 
       if (shouldBeVisible) {
         let { method, url, data } = EXPECTED_REQUESTS[i];
         verifyRequestItemTarget(
           document,
           getDisplayedRequests(store.getState()),
           getSortedRequests(store.getState()).get(i),
           method,