Bug 1399242 - Add a test.r=
MozReview-Commit-ID: FTEGKx8ZUBR
--- 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.");
+});