Bug 1436110 - Fix stub generation and update existing stubs; r=bgrins. draft
authorNicolas Chevobbe <nchevobbe@mozilla.com>
Wed, 07 Feb 2018 09:43:24 +0100
changeset 751968 2eb0fc46eb2b44acb9c1d3794f38d89e4628cb75
parent 751967 90a95af6bf7f5046e652b02263ae118fc4156693
child 751969 ac9bed946c47f6afcdbe085de82530a9edfd52e6
push id98110
push userbmo:nchevobbe@mozilla.com
push dateWed, 07 Feb 2018 08:45:22 +0000
reviewersbgrins
bugs1436110
milestone60.0a1
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,
 };