Bug 1432865 - Clean up show and hideColumn test API. r=Honza draft
authorabhinav <abhinav.koppula@gmail.com>
Thu, 25 Jan 2018 16:45:34 +0530
changeset 738047 15f871aa04e3afab719ab9687d51b68b16b9f66a
parent 724404 32b850fa28ae1c29039cb7ddcdfd71b324762c05
push id96831
push userbmo:abhinav.koppula@gmail.com
push dateThu, 25 Jan 2018 16:50:34 +0000
reviewersHonza
bugs1432865
milestone60.0a1
Bug 1432865 - Clean up show and hideColumn test API. r=Honza MozReview-Commit-ID: EGL5wC3UPa2
devtools/client/netmonitor/test/browser_net_columns_last_column.js
devtools/client/netmonitor/test/browser_net_columns_pref.js
devtools/client/netmonitor/test/browser_net_columns_reset.js
devtools/client/netmonitor/test/browser_net_columns_time.js
devtools/client/netmonitor/test/head.js
--- a/devtools/client/netmonitor/test/browser_net_columns_last_column.js
+++ b/devtools/client/netmonitor/test/browser_net_columns_last_column.js
@@ -2,18 +2,18 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 /**
  * Tests that last visible column can't be hidden
  */
 
-add_task(function* () {
-  let { monitor } = yield initNetMonitor(SIMPLE_URL);
+add_task(async function () {
+  let { monitor } = await initNetMonitor(SIMPLE_URL);
   info("Starting test... ");
 
   let { document, store, parent } = monitor.panelWin;
 
   let initialColumns = store.getState().ui.columns;
   for (let column in initialColumns) {
     let shown = initialColumns[column];
 
@@ -24,41 +24,27 @@ add_task(function* () {
         visibleColumns.push(c);
       }
     }
 
     if (visibleColumns.length === 1) {
       if (!shown) {
         continue;
       }
-      yield testLastMenuItem(column);
+      await testLastMenuItem(column);
       break;
     }
 
     if (shown) {
-      yield hideColumn(column);
+      await hideColumn(monitor, column);
     }
   }
 
-  yield teardown(monitor);
-
-  function* hideColumn(column) {
-    info(`Clicking context-menu item for ${column}`);
-    EventUtils.sendMouseEvent({ type: "contextmenu" },
-      document.querySelector("#requests-list-status-button") ||
-      document.querySelector("#requests-list-waterfall-button"));
+  await teardown(monitor);
 
-    let onHeaderRemoved = waitForDOM(document, `#requests-list-${column}-button`, 0);
-    parent.document.querySelector(`#request-list-header-${column}-toggle`).click();
-
-    yield onHeaderRemoved;
-    ok(!document.querySelector(`#requests-list-${column}-button`),
-       `Column ${column} should be hidden`);
-  }
-
-  function* testLastMenuItem(column) {
+  async function testLastMenuItem(column) {
     EventUtils.sendMouseEvent({ type: "contextmenu" },
       document.querySelector(`#requests-list-${column}-button`));
 
     let menuItem = parent.document.querySelector(`#request-list-header-${column}-toggle`);
     ok(menuItem.disabled, "Last visible column menu item should be disabled.");
   }
 });
--- a/devtools/client/netmonitor/test/browser_net_columns_pref.js
+++ b/devtools/client/netmonitor/test/browser_net_columns_pref.js
@@ -2,43 +2,43 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 /**
  * Tests if visible columns are properly saved
  */
 
-add_task(function* () {
+add_task(async function () {
   Services.prefs.setCharPref("devtools.netmonitor.visibleColumns",
     '["status", "contentSize", "waterfall"]');
 
-  let { monitor } = yield initNetMonitor(SIMPLE_URL);
+  let { monitor } = await initNetMonitor(SIMPLE_URL);
   info("Starting test... ");
 
   let { document } = monitor.panelWin;
 
   ok(document.querySelector("#requests-list-status-button"),
      "Status column should be shown");
   ok(document.querySelector("#requests-list-contentSize-button"),
      "Content size column should be shown");
 
-  yield hideColumn(monitor, "status");
-  yield hideColumn(monitor, "contentSize");
+  await hideColumn(monitor, "status");
+  await hideColumn(monitor, "contentSize");
 
   let visibleColumns = JSON.parse(
     Services.prefs.getCharPref("devtools.netmonitor.visibleColumns")
   );
 
   ok(!visibleColumns.includes("status"),
      "Pref should be synced for status");
   ok(!visibleColumns.includes("contentSize"),
     "Pref should be synced for contentSize");
 
-  yield showColumn(monitor, "status");
+  await showColumn(monitor, "status");
 
   visibleColumns = JSON.parse(
     Services.prefs.getCharPref("devtools.netmonitor.visibleColumns")
   );
 
   ok(visibleColumns.includes("status"),
     "Pref should be synced for status");
 });
--- a/devtools/client/netmonitor/test/browser_net_columns_reset.js
+++ b/devtools/client/netmonitor/test/browser_net_columns_reset.js
@@ -1,27 +1,27 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 /**
  * Tests reset column menu item
  */
-add_task(function* () {
-  let { monitor } = yield initNetMonitor(SIMPLE_URL);
+add_task(async function () {
+  let { monitor } = await initNetMonitor(SIMPLE_URL);
   info("Starting test... ");
 
   let { document, parent, windowRequire } = monitor.panelWin;
   let { Prefs } = windowRequire("devtools/client/netmonitor/src/utils/prefs");
 
   let prefBefore = Prefs.visibleColumns;
 
-  hideColumn(monitor, "status");
-  hideColumn(monitor, "waterfall");
+  await hideColumn(monitor, "status");
+  await hideColumn(monitor, "waterfall");
 
   EventUtils.sendMouseEvent({ type: "contextmenu" },
     document.querySelector("#requests-list-contentSize-button"));
 
   parent.document.querySelector("#request-list-header-reset-columns").click();
 
   ok(JSON.stringify(prefBefore) === JSON.stringify(Prefs.visibleColumns),
      "Reset columns item should reset columns pref");
--- a/devtools/client/netmonitor/test/browser_net_columns_time.js
+++ b/devtools/client/netmonitor/test/browser_net_columns_time.js
@@ -9,21 +9,32 @@
 add_task(async function () {
   let { tab, monitor } = await initNetMonitor(SIMPLE_URL);
   info("Starting test... ");
 
   let { document, store, windowRequire } = monitor.panelWin;
   let Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
   store.dispatch(Actions.batchEnable(false));
 
-  hideColumn(monitor, "waterfall");
-  showColumn(monitor, "endTime");
-  showColumn(monitor, "responseTime");
-  showColumn(monitor, "duration");
-  showColumn(monitor, "latency");
+  let visibleColumns = store.getState().ui.columns;
+
+  // Hide the waterfall column to make sure timing data are fetched
+  // by the other timing columns ("endTime", "responseTime", "duration",
+  // "latency").
+  // Note that all these timing columns are based on the same
+  // `RequestListColumnTime` component.
+  if (visibleColumns.waterfall) {
+    await hideColumn(monitor, "waterfall");
+  }
+
+  ["endTime", "responseTime", "duration", "latency"].forEach(async (column) => {
+    if (!visibleColumns[column]) {
+      await showColumn(monitor, column);
+    }
+  });
 
   let onNetworkEvents = waitForNetworkEvents(monitor, 1);
   let onEventTimings = waitFor(monitor.panelWin, EVENTS.RECEIVED_EVENT_TIMINGS);
   tab.linkedBrowser.reload();
   await Promise.all([onNetworkEvents, onEventTimings]);
 
   // There should be one request in the list.
   let requestItems = document.querySelectorAll(".request-list-item");
--- a/devtools/client/netmonitor/test/head.js
+++ b/devtools/client/netmonitor/test/head.js
@@ -701,41 +701,41 @@ function testColumnsAlignment(headers, r
     let requestColumn = firstRequestLine.childNodes[i];
     is(headerColumn.getBoundingClientRect().left,
        requestColumn.getBoundingClientRect().left,
        "Headers for columns number " + i + " are aligned."
     );
   }
 }
 
-function* hideColumn(monitor, column) {
+async function hideColumn(monitor, column) {
   let { document, parent } = monitor.panelWin;
 
   info(`Clicking context-menu item for ${column}`);
   EventUtils.sendMouseEvent({ type: "contextmenu" },
     document.querySelector(".devtools-toolbar.requests-list-headers"));
 
   let onHeaderRemoved = waitForDOM(document, `#requests-list-${column}-button`, 0);
   parent.document.querySelector(`#request-list-header-${column}-toggle`).click();
-  yield onHeaderRemoved;
+  await onHeaderRemoved;
 
   ok(!document.querySelector(`#requests-list-${column}-button`),
      `Column ${column} should be hidden`);
 }
 
-function* showColumn(monitor, column) {
+async function showColumn(monitor, column) {
   let { document, parent } = monitor.panelWin;
 
   info(`Clicking context-menu item for ${column}`);
   EventUtils.sendMouseEvent({ type: "contextmenu" },
     document.querySelector(".devtools-toolbar.requests-list-headers"));
 
   let onHeaderAdded = waitForDOM(document, `#requests-list-${column}-button`, 1);
   parent.document.querySelector(`#request-list-header-${column}-toggle`).click();
-  yield onHeaderAdded;
+  await onHeaderAdded;
 
   ok(document.querySelector(`#requests-list-${column}-button`),
      `Column ${column} should be visible`);
 }
 
 /**
  * Select a request and switch to its response panel.
  *