Bug 1405636 - enable and rename browser_webconsole_netlogging_reset_filter.js;r=Honza draft
authorJulian Descottes <jdescottes@mozilla.com>
Tue, 09 Jan 2018 09:48:30 +0100
changeset 719116 98a22f95f1f93ea799d9e789d02cf9913de14629
parent 719036 75a5d88b32815a02ba529a369ed3a554333f3865
child 745705 d7bb81066ff15cb7c13db7b24eb866267aef2701
push id95159
push userjdescottes@mozilla.com
push dateThu, 11 Jan 2018 14:55:33 +0000
reviewersHonza
bugs1405636
milestone59.0a1
Bug 1405636 - enable and rename browser_webconsole_netlogging_reset_filter.js;r=Honza MozReview-Commit-ID: IcFW6itKo7I
devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_netlogging_reset_filter.js
devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_network_messages_openinnet.js
devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_network_reset_filter.js
devtools/client/webconsole/new-console-output/test/mochitest/head.js
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
@@ -325,23 +325,22 @@ skip-if = true #	Bug 1403448
 skip-if = true #	Bug 1403448
 [browser_webconsole_message_categories.js]
 skip-if = true #	Bug 1404384
 # old console skip-if = e10s # Bug 1042253 - webconsole tests disabled with e10s
 [browser_webconsole_mixedcontent.js]
 tags = mcb
 skip-if = true #	Bug 1404886
 [browser_webconsole_multiple_windows_and_tabs.js]
-[browser_webconsole_netlogging_reset_filter.js]
-skip-if = true #	Bug 1405636
 [browser_webconsole_network_attach.js]
 [browser_webconsole_network_exceptions.js]
 [browser_webconsole_network_messages_expand.js]
 [browser_webconsole_network_messages_openinnet.js]
 [browser_webconsole_network_requests_from_chrome.js]
+[browser_webconsole_network_reset_filter.js]
 [browser_webconsole_nodes_highlight.js]
 [browser_webconsole_nodes_select.js]
 [browser_webconsole_notifications.js]
 skip-if = true #	Bug 1405637
 [browser_webconsole_object_in_sidebar.js]
 [browser_webconsole_object_inspector.js]
 [browser_webconsole_object_inspector_entries.js]
 [browser_webconsole_observer_notifications.js]
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_network_messages_openinnet.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_network_messages_openinnet.js
@@ -26,53 +26,22 @@ add_task(async function task() {
   const currentTab = gBrowser.selectedTab;
   let target = TargetFactory.forTab(currentTab);
   let toolbox = gDevTools.getToolbox(target);
 
   const documentUrl = TEST_PATH + TEST_FILE;
   await loadDocument(documentUrl);
   info("Document loaded.");
 
-  await testNetmonitorLink(toolbox, hud, documentUrl);
+  await openMessageInNetmonitor(toolbox, hud, documentUrl);
 
   // Go back to console.
   await toolbox.selectTool("webconsole");
   info("console panel open again.");
 
   // Fire an XHR request.
   await ContentTask.spawn(gBrowser.selectedBrowser, null, function () {
     content.wrappedJSObject.testXhrGet();
   });
 
   const jsonUrl = TEST_PATH + JSON_TEST_URL;
-  await testNetmonitorLink(toolbox, hud, jsonUrl);
+  await openMessageInNetmonitor(toolbox, hud, jsonUrl);
 });
-
-async function testNetmonitorLink(toolbox, hud, url) {
-  let messageNode = await waitFor(() => findMessage(hud, url));
-  info("Network message found.");
-
-  let onNetmonitorSelected = toolbox.once("netmonitor-selected", (event, panel) => {
-    return panel;
-  });
-
-  let menuPopup = await openContextMenu(hud, messageNode);
-  let openInNetMenuItem = menuPopup.querySelector("#console-menu-open-in-network-panel");
-  ok(openInNetMenuItem, "open in network panel item is enabled");
-  openInNetMenuItem.click();
-
-  const {panelWin} = await onNetmonitorSelected;
-  ok(true, "The netmonitor panel is selected when clicking on the network message");
-
-  let { store, windowRequire } = panelWin;
-  let actions = windowRequire("devtools/client/netmonitor/src/actions/index");
-  let { getSelectedRequest } =
-    windowRequire("devtools/client/netmonitor/src/selectors/index");
-
-  store.dispatch(actions.batchEnable(false));
-
-  await waitUntil(() => {
-    const selected = getSelectedRequest(store.getState());
-    return selected && selected.url === url;
-  });
-
-  ok(true, "The attached url is correct.");
-}
rename from devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_netlogging_reset_filter.js
rename to devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_network_reset_filter.js
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_netlogging_reset_filter.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_network_reset_filter.js
@@ -3,95 +3,53 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that network log messages bring up the network panel and select the
 // right request even if it was previously filtered off.
 
 "use strict";
 
-const TEST_FILE_URI =
-  "http://example.com/browser/devtools/client/webconsole/test/" +
-  "test-network.html";
+const TEST_PATH = "http://example.com/browser/devtools/client/webconsole/" +
+                  "new-console-output/test/mochitest/";
 const TEST_URI = "data:text/html;charset=utf8,<p>test file URI";
 
-var hud;
+add_task(async function () {
+  await pushPref("devtools.webconsole.filter.net", true);
 
-add_task(function* () {
-  let requests = [];
-  let { browser } = yield loadTab(TEST_URI);
+  let toolbox = await openNewTabAndToolbox(TEST_URI, "webconsole");
+  let hud = toolbox.getCurrentPanel().hud;
 
-  yield pushPrefEnv();
-  hud = yield openConsole();
-  hud.jsterm.clearOutput();
-
-  HUDService.lastFinishedRequest.callback = request => requests.push(request);
+  let onMessages = waitForMessages({
+    hud,
+    messages: [
+      { text: "running network console logging tests" },
+      { text: "test-network.html" },
+      { text: "testscript.js" }
+    ],
+  });
 
-  let loaded = loadBrowser(browser);
-  BrowserTestUtils.loadURI(gBrowser.selectedBrowser, TEST_FILE_URI);
-  yield loaded;
+  info("Wait for document to load");
+  await loadDocument(TEST_PATH + "test-network.html");
+
+  info("Wait for expected messages to appear");
+  await onMessages;
 
-  yield testMessages();
-  let htmlRequest = requests.find(e => e.request.url.endsWith("html"));
-  ok(htmlRequest, "htmlRequest was a html");
+  let url = TEST_PATH + "testscript.js?foo";
+  // The url as it appears in the webconsole, without the GET parameters
+  let shortUrl = TEST_PATH + "testscript.js";
 
-  yield hud.ui.openNetworkPanel(htmlRequest.actor);
-  let toolbox = gDevTools.getToolbox(hud.target);
-  is(toolbox.currentToolId, "netmonitor", "Network panel was opened");
+  info("Open the testscript.js request in the network monitor");
+  await openMessageInNetmonitor(toolbox, hud, url, shortUrl);
 
+  info("Filter out the current request");
   let panel = toolbox.getCurrentPanel();
   let { store, windowRequire } = panel.panelWin;
   let Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
-  let { getSelectedRequest } = windowRequire("devtools/client/netmonitor/src/selectors/index");
-
-  let selected = getSelectedRequest(store.getState());
-  is(selected.method, htmlRequest.request.method,
-     "The correct request is selected");
-  is(selected.url, htmlRequest.request.url,
-     "The correct request is definitely selected");
-
-  // Filter out the HTML request.
   store.dispatch(Actions.toggleRequestFilterType("js"));
 
-  yield toolbox.selectTool("webconsole");
+  info("Select back the webconsole");
+  await toolbox.selectTool("webconsole");
   is(toolbox.currentToolId, "webconsole", "Web console was selected");
-  yield hud.ui.openNetworkPanel(htmlRequest.actor);
-
-  selected = getSelectedRequest(store.getState());
-  is(selected.method, htmlRequest.request.method,
-     "The correct request is selected");
-  is(selected.url, htmlRequest.request.url,
-     "The correct request is definitely selected");
-
-  // All tests are done. Shutdown.
-  HUDService.lastFinishedRequest.callback = null;
-  htmlRequest = browser = requests = hud = null;
-});
 
-function testMessages() {
-  return waitForMessages({
-    webconsole: hud,
-    messages: [{
-      text: "running network console logging tests",
-      category: CATEGORY_WEBDEV,
-      severity: SEVERITY_LOG,
-    },
-    {
-      text: "test-network.html",
-      category: CATEGORY_NETWORK,
-      severity: SEVERITY_LOG,
-    },
-    {
-      text: "testscript.js",
-      category: CATEGORY_NETWORK,
-      severity: SEVERITY_LOG,
-    }],
-  });
-}
-
-function pushPrefEnv() {
-  let deferred = defer();
-  let options = {
-    set: [["devtools.webconsole.filter.networkinfo", true]]
-  };
-  SpecialPowers.pushPrefEnv(options, deferred.resolve);
-  return deferred.promise;
-}
+  info("Open the testscript.js request again in the network monitor");
+  await openMessageInNetmonitor(toolbox, hud, url, shortUrl);
+});
--- a/devtools/client/webconsole/new-console-output/test/mochitest/head.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/head.js
@@ -446,8 +446,51 @@ function openNewBrowserWindow() {
     Services.obs.addObserver(function observer(subject, topic) {
       if (win == subject) {
         Services.obs.removeObserver(observer, topic);
         resolve(win);
       }
     }, "browser-delayed-startup-finished");
   });
 }
+
+/**
+ * Open a network request logged in the webconsole in the netmonitor panel.
+ *
+ * @param {Object} toolbox
+ * @param {Object} hud
+ * @param {String} url
+ *        URL of the request as logged in the netmonitor.
+ * @param {String} urlInConsole
+ *        (optional) Use if the logged URL in webconsole is different from the real URL.
+ */
+async function openMessageInNetmonitor(toolbox, hud, url, urlInConsole) {
+  // By default urlInConsole should be the same as the complete url.
+  urlInConsole = urlInConsole || url;
+
+  let message = await waitFor(() => findMessage(hud, urlInConsole));
+
+  let onNetmonitorSelected = toolbox.once("netmonitor-selected", (event, panel) => {
+    return panel;
+  });
+
+  let menuPopup = await openContextMenu(hud, message);
+  let openInNetMenuItem = menuPopup.querySelector("#console-menu-open-in-network-panel");
+  ok(openInNetMenuItem, "open in network panel item is enabled");
+  openInNetMenuItem.click();
+
+  const {panelWin} = await onNetmonitorSelected;
+  ok(true, "The netmonitor panel is selected when clicking on the network message");
+
+  let { store, windowRequire } = panelWin;
+  let actions = windowRequire("devtools/client/netmonitor/src/actions/index");
+  let { getSelectedRequest } =
+    windowRequire("devtools/client/netmonitor/src/selectors/index");
+
+  store.dispatch(actions.batchEnable(false));
+
+  await waitUntil(() => {
+    const selected = getSelectedRequest(store.getState());
+    return selected && selected.url === url;
+  });
+
+  ok(true, "The attached url is correct.");
+}