Bug 1399242 - Add a test.r= draft
authorNicolas Chevobbe <nchevobbe@mozilla.com>
Thu, 12 Oct 2017 11:15:51 +0200
changeset 679024 88b8fb8e0fe8bccdb69cc94bc6eb7b42563c5c7a
parent 679023 170b5122af903d4412f99b0e29fb84c63516ade6
child 735511 6a60a27140f64436de0045b0c371a6f2bed260da
push id84121
push userbmo:nchevobbe@mozilla.com
push dateThu, 12 Oct 2017 09:17:48 +0000
bugs1399242
milestone58.0a1
Bug 1399242 - Add a test.r= MozReview-Commit-ID: FTEGKx8ZUBR
devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_visibility_messages.js
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
@@ -476,12 +476,13 @@ skip-if = true #	Bug 1403196
 skip-if = true #	Bug 1403200
 [browser_webconsole_variables_view_while_debugging_and_inspecting.js]
 skip-if = true #	Bug 1403205
 [browser_webconsole_view_source.js]
 skip-if = true #	Bug 1405652
 # old console skip-if = (os == 'win' && bits == 64) # Bug 1390001
 [browser_webconsole_violation.js]
 skip-if = true #	Bug 1405245
+[browser_webconsole_visibility_messages.js]
 # old console skip-if = e10s && (os == 'win') # Bug 1264955
 [browser_webconsole_warn_about_replaced_api.js]
 [browser_webconsole_websocket.js]
 skip-if = true # Bug 1401881
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_visibility_messages.js
@@ -0,0 +1,70 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+// Check messages logged when console not visible are displayed when
+// the user show the console again.
+
+const HTML = `
+  <!DOCTYPE html>
+  <html>
+    <body>
+      <h1>Test console visibility update</h1>
+      <script>
+        function log(str) {
+          console.log(str);
+        }
+      </script>
+    </body>
+  </html>
+`;
+const TEST_URI = "data:text/html;charset=utf-8," + encodeURI(HTML);
+
+add_task(async function () {
+  const hud = await openNewTabAndConsole(TEST_URI);
+  const toolbox = gDevTools.getToolbox(hud.target);
+
+  ContentTask.spawn(gBrowser.selectedBrowser, null, () => {
+    content.wrappedJSObject.log("in-console log");
+  });
+  await waitFor(() => findMessage(hud, "in-console log"));
+
+  info("select the inspector");
+  await toolbox.selectTool("inspector");
+
+  const MESSAGES_NUMBER = 10;
+
+  let messagesReceived = 0;
+  const onMessageReceived = new Promise(resolve => {
+    hud.target.client.addListener("consoleAPICall", function onLogMessage() {
+      messagesReceived++;
+      if (messagesReceived === MESSAGES_NUMBER) {
+        resolve();
+        hud.target.client.removeListener("consoleAPICall", onLogMessage);
+      }
+    });
+  });
+
+  ContentTask.spawn(gBrowser.selectedBrowser, MESSAGES_NUMBER, (number) => {
+    for (let i = 1; i <= number; i++) {
+      content.wrappedJSObject.log("in-inspector log " + i);
+    }
+  });
+
+  await onMessageReceived;
+
+  is(findMessage(hud, "in-inspector"), undefined,
+    "No messages were logged while the console wasn't visible");
+
+  let waitForMessagePromises = [];
+  for (let j = 1; j <= 10; j++) {
+    waitForMessagePromises.push(waitFor(() => findMessage(hud, "in-inspector log " + j)));
+  }
+
+  await toolbox.selectTool("webconsole");
+
+  await Promise.all(waitForMessagePromises);
+  ok(true, "All the messages logged are displayed when switching back to the console.");
+});