Bug 1436110 - Fix stub generation and update existing stubs; r=bgrins.
authorNicolas Chevobbe <nchevobbe@mozilla.com>
Wed, 07 Feb 2018 09:43:24 +0100
changeset 403575 719f138bc9d8ccd986f5a28ccb55d11e2366bbb2
parent 403574 5d3f2a7dfdc9ee36c43fcdf04e25b49e426c908a
child 403576 9ce4a74db79390abaa052f4537b6721cdaa3beaf
push id59525
push usernchevobbe@mozilla.com
push dateTue, 13 Feb 2018 09:59:52 +0000
treeherderautoland@9ce4a74db793 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbgrins
bugs1436110
milestone60.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1436110 - Fix stub generation and update existing stubs; r=bgrins. MozReview-Commit-ID: KSzHxX3WNsz
devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js
devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js
devtools/client/webconsole/new-console-output/test/fixtures/stubs/consoleApi.js
devtools/client/webconsole/new-console-output/test/fixtures/stubs/cssMessage.js
devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js
devtools/client/webconsole/new-console-output/test/fixtures/stubs/networkEvent.js
devtools/client/webconsole/new-console-output/test/fixtures/stubs/pageError.js
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js
@@ -104,30 +104,33 @@ function getCleanedPacket(key, packet) {
           if (newArgument.class === "Window") {
             newArgument.ownPropertyLength = existingArgument.ownPropertyLength;
           }
           return newArgument;
         });
       }
     }
 
-    if (res.result) {
+    if (res.result && existingPacket.result) {
       // Clean actor ids on evaluation result messages.
       res.result.actor = existingPacket.result.actor;
       if (res.result.preview) {
         if (res.result.preview.timestamp) {
           // Clean timestamp there too.
           res.result.preview.timestamp = existingPacket.result.preview.timestamp;
         }
       }
     }
 
-    if (res.exception) {
+    if (res.exception && existingPacket.exception) {
       // Clean actor ids on exception messages.
-      res.exception.actor = existingPacket.exception.actor;
+      if (existingPacket.exception.actor) {
+        res.exception.actor = existingPacket.exception.actor;
+      }
+
       if (res.exception.preview) {
         if (res.exception.preview.timestamp) {
           // Clean timestamp there too.
           res.exception.preview.timestamp = existingPacket.exception.preview.timestamp;
         }
 
         if (
           typeof res.exception.preview.message === "object"
@@ -229,26 +232,27 @@ function getCleanedPacket(key, packet) {
   }
 
   cachedPackets[key] = res;
   return res;
 }
 
 function formatPacket(key, packet) {
   let stringifiedPacket = JSON.stringify(getCleanedPacket(key, packet), null, 2);
-  return `stubPackets.set("${key}", ${stringifiedPacket});`;
+  return `stubPackets.set(\`${key}\`, ${stringifiedPacket});`;
 }
 
 function formatStub(key, packet) {
   let prepared = prepareMessage(
     getCleanedPacket(key, packet),
     {getNextId: () => "1"}
   );
   let stringifiedMessage = JSON.stringify(prepared, null, 2);
-  return `stubPreparedMessages.set("${key}", new ConsoleMessage(${stringifiedMessage}));`;
+  return (
+    `stubPreparedMessages.set(\`${key}\`, new ConsoleMessage(${stringifiedMessage}));`);
 }
 
 function formatNetworkEventStub(key, packet) {
   let cleanedPacket = getCleanedPacket(key, packet);
   let networkInfo = cleanedPacket.networkInfo ? cleanedPacket.networkInfo : cleanedPacket;
 
   let prepared = prepareMessage(
     networkInfo,
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js
@@ -180,16 +180,19 @@ const evaluationResultCommands = [
   "inspect({a: 1})",
   "cd(document)"
 ];
 
 let evaluationResult = new Map(evaluationResultCommands.map(cmd => [cmd, cmd]));
 evaluationResult.set("longString message Error",
   `throw new Error("Long error ".repeat(10000))`);
 
+evaluationResult.set(`eval throw ""`, `throw ""`);
+evaluationResult.set(`eval throw "tomato"`, `throw "tomato"`);
+
 // Network Event
 
 let networkEvent = new Map();
 
 networkEvent.set("GET request", {
   keys: ["GET request"],
   code: `
 let i = document.createElement("img");
@@ -229,15 +232,18 @@ pageError.set("ReferenceError: asdf is n
 
 pageError.set("SyntaxError: redeclaration of let a", `
   let a, a;
 `);
 
 pageError.set("TypeError longString message",
   `throw new Error("Long error ".repeat(10000))`);
 
+pageError.set(`throw ""`, `throw ""`);
+pageError.set(`throw "tomato"`, `throw "tomato"`);
+
 module.exports = {
   consoleApi,
   cssMessage,
   evaluationResult,
   networkEvent,
   pageError,
 };
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/consoleApi.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/consoleApi.js
@@ -8,17 +8,17 @@
  * THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
  */
 
 const { ConsoleMessage } =
   require("devtools/client/webconsole/new-console-output/types");
 
 let stubPreparedMessages = new Map();
 let stubPackets = new Map();
-stubPreparedMessages.set("console.log('foobar', 'test')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('foobar', 'test')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924471,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -35,17 +35,17 @@ stubPreparedMessages.set("console.log('f
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log(undefined)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log(undefined)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924479,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -63,17 +63,17 @@ stubPreparedMessages.set("console.log(un
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.warn('danger, will robinson!')", new ConsoleMessage({
+stubPreparedMessages.set(`console.warn('danger, will robinson!')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924487,
   "type": "warn",
   "helperType": null,
   "level": "warn",
   "messageText": null,
@@ -89,17 +89,17 @@ stubPreparedMessages.set("console.warn('
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log(NaN)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log(NaN)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924495,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -117,17 +117,17 @@ stubPreparedMessages.set("console.log(Na
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log(null)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log(null)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924501,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -145,17 +145,17 @@ stubPreparedMessages.set("console.log(nu
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('鼬')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('鼬')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924506,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -171,17 +171,17 @@ stubPreparedMessages.set("console.log('鼬')", new ConsoleMessage({
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.clear()", new ConsoleMessage({
+stubPreparedMessages.set(`console.clear()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924512,
   "type": "clear",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -197,17 +197,17 @@ stubPreparedMessages.set("console.clear(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.count('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924515,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "bar: 1",
@@ -221,17 +221,17 @@ stubPreparedMessages.set("console.count(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.assert(false, {message: 'foobar'})", new ConsoleMessage({
+stubPreparedMessages.set(`console.assert(false, {message: 'foobar'})`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924521,
   "type": "assert",
   "helperType": null,
   "level": "error",
   "messageText": null,
@@ -277,17 +277,17 @@ stubPreparedMessages.set("console.assert
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('hello \nfrom \rthe \"string world!')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('hello \nfrom \rthe \"string world!')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924528,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -303,17 +303,17 @@ stubPreparedMessages.set("console.log('h
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('úṇĩçödê țĕșť')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('úṇĩçödê țĕșť')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924586,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -329,17 +329,17 @@ stubPreparedMessages.set("console.log('úṇĩçödê țĕșť')", new ConsoleMessage({
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.dirxml(window)", new ConsoleMessage({
+stubPreparedMessages.set(`console.dirxml(window)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924596,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -367,17 +367,17 @@ stubPreparedMessages.set("console.dirxml
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('myarray', ['red', 'green', 'blue'])", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('myarray', ['red', 'green', 'blue'])`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924604,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -411,17 +411,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('myregex', /a.b.c/)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('myregex', /a.b.c/)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924610,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -447,17 +447,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.table(['red', 'green', 'blue']);", new ConsoleMessage({
+stubPreparedMessages.set(`console.table(['red', 'green', 'blue']);`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924612,
   "type": "table",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -490,17 +490,17 @@ stubPreparedMessages.set("console.table(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924614,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -552,17 +552,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.debug('debug message');", new ConsoleMessage({
+stubPreparedMessages.set(`console.debug('debug message');`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924621,
   "type": "debug",
   "helperType": null,
   "level": "debug",
   "messageText": null,
@@ -578,17 +578,17 @@ stubPreparedMessages.set("console.debug(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.info('info message');", new ConsoleMessage({
+stubPreparedMessages.set(`console.info('info message');`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924625,
   "type": "info",
   "helperType": null,
   "level": "info",
   "messageText": null,
@@ -604,17 +604,17 @@ stubPreparedMessages.set("console.info('
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.error('error message');", new ConsoleMessage({
+stubPreparedMessages.set(`console.error('error message');`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924628,
   "type": "error",
   "helperType": null,
   "level": "error",
   "messageText": null,
@@ -637,17 +637,17 @@ stubPreparedMessages.set("console.error(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('mymap')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('mymap')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924631,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -686,17 +686,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('myset')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('myset')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924746,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -729,17 +729,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.trace()", new ConsoleMessage({
+stubPreparedMessages.set(`console.trace()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924752,
   "type": "trace",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -772,17 +772,17 @@ stubPreparedMessages.set("console.trace(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.time('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.time('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924757,
   "type": "nullMessage",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -796,17 +796,17 @@ stubPreparedMessages.set("console.time('
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("timerAlreadyExists", new ConsoleMessage({
+stubPreparedMessages.set(`timerAlreadyExists`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924758,
   "type": "time",
   "helperType": null,
   "level": "warn",
   "messageText": "Timer “bar” already exists.",
@@ -820,17 +820,17 @@ stubPreparedMessages.set("timerAlreadyEx
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.timeEnd('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.timeEnd('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924759,
   "type": "timeEnd",
   "helperType": null,
   "level": "log",
   "messageText": "bar: 1.21ms",
@@ -844,17 +844,17 @@ stubPreparedMessages.set("console.timeEn
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("timerDoesntExist", new ConsoleMessage({
+stubPreparedMessages.set(`timerDoesntExist`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924759,
   "type": "timeEnd",
   "helperType": null,
   "level": "warn",
   "messageText": "Timer “bar” doesn’t exist.",
@@ -868,17 +868,17 @@ stubPreparedMessages.set("timerDoesntExi
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.table('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.table('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924801,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -894,17 +894,17 @@ stubPreparedMessages.set("console.table(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.table(['a', 'b', 'c'])", new ConsoleMessage({
+stubPreparedMessages.set(`console.table(['a', 'b', 'c'])`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924859,
   "type": "table",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -937,17 +937,17 @@ stubPreparedMessages.set("console.table(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.group('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.group('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924863,
   "type": "startGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -963,17 +963,17 @@ stubPreparedMessages.set("console.group(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924864,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -987,17 +987,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupCollapsed('foo')", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupCollapsed('foo')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924870,
   "type": "startGroupCollapsed",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1013,17 +1013,17 @@ stubPreparedMessages.set("console.groupC
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd('foo')", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd('foo')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924871,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1037,17 +1037,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.group()", new ConsoleMessage({
+stubPreparedMessages.set(`console.group()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924878,
   "type": "startGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1063,17 +1063,17 @@ stubPreparedMessages.set("console.group(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd()", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924879,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1087,17 +1087,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log(%cfoobar)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log(%cfoobar)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924883,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1117,17 +1117,17 @@ stubPreparedMessages.set("console.log(%c
   "userProvidedStyles": [
     "color:blue;font-size:1.3em;background:url('http://example.com/test');position:absolute;top:10px",
     "color:red;background:url('http://example.com/test')"
   ],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.group(%cfoo%cbar)", new ConsoleMessage({
+stubPreparedMessages.set(`console.group(%cfoo%cbar)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924887,
   "type": "startGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1147,17 +1147,17 @@ stubPreparedMessages.set("console.group(
   "userProvidedStyles": [
     "color:blue;font-size:1.3em;background:url('http://example.com/test');position:absolute;top:10px",
     "color:red;background:url('http://example.com/test')"
   ],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd(%cfoo%cbar)", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd(%cfoo%cbar)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924887,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1171,17 +1171,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupCollapsed(%cfoo%cbaz)", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupCollapsed(%cfoo%cbaz)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924892,
   "type": "startGroupCollapsed",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1201,17 +1201,17 @@ stubPreparedMessages.set("console.groupC
   "userProvidedStyles": [
     "color:blue;font-size:1.3em;background:url('http://example.com/test');position:absolute;top:10px",
     "color:red;background:url('http://example.com/test')"
   ],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd(%cfoo%cbaz)", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd(%cfoo%cbaz)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924893,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1225,17 +1225,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.dir({C, M, Y, K})", new ConsoleMessage({
+stubPreparedMessages.set(`console.dir({C, M, Y, K})`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924899,
   "type": "dir",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1292,17 +1292,17 @@ stubPreparedMessages.set("console.dir({C
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | default: 1", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | default: 1`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913333,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "default: 1",
@@ -1316,17 +1316,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | default: 2", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | default: 2`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "default: 2",
@@ -1340,17 +1340,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | test counter: 1", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | test counter: 1`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "test counter: 1",
@@ -1364,17 +1364,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | test counter: 2", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | test counter: 2`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "test counter: 2",
@@ -1388,17 +1388,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | default: 3", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | default: 3`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "default: 3",
@@ -1412,17 +1412,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | clear", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | clear`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "clear",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1438,17 +1438,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | default: 4", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | default: 4`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913335,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "default: 4",
@@ -1462,17 +1462,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | test counter: 3", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | test counter: 3`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913335,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "test counter: 3",
@@ -1486,17 +1486,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPackets.set("console.log('foobar', 'test')", {
+stubPackets.set(`console.log('foobar', 'test')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foobar",
       "test"
     ],
@@ -1512,17 +1512,17 @@ stubPackets.set("console.log('foobar', '
     "styles": [],
     "timeStamp": 1502884924471,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log(undefined)", {
+stubPackets.set(`console.log(undefined)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "undefined"
       }
@@ -1539,17 +1539,17 @@ stubPackets.set("console.log(undefined)"
     "styles": [],
     "timeStamp": 1502884924479,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.warn('danger, will robinson!')", {
+stubPackets.set(`console.warn('danger, will robinson!')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "danger, will robinson!"
     ],
     "columnNumber": 27,
@@ -1564,17 +1564,17 @@ stubPackets.set("console.warn('danger, w
     "styles": [],
     "timeStamp": 1502884924487,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log(NaN)", {
+stubPackets.set(`console.log(NaN)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "NaN"
       }
@@ -1591,17 +1591,17 @@ stubPackets.set("console.log(NaN)", {
     "styles": [],
     "timeStamp": 1502884924495,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log(null)", {
+stubPackets.set(`console.log(null)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "null"
       }
@@ -1618,17 +1618,17 @@ stubPackets.set("console.log(null)", {
     "styles": [],
     "timeStamp": 1502884924501,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('鼬')", {
+stubPackets.set(`console.log('鼬')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "鼬"
     ],
     "columnNumber": 27,
@@ -1643,17 +1643,17 @@ stubPackets.set("console.log('鼬')", {
     "styles": [],
     "timeStamp": 1502884924506,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.clear()", {
+stubPackets.set(`console.clear()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 27,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -1666,17 +1666,17 @@ stubPackets.set("console.clear()", {
     "timeStamp": 1502884924512,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count('bar')", {
+stubPackets.set(`console.count('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 27,
@@ -1694,17 +1694,17 @@ stubPackets.set("console.count('bar')", 
     "timeStamp": 1502884924515,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.assert(false, {message: 'foobar'})", {
+stubPackets.set(`console.assert(false, {message: 'foobar'})`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj30",
@@ -1750,17 +1750,17 @@ stubPackets.set("console.assert(false, {
         "lineNumber": 1
       }
     ],
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('hello \nfrom \rthe \"string world!')", {
+stubPackets.set(`console.log('hello \nfrom \rthe \"string world!')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "hello \nfrom \rthe \"string world!"
     ],
     "columnNumber": 27,
@@ -1775,17 +1775,17 @@ stubPackets.set("console.log('hello \nfr
     "styles": [],
     "timeStamp": 1502884924528,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('úṇĩçödê țĕșť')", {
+stubPackets.set(`console.log('úṇĩçödê țĕșť')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "úṇĩçödê țĕșť"
     ],
     "columnNumber": 27,
@@ -1800,17 +1800,17 @@ stubPackets.set("console.log('úṇĩçödê țĕșť')", {
     "styles": [],
     "timeStamp": 1502884924586,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.dirxml(window)", {
+stubPackets.set(`console.dirxml(window)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj31",
@@ -1837,17 +1837,17 @@ stubPackets.set("console.dirxml(window)"
     "timeStamp": 1502884924596,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('myarray', ['red', 'green', 'blue'])", {
+stubPackets.set(`console.log('myarray', ['red', 'green', 'blue'])`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "myarray",
       {
         "type": "object",
@@ -1880,17 +1880,17 @@ stubPackets.set("console.log('myarray', 
     "styles": [],
     "timeStamp": 1502884924604,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('myregex', /a.b.c/)", {
+stubPackets.set(`console.log('myregex', /a.b.c/)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "myregex",
       {
         "type": "object",
@@ -1915,17 +1915,17 @@ stubPackets.set("console.log('myregex', 
     "styles": [],
     "timeStamp": 1502884924610,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.table(['red', 'green', 'blue']);", {
+stubPackets.set(`console.table(['red', 'green', 'blue']);`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj34",
@@ -1957,17 +1957,17 @@ stubPackets.set("console.table(['red', '
     "timeStamp": 1502884924612,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});", {
+stubPackets.set(`console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "myobject",
       {
         "type": "object",
@@ -2018,17 +2018,17 @@ stubPackets.set("console.log('myobject',
     "styles": [],
     "timeStamp": 1502884924614,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.debug('debug message');", {
+stubPackets.set(`console.debug('debug message');`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "debug message"
     ],
     "columnNumber": 27,
@@ -2043,17 +2043,17 @@ stubPackets.set("console.debug('debug me
     "styles": [],
     "timeStamp": 1502884924621,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.info('info message');", {
+stubPackets.set(`console.info('info message');`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "info message"
     ],
     "columnNumber": 27,
@@ -2068,17 +2068,17 @@ stubPackets.set("console.info('info mess
     "styles": [],
     "timeStamp": 1502884924625,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.error('error message');", {
+stubPackets.set(`console.error('error message');`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "error message"
     ],
     "columnNumber": 27,
@@ -2101,17 +2101,17 @@ stubPackets.set("console.error('error me
         "lineNumber": 1
       }
     ],
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('mymap')", {
+stubPackets.set(`console.log('mymap')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "mymap",
       {
         "type": "object",
@@ -2149,17 +2149,17 @@ stubPackets.set("console.log('mymap')", 
     "styles": [],
     "timeStamp": 1502884924631,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('myset')", {
+stubPackets.set(`console.log('myset')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "myset",
       {
         "type": "object",
@@ -2191,17 +2191,17 @@ stubPackets.set("console.log('myset')", 
     "styles": [],
     "timeStamp": 1502884924746,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.trace()", {
+stubPackets.set(`console.trace()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 3,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2234,17 +2234,17 @@ stubPackets.set("console.trace()", {
       }
     ],
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.time('bar')", {
+stubPackets.set(`console.time('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2261,17 +2261,17 @@ stubPackets.set("console.time('bar')", {
       "name": "bar"
     },
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("timerAlreadyExists", {
+stubPackets.set(`timerAlreadyExists`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2289,17 +2289,17 @@ stubPackets.set("timerAlreadyExists", {
       "name": "bar"
     },
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.timeEnd('bar')", {
+stubPackets.set(`console.timeEnd('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2317,17 +2317,17 @@ stubPackets.set("console.timeEnd('bar')"
       "name": "bar"
     },
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("timerDoesntExist", {
+stubPackets.set(`timerDoesntExist`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2345,17 +2345,17 @@ stubPackets.set("timerDoesntExist", {
       "name": "bar"
     },
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.table('bar')", {
+stubPackets.set(`console.table('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2370,17 +2370,17 @@ stubPackets.set("console.table('bar')", 
     "timeStamp": 1502884924801,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.table(['a', 'b', 'c'])", {
+stubPackets.set(`console.table(['a', 'b', 'c'])`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj39",
@@ -2412,17 +2412,17 @@ stubPackets.set("console.table(['a', 'b'
     "timeStamp": 1502884924859,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.group('bar')", {
+stubPackets.set(`console.group('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2437,17 +2437,17 @@ stubPackets.set("console.group('bar')", 
     "styles": [],
     "timeStamp": 1502884924863,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd('bar')", {
+stubPackets.set(`console.groupEnd('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2460,17 +2460,17 @@ stubPackets.set("console.groupEnd('bar')
     "timeStamp": 1502884924864,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupCollapsed('foo')", {
+stubPackets.set(`console.groupCollapsed('foo')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foo"
     ],
     "columnNumber": 1,
@@ -2485,17 +2485,17 @@ stubPackets.set("console.groupCollapsed(
     "styles": [],
     "timeStamp": 1502884924870,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd('foo')", {
+stubPackets.set(`console.groupEnd('foo')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2508,17 +2508,17 @@ stubPackets.set("console.groupEnd('foo')
     "timeStamp": 1502884924871,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.group()", {
+stubPackets.set(`console.group()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2531,17 +2531,17 @@ stubPackets.set("console.group()", {
     "styles": [],
     "timeStamp": 1502884924878,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd()", {
+stubPackets.set(`console.groupEnd()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2554,17 +2554,17 @@ stubPackets.set("console.groupEnd()", {
     "timeStamp": 1502884924879,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log(%cfoobar)", {
+stubPackets.set(`console.log(%cfoobar)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foo",
       "bar"
     ],
@@ -2583,17 +2583,17 @@ stubPackets.set("console.log(%cfoobar)",
     ],
     "timeStamp": 1502884924883,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.group(%cfoo%cbar)", {
+stubPackets.set(`console.group(%cfoo%cbar)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foo",
       "bar"
     ],
@@ -2612,17 +2612,17 @@ stubPackets.set("console.group(%cfoo%cba
     ],
     "timeStamp": 1502884924887,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd(%cfoo%cbar)", {
+stubPackets.set(`console.groupEnd(%cfoo%cbar)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2635,17 +2635,17 @@ stubPackets.set("console.groupEnd(%cfoo%
     "timeStamp": 1502884924887,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupCollapsed(%cfoo%cbaz)", {
+stubPackets.set(`console.groupCollapsed(%cfoo%cbaz)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foo",
       "baz"
     ],
@@ -2664,17 +2664,17 @@ stubPackets.set("console.groupCollapsed(
     ],
     "timeStamp": 1502884924892,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd(%cfoo%cbaz)", {
+stubPackets.set(`console.groupEnd(%cfoo%cbaz)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2687,17 +2687,17 @@ stubPackets.set("console.groupEnd(%cfoo%
     "timeStamp": 1502884924893,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.dir({C, M, Y, K})", {
+stubPackets.set(`console.dir({C, M, Y, K})`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj40",
@@ -2753,17 +2753,17 @@ stubPackets.set("console.dir({C, M, Y, K
     "timeStamp": 1502884924899,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | default: 1", {
+stubPackets.set(`console.count | default: 1`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "default"
     ],
     "columnNumber": 5,
@@ -2781,17 +2781,17 @@ stubPackets.set("console.count | default
     "timeStamp": 1511365913333,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | default: 2", {
+stubPackets.set(`console.count | default: 2`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "default"
     ],
     "columnNumber": 5,
@@ -2809,17 +2809,17 @@ stubPackets.set("console.count | default
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | test counter: 1", {
+stubPackets.set(`console.count | test counter: 1`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "test counter"
     ],
     "columnNumber": 5,
@@ -2837,17 +2837,17 @@ stubPackets.set("console.count | test co
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | test counter: 2", {
+stubPackets.set(`console.count | test counter: 2`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "test counter"
     ],
     "columnNumber": 5,
@@ -2865,17 +2865,17 @@ stubPackets.set("console.count | test co
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | default: 3", {
+stubPackets.set(`console.count | default: 3`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "default"
     ],
     "columnNumber": 5,
@@ -2893,17 +2893,17 @@ stubPackets.set("console.count | default
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | clear", {
+stubPackets.set(`console.count | clear`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 5,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2916,17 +2916,17 @@ stubPackets.set("console.count | clear",
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | default: 4", {
+stubPackets.set(`console.count | default: 4`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "default"
     ],
     "columnNumber": 5,
@@ -2944,17 +2944,17 @@ stubPackets.set("console.count | default
     "timeStamp": 1511365913335,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | test counter: 3", {
+stubPackets.set(`console.count | test counter: 3`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "test counter"
     ],
     "columnNumber": 5,
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/cssMessage.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/cssMessage.js
@@ -8,17 +8,17 @@
  * THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
  */
 
 const { ConsoleMessage } =
   require("devtools/client/webconsole/new-console-output/types");
 
 let stubPreparedMessages = new Map();
 let stubPackets = new Map();
-stubPreparedMessages.set("Unknown property ‘such-unknown-property’.  Declaration dropped.", new ConsoleMessage({
+stubPreparedMessages.set(`Unknown property ‘such-unknown-property’.  Declaration dropped.`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "css",
   "timeStamp": 1479159920406,
   "type": "log",
   "helperType": null,
   "level": "warn",
   "messageText": "Unknown property ‘such-unknown-property’.  Declaration dropped.",
@@ -31,17 +31,17 @@ stubPreparedMessages.set("Unknown property ‘such-unknown-property’.  Declaration dropped.", new ConsoleMessage({
     "column": 25
   },
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("Error in parsing value for ‘padding-top’.  Declaration dropped.", new ConsoleMessage({
+stubPreparedMessages.set(`Error in parsing value for ‘padding-top’.  Declaration dropped.`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "css",
   "timeStamp": 1479159920465,
   "type": "log",
   "helperType": null,
   "level": "warn",
   "messageText": "Error in parsing value for ‘padding-top’.  Declaration dropped.",
@@ -54,17 +54,17 @@ stubPreparedMessages.set("Error in parsing value for ‘padding-top’.  Declaration dropped.", new ConsoleMessage({
     "column": 16
   },
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPackets.set("Unknown property ‘such-unknown-property’.  Declaration dropped.", {
+stubPackets.set(`Unknown property ‘such-unknown-property’.  Declaration dropped.`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": "Unknown property ‘such-unknown-property’.  Declaration dropped.",
     "errorMessageName": "",
     "sourceName": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-css-message.html",
     "lineText": "",
     "lineNumber": 3,
@@ -77,17 +77,17 @@ stubPackets.set("Unknown property ‘such-unknown-property’.  Declaration dropped.", {
     "strict": false,
     "info": false,
     "private": false,
     "stacktrace": null,
     "notes": null
   }
 });
 
-stubPackets.set("Error in parsing value for ‘padding-top’.  Declaration dropped.", {
+stubPackets.set(`Error in parsing value for ‘padding-top’.  Declaration dropped.`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": "Error in parsing value for ‘padding-top’.  Declaration dropped.",
     "errorMessageName": "",
     "sourceName": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-css-message.html",
     "lineText": "",
     "lineNumber": 3,
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js
@@ -8,17 +8,17 @@
  * THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
  */
 
 const { ConsoleMessage } =
   require("devtools/client/webconsole/new-console-output/types");
 
 let stubPreparedMessages = new Map();
 let stubPackets = new Map();
-stubPreparedMessages.set("new Date(0)", new ConsoleMessage({
+stubPreparedMessages.set(`new Date(0)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1479159921364,
   "type": "result",
   "helperType": null,
   "level": "log",
   "parameters": [
@@ -39,17 +39,17 @@ stubPreparedMessages.set("new Date(0)", 
   "stacktrace": null,
   "frame": null,
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("asdf()", new ConsoleMessage({
+stubPreparedMessages.set(`asdf()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1479159921377,
   "type": "result",
   "helperType": null,
   "level": "error",
   "messageText": "ReferenceError: asdf is not defined",
@@ -67,17 +67,17 @@ stubPreparedMessages.set("asdf()", new C
   },
   "groupId": null,
   "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Not_defined?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default",
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("1 + @", new ConsoleMessage({
+stubPreparedMessages.set(`1 + @`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1479159921399,
   "type": "result",
   "helperType": null,
   "level": "error",
   "messageText": "SyntaxError: illegal character",
@@ -95,17 +95,17 @@ stubPreparedMessages.set("1 + @", new Co
   },
   "groupId": null,
   "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Illegal_character?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default",
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("inspect({a: 1})", new ConsoleMessage({
+stubPreparedMessages.set(`inspect({a: 1})`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1499776070751,
   "type": "result",
   "helperType": "inspectObject",
   "level": "log",
   "parameters": [
@@ -138,17 +138,17 @@ stubPreparedMessages.set("inspect({a: 1}
   "stacktrace": null,
   "frame": null,
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("cd(document)", new ConsoleMessage({
+stubPreparedMessages.set(`cd(document)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1510650094657,
   "type": "result",
   "helperType": "error",
   "level": "error",
   "messageText": "Cannot cd() to the given window. Invalid argument.",
@@ -161,17 +161,17 @@ stubPreparedMessages.set("cd(document)",
   "stacktrace": null,
   "frame": null,
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("longString message Error", new ConsoleMessage({
+stubPreparedMessages.set(`longString message Error`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1493108241073,
   "type": "result",
   "helperType": null,
   "level": "error",
   "messageText": {
@@ -189,17 +189,63 @@ stubPreparedMessages.set("longString mes
   "stacktrace": null,
   "frame": null,
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPackets.set("new Date(0)", {
+stubPreparedMessages.set(`eval throw ""`, new ConsoleMessage({
+  "id": "1",
+  "allowRepeating": true,
+  "source": "javascript",
+  "timeStamp": 1517990289517,
+  "type": "result",
+  "helperType": null,
+  "level": "error",
+  "messageText": "Error",
+  "parameters": [
+    {
+      "type": "undefined"
+    }
+  ],
+  "repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"Error\",\"parameters\":[{\"type\":\"undefined\"}],\"source\":\"javascript\",\"type\":\"result\",\"userProvidedStyles\":null}",
+  "stacktrace": null,
+  "frame": null,
+  "groupId": null,
+  "userProvidedStyles": null,
+  "notes": null,
+  "indent": 0
+}));
+
+stubPreparedMessages.set(`eval throw "tomato"`, new ConsoleMessage({
+  "id": "1",
+  "allowRepeating": true,
+  "source": "javascript",
+  "timeStamp": 1517990289520,
+  "type": "result",
+  "helperType": null,
+  "level": "error",
+  "messageText": "Error: tomato",
+  "parameters": [
+    {
+      "type": "undefined"
+    }
+  ],
+  "repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"Error: tomato\",\"parameters\":[{\"type\":\"undefined\"}],\"source\":\"javascript\",\"type\":\"result\",\"userProvidedStyles\":null}",
+  "stacktrace": null,
+  "frame": null,
+  "groupId": null,
+  "userProvidedStyles": null,
+  "notes": null,
+  "indent": 0
+}));
+
+stubPackets.set(`new Date(0)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "new Date(0)",
   "result": {
     "type": "object",
     "actor": "server1.conn0.child1/obj30",
     "class": "Date",
     "extensible": true,
     "frozen": false,
@@ -211,17 +257,17 @@ stubPackets.set("new Date(0)", {
   },
   "timestamp": 1479159921364,
   "exception": null,
   "frame": null,
   "helperResult": null,
   "notes": null
 });
 
-stubPackets.set("asdf()", {
+stubPackets.set(`asdf()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "asdf()",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1479159921377,
   "exception": {
     "type": "object",
@@ -247,17 +293,17 @@ stubPackets.set("asdf()", {
     "source": "debugger eval code",
     "line": 1,
     "column": 1
   },
   "helperResult": null,
   "notes": null
 });
 
-stubPackets.set("1 + @", {
+stubPackets.set(`1 + @`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "1 + @",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1479159921399,
   "exception": {
     "type": "object",
@@ -283,17 +329,17 @@ stubPackets.set("1 + @", {
     "source": "debugger eval code",
     "line": 1,
     "column": 4
   },
   "helperResult": null,
   "notes": null
 });
 
-stubPackets.set("inspect({a: 1})", {
+stubPackets.set(`inspect({a: 1})`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "inspect({a: 1})",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1499776070751,
   "exception": null,
   "frame": null,
@@ -323,33 +369,33 @@ stubPackets.set("inspect({a: 1})", {
         "ownSymbolsLength": 0,
         "safeGetterValues": {}
       }
     }
   },
   "notes": null
 });
 
-stubPackets.set("cd(document)", {
+stubPackets.set(`cd(document)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "cd(document)",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1510650094657,
   "exception": null,
   "frame": null,
   "helperResult": {
     "type": "error",
     "message": "cdFunctionInvalidArgument"
   },
   "notes": null
 });
 
-stubPackets.set("longString message Error", {
+stubPackets.set(`longString message Error`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "throw new Error(\"Long error \".repeat(10000))",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1493108241073,
   "exception": {
     "type": "object",
@@ -380,12 +426,40 @@ stubPackets.set("longString message Erro
     "length": 110007,
     "actor": "server1.conn0.child1/longString37"
   },
   "frame": null,
   "helperResult": null,
   "notes": null
 });
 
+stubPackets.set(`eval throw ""`, {
+  "from": "server1.conn0.child1/consoleActor2",
+  "input": "throw \"\"",
+  "result": {
+    "type": "undefined"
+  },
+  "timestamp": 1517990289517,
+  "exception": "",
+  "exceptionMessage": "",
+  "frame": null,
+  "helperResult": null,
+  "notes": null
+});
+
+stubPackets.set(`eval throw "tomato"`, {
+  "from": "server1.conn0.child1/consoleActor2",
+  "input": "throw \"tomato\"",
+  "result": {
+    "type": "undefined"
+  },
+  "timestamp": 1517990289520,
+  "exception": "tomato",
+  "exceptionMessage": "tomato",
+  "frame": null,
+  "helperResult": null,
+  "notes": null
+});
+
 module.exports = {
   stubPreparedMessages,
   stubPackets,
 };
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/networkEvent.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/networkEvent.js
@@ -242,17 +242,17 @@ stubPreparedMessages.set("XHR POST reque
     "host": "example.com",
     "scheme": "http",
     "unicodeUrl": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
     "isLocal": null
   },
   "method": "POST"
 }));
 
-stubPackets.set("GET request", {
+stubPackets.set(`GET request`, {
   "_type": "NetworkEvent",
   "timeStamp": 1487022056850,
   "node": null,
   "actor": "server1.conn0.child1/netEvent30",
   "discardRequestBody": true,
   "discardResponseBody": true,
   "startedDateTime": "2017-02-13T21:40:56.850Z",
   "request": {
@@ -267,17 +267,17 @@ stubPackets.set("GET request", {
   },
   "response": {},
   "timings": {},
   "updates": [],
   "private": false,
   "from": "server1.conn0.child1/consoleActor2"
 });
 
-stubPackets.set("GET request update", {
+stubPackets.set(`GET request update`, {
   "networkInfo": {
     "_type": "NetworkEvent",
     "actor": "server1.conn0.child1/netEvent30",
     "request": {
       "url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
       "method": "GET",
       "headersSize": 489
     },
@@ -293,17 +293,17 @@ stubPackets.set("GET request update", {
       },
       "bodySize": 904,
       "transferredSize": 904
     },
     "totalTime": 16
   }
 });
 
-stubPackets.set("XHR GET request", {
+stubPackets.set(`XHR GET request`, {
   "_type": "NetworkEvent",
   "timeStamp": 1487022057746,
   "node": null,
   "actor": "server1.conn1.child1/netEvent30",
   "discardRequestBody": true,
   "discardResponseBody": true,
   "startedDateTime": "2017-02-13T21:40:57.746Z",
   "request": {
@@ -318,17 +318,17 @@ stubPackets.set("XHR GET request", {
   },
   "response": {},
   "timings": {},
   "updates": [],
   "private": false,
   "from": "server1.conn1.child1/consoleActor2"
 });
 
-stubPackets.set("XHR GET request update", {
+stubPackets.set(`XHR GET request update`, {
   "networkInfo": {
     "_type": "NetworkEvent",
     "actor": "server1.conn0.child1/netEvent31",
     "request": {
       "url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
       "method": "GET",
       "headersSize": 489
     },
@@ -344,17 +344,17 @@ stubPackets.set("XHR GET request update"
       },
       "bodySize": 904,
       "transferredSize": 904
     },
     "totalTime": 16
   }
 });
 
-stubPackets.set("XHR POST request", {
+stubPackets.set(`XHR POST request`, {
   "_type": "NetworkEvent",
   "timeStamp": 1487022058414,
   "node": null,
   "actor": "server1.conn2.child1/netEvent30",
   "discardRequestBody": true,
   "discardResponseBody": true,
   "startedDateTime": "2017-02-13T21:40:58.414Z",
   "request": {
@@ -369,17 +369,17 @@ stubPackets.set("XHR POST request", {
   },
   "response": {},
   "timings": {},
   "updates": [],
   "private": false,
   "from": "server1.conn2.child1/consoleActor2"
 });
 
-stubPackets.set("XHR POST request update", {
+stubPackets.set(`XHR POST request update`, {
   "networkInfo": {
     "_type": "NetworkEvent",
     "actor": "server1.conn0.child1/netEvent32",
     "request": {
       "url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
       "method": "POST",
       "headersSize": 509
     },
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/pageError.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/pageError.js
@@ -8,17 +8,17 @@
  * THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
  */
 
 const { ConsoleMessage } =
   require("devtools/client/webconsole/new-console-output/types");
 
 let stubPreparedMessages = new Map();
 let stubPackets = new Map();
-stubPreparedMessages.set("ReferenceError: asdf is not defined", new ConsoleMessage({
+stubPreparedMessages.set(`ReferenceError: asdf is not defined`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1476573167137,
   "type": "log",
   "helperType": null,
   "level": "error",
   "messageText": "ReferenceError: asdf is not defined",
@@ -63,17 +63,17 @@ stubPreparedMessages.set("ReferenceError
   },
   "groupId": null,
   "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Not_defined?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default",
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("SyntaxError: redeclaration of let a", new ConsoleMessage({
+stubPreparedMessages.set(`SyntaxError: redeclaration of let a`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1487992945524,
   "type": "log",
   "helperType": null,
   "level": "error",
   "messageText": "SyntaxError: redeclaration of let a",
@@ -108,17 +108,17 @@ stubPreparedMessages.set("SyntaxError: r
         "line": 2,
         "column": 6
       }
     }
   ],
   "indent": 0
 }));
 
-stubPreparedMessages.set("TypeError longString message", new ConsoleMessage({
+stubPreparedMessages.set(`TypeError longString message`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1493109507061,
   "type": "log",
   "helperType": null,
   "level": "error",
   "messageText": {
@@ -155,17 +155,55 @@ stubPreparedMessages.set("TypeError long
     "column": 7
   },
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPackets.set("ReferenceError: asdf is not defined", {
+stubPreparedMessages.set(`throw ""`, new ConsoleMessage({
+  "id": "1",
+  "allowRepeating": true,
+  "source": "javascript",
+  "timeStamp": 1517942398629,
+  "type": "log",
+  "helperType": null,
+  "level": "error",
+  "messageText": "uncaught exception: ",
+  "parameters": null,
+  "repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"uncaught exception: \",\"parameters\":null,\"source\":\"javascript\",\"type\":\"log\",\"userProvidedStyles\":null}",
+  "stacktrace": null,
+  "frame": null,
+  "groupId": null,
+  "userProvidedStyles": null,
+  "notes": null,
+  "indent": 0
+}));
+
+stubPreparedMessages.set(`throw "tomato"`, new ConsoleMessage({
+  "id": "1",
+  "allowRepeating": true,
+  "source": "javascript",
+  "timeStamp": 1517942398637,
+  "type": "log",
+  "helperType": null,
+  "level": "error",
+  "messageText": "uncaught exception: tomato",
+  "parameters": null,
+  "repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"uncaught exception: tomato\",\"parameters\":null,\"source\":\"javascript\",\"type\":\"log\",\"userProvidedStyles\":null}",
+  "stacktrace": null,
+  "frame": null,
+  "groupId": null,
+  "userProvidedStyles": null,
+  "notes": null,
+  "indent": 0
+}));
+
+stubPackets.set(`ReferenceError: asdf is not defined`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": "ReferenceError: asdf is not defined",
     "errorMessageName": "JSMSG_NOT_DEFINED",
     "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Not_defined?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default",
     "sourceName": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
     "lineText": "",
@@ -210,17 +248,17 @@ stubPackets.set("ReferenceError: asdf is
         "columnNumber": 20,
         "functionName": null
       }
     ],
     "notes": null
   }
 });
 
-stubPackets.set("SyntaxError: redeclaration of let a", {
+stubPackets.set(`SyntaxError: redeclaration of let a`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": "SyntaxError: redeclaration of let a",
     "errorMessageName": "JSMSG_REDECLARED_VAR",
     "sourceName": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
     "lineText": "  let a, a;\n",
     "lineNumber": 2,
@@ -255,17 +293,17 @@ stubPackets.set("SyntaxError: redeclarat
           "line": 2,
           "column": 6
         }
       }
     ]
   }
 });
 
-stubPackets.set("TypeError longString message", {
+stubPackets.set(`TypeError longString message`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": {
       "type": "longString",
       "initial": "Error: Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Lon",
       "length": 110007,
       "actor": "server1.conn0.child1/longString30"
@@ -302,12 +340,58 @@ stubPackets.set("TypeError longString me
         "columnNumber": 20,
         "functionName": null
       }
     ],
     "notes": null
   }
 });
 
+stubPackets.set(`throw ""`, {
+  "from": "server1.conn0.child1/consoleActor2",
+  "type": "pageError",
+  "pageError": {
+    "errorMessage": "uncaught exception: ",
+    "errorMessageName": "JSMSG_UNCAUGHT_EXCEPTION",
+    "sourceName": "",
+    "lineText": "",
+    "lineNumber": 0,
+    "columnNumber": 0,
+    "category": "content javascript",
+    "timeStamp": 1517942398629,
+    "warning": false,
+    "error": false,
+    "exception": false,
+    "strict": false,
+    "info": false,
+    "private": false,
+    "stacktrace": null,
+    "notes": null
+  }
+});
+
+stubPackets.set(`throw "tomato"`, {
+  "from": "server1.conn0.child1/consoleActor2",
+  "type": "pageError",
+  "pageError": {
+    "errorMessage": "uncaught exception: tomato",
+    "errorMessageName": "JSMSG_UNCAUGHT_EXCEPTION",
+    "sourceName": "",
+    "lineText": "",
+    "lineNumber": 0,
+    "columnNumber": 0,
+    "category": "content javascript",
+    "timeStamp": 1517942398637,
+    "warning": false,
+    "error": false,
+    "exception": false,
+    "strict": false,
+    "info": false,
+    "private": false,
+    "stacktrace": null,
+    "notes": null
+  }
+});
+
 module.exports = {
   stubPreparedMessages,
   stubPackets,
 };