Bug 1406039 - migrate browser_webconsole_strict_mode_errors to new frontend;r=nchevobbe draft
authorJulian Descottes <jdescottes@mozilla.com>
Tue, 16 Jan 2018 16:51:02 +0100
changeset 720961 bcfa0578223194f014214b240c43c4af0afbea2f
parent 720848 e4107773cffb1baefd5446666fce22c4d6eb0517
child 746211 a847d9ccf014969d79d1b81daba85019e09da33c
push id95707
push userjdescottes@mozilla.com
push dateTue, 16 Jan 2018 16:33:13 +0000
reviewersnchevobbe
bugs1406039
milestone59.0a1
Bug 1406039 - migrate browser_webconsole_strict_mode_errors to new frontend;r=nchevobbe MozReview-Commit-ID: ATuyIFj5c4D
devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_strict_mode_errors.js
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
@@ -373,17 +373,16 @@ skip-if = true #	Bug 1404359
 skip-if = true #	Bug 1405647
 [browser_webconsole_split_focus.js]
 skip-if = true #	Bug 1405648
 [browser_webconsole_split_persist.js]
 skip-if = true #	Bug 1405649
 [browser_webconsole_stacktrace_location_debugger_link.js]
 [browser_webconsole_stacktrace_location_scratchpad_link.js]
 [browser_webconsole_strict_mode_errors.js]
-skip-if = true #	Bug 1406039
 [browser_webconsole_string.js]
 [browser_webconsole_time_methods.js]
 skip-if = true #	Bug 1404877
 [browser_webconsole_timestamps.js]
 [browser_webconsole_trackingprotection_errors.js]
 tags = trackingprotection
 skip-if = true #	Bug 1405650
 # old console skip-if = (os == 'win' && bits == 64) # Bug 1390001
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_strict_mode_errors.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_strict_mode_errors.js
@@ -2,82 +2,39 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Check that "use strict" JS errors generate errors, not warnings.
 
 "use strict";
 
-add_task(function* () {
+add_task(async function () {
+  let hud = await openNewTabAndConsole("data:text/html;charset=utf8,empty page");
+
+  loadScriptURI("'use strict';var arguments;");
+  await waitForError(hud,
+    "SyntaxError: 'arguments' can't be defined or assigned to in strict mode code");
+
+  loadScriptURI("'use strict';function f(a, a) {};");
+  await waitForError(hud, "SyntaxError: duplicate formal argument a");
+
+  loadScriptURI("'use strict';var o = {get p() {}};o.p = 1;");
+  await waitForError(hud, 'TypeError: setting getter-only property "p"');
+
+  loadScriptURI("'use strict';v = 1;");
+  await waitForError(hud, "ReferenceError: assignment to undeclared variable v");
+});
+
+async function waitForError(hud, text) {
+  await waitFor(() => findMessage(hud, text, ".message.error"));
+  ok(true, "Received expected error message");
+}
+
+function loadScriptURI(script) {
   // On e10s, the exception is triggered in child process
   // and is ignored by test harness
   if (!Services.appinfo.browserTabsRemoteAutostart) {
     expectUncaughtException();
   }
-  yield loadTab("data:text/html;charset=utf8,<script>'use strict';var arguments;</script>");
-
-  let hud = yield openConsole();
-
-  yield waitForMessages({
-    webconsole: hud,
-    messages: [
-      {
-        text: "SyntaxError: 'arguments' can't be defined or assigned to in strict mode code",
-        category: CATEGORY_JS,
-        severity: SEVERITY_ERROR,
-      },
-    ],
-  });
-
-  if (!Services.appinfo.browserTabsRemoteAutostart) {
-    expectUncaughtException();
-  }
-  BrowserTestUtils.loadURI(gBrowser.selectedBrowser, "data:text/html;charset="
-    + "utf8,<script>'use strict';function f(a, a) {};</script>");
-
-  yield waitForMessages({
-    webconsole: hud,
-    messages: [
-      {
-        text: "SyntaxError: duplicate formal argument a",
-        category: CATEGORY_JS,
-        severity: SEVERITY_ERROR,
-      },
-    ],
-  });
-
-  if (!Services.appinfo.browserTabsRemoteAutostart) {
-    expectUncaughtException();
-  }
-  BrowserTestUtils.loadURI(gBrowser.selectedBrowser, "data:text/html;charset="
-    + "utf8,<script>'use strict';var o = {get p() {}};o.p = 1;</script>");
-
-  yield waitForMessages({
-    webconsole: hud,
-    messages: [
-      {
-        text: 'TypeError: setting getter-only property "p"',
-        category: CATEGORY_JS,
-        severity: SEVERITY_ERROR,
-      },
-    ],
-  });
-
-  if (!Services.appinfo.browserTabsRemoteAutostart) {
-    expectUncaughtException();
-  }
-  BrowserTestUtils.loadURI(gBrowser.selectedBrowser,
-    "data:text/html;charset=utf8,<script>'use strict';v = 1;</script>");
-
-  yield waitForMessages({
-    webconsole: hud,
-    messages: [
-      {
-        text: "ReferenceError: assignment to undeclared variable v",
-        category: CATEGORY_JS,
-        severity: SEVERITY_ERROR,
-      },
-    ],
-  });
-
-  hud = null;
-});
+  let uri = "data:text/html;charset=utf8,<script>" + script + "</script>";
+  BrowserTestUtils.loadURI(gBrowser.selectedBrowser, uri);
+}