Bug 1252099 - Main eslint cleanup of markupview tests; r=zer0
authorPatrick Brosset <pbrosset@mozilla.com>
Thu, 03 Mar 2016 16:20:03 +0100
changeset 323228 6623a3cc2457224adbc8e40974ea72af48baa0c7
parent 323227 7df031670bc97f846929f551b83b04c280079ccf
child 323229 ea1e990cbed00987c08886a2358379e1fc2778dc
push id5913
push userjlund@mozilla.com
push dateMon, 25 Apr 2016 16:57:49 +0000
treeherdermozilla-beta@dcaf0a6fa115 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerszer0
bugs1252099
milestone47.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 1252099 - Main eslint cleanup of markupview tests; r=zer0 MozReview-Commit-ID: FJpdiPUeVcr
devtools/client/inspector/markup/test/actor_events_form.js
devtools/client/inspector/markup/test/browser_markup_anonymous_01.js
devtools/client/inspector/markup/test/browser_markup_anonymous_02.js
devtools/client/inspector/markup/test/browser_markup_anonymous_03.js
devtools/client/inspector/markup/test/browser_markup_anonymous_04.js
devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute.js
devtools/client/inspector/markup/test/browser_markup_dragdrop_invalidNodes.js
devtools/client/inspector/markup/test/browser_markup_dragdrop_tooltip.js
devtools/client/inspector/markup/test/browser_markup_events-overflow.js
devtools/client/inspector/markup/test/browser_markup_events.js
devtools/client/inspector/markup/test/browser_markup_events_form.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_1.0.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_1.1.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_1.11.1.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_1.2.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_1.3.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_1.4.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_1.6.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_1.7.js
devtools/client/inspector/markup/test/browser_markup_events_jquery_2.1.1.js
devtools/client/inspector/markup/test/browser_markup_html_edit_01.js
devtools/client/inspector/markup/test/browser_markup_html_edit_02.js
devtools/client/inspector/markup/test/browser_markup_image_tooltip_mutations.js
devtools/client/inspector/markup/test/browser_markup_keybindings_03.js
devtools/client/inspector/markup/test/browser_markup_links_01.js
devtools/client/inspector/markup/test/browser_markup_links_02.js
devtools/client/inspector/markup/test/browser_markup_links_03.js
devtools/client/inspector/markup/test/browser_markup_links_04.js
devtools/client/inspector/markup/test/browser_markup_links_07.js
devtools/client/inspector/markup/test/browser_markup_load_01.js
devtools/client/inspector/markup/test/browser_markup_mutation_01.js
devtools/client/inspector/markup/test/browser_markup_mutation_02.js
devtools/client/inspector/markup/test/browser_markup_node_not_displayed_01.js
devtools/client/inspector/markup/test/browser_markup_pagesize_02.js
devtools/client/inspector/markup/test/browser_markup_remove_xul_attributes.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_01.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_02.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_03.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_05.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_06.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_07.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_08.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_10.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_11.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_12.js
devtools/client/inspector/markup/test/browser_markup_tag_edit_13-other.js
devtools/client/inspector/markup/test/browser_markup_textcontent_edit_01.js
devtools/client/inspector/markup/test/browser_markup_toggle_01.js
devtools/client/inspector/markup/test/browser_markup_toggle_02.js
devtools/client/inspector/markup/test/head.js
devtools/client/inspector/markup/test/helper_attributes_test_runner.js
devtools/client/inspector/markup/test/helper_events_test_runner.js
devtools/client/inspector/markup/test/helper_outerhtml_test_runner.js
--- a/devtools/client/inspector/markup/test/actor_events_form.js
+++ b/devtools/client/inspector/markup/test/actor_events_form.js
@@ -6,17 +6,16 @@
 // This test actor is used for testing the addition of custom form data
 // on NodeActor. Custom form property is set when 'form' event is sent
 // by NodeActor actor (see 'onNodeActorForm' method).
 
 const Events = require("sdk/event/core");
 const {ActorClass, Actor, FrontClass, Front, method} =
   require("devtools/server/protocol");
 
-const {Cu} = require("chrome");
 const {NodeActor} = require("devtools/server/actors/inspector");
 
 var EventsFormActor = ActorClass({
   typeName: "eventsFormActor",
 
   initialize: function() {
     Actor.prototype.initialize.apply(this, arguments);
   },
--- a/devtools/client/inspector/markup/test/browser_markup_anonymous_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_anonymous_01.js
@@ -9,36 +9,36 @@ const TEST_URL = URL_ROOT + "doc_markup_
 
 add_task(function*() {
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   let pseudo = yield getNodeFront("#pseudo", inspector);
 
   // Markup looks like: <div><::before /><span /><::after /></div>
   let children = yield inspector.walker.children(pseudo);
-  is (children.nodes.length, 3, "Children returned from walker");
+  is(children.nodes.length, 3, "Children returned from walker");
 
-  info ("Checking the ::before pseudo element");
+  info("Checking the ::before pseudo element");
   let before = children.nodes[0];
   yield isEditingMenuDisabled(before, inspector);
 
-  info ("Checking the normal child element");
+  info("Checking the normal child element");
   let span = children.nodes[1];
   yield isEditingMenuEnabled(span, inspector);
 
-  info ("Checking the ::after pseudo element");
+  info("Checking the ::after pseudo element");
   let after = children.nodes[2];
   yield isEditingMenuDisabled(after, inspector);
 
   let native = yield getNodeFront("#native", inspector);
 
   // Markup looks like: <div><video controls /></div>
   let nativeChildren = yield inspector.walker.children(native);
-  is (nativeChildren.nodes.length, 1, "Children returned from walker");
+  is(nativeChildren.nodes.length, 1, "Children returned from walker");
 
-  info ("Checking the video element");
+  info("Checking the video element");
   let video = nativeChildren.nodes[0];
-  ok (!video.isAnonymous, "<video> is not anonymous");
+  ok(!video.isAnonymous, "<video> is not anonymous");
 
   let videoChildren = yield inspector.walker.children(video);
-  is (videoChildren.nodes.length, 0,
+  is(videoChildren.nodes.length, 0,
     "No native children returned from walker for <video> by default");
 });
--- a/devtools/client/inspector/markup/test/browser_markup_anonymous_02.js
+++ b/devtools/client/inspector/markup/test/browser_markup_anonymous_02.js
@@ -11,21 +11,21 @@ const TEST_URL = "chrome://devtools/cont
 
 add_task(function*() {
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   let toolbarbutton = yield getNodeFront("toolbarbutton", inspector);
   let children = yield inspector.walker.children(toolbarbutton);
 
   is(toolbarbutton.numChildren, 3, "Correct number of children");
-  is (children.nodes.length, 3, "Children returned from walker");
+  is(children.nodes.length, 3, "Children returned from walker");
 
   is(toolbarbutton.isAnonymous, false, "Toolbarbutton is not anonymous");
   yield isEditingMenuEnabled(toolbarbutton, inspector);
 
   for (let node of children.nodes) {
-    ok (node.isAnonymous, "Child is anonymous");
-    ok (node._form.isXBLAnonymous, "Child is XBL anonymous");
-    ok (!node._form.isShadowAnonymous, "Child is not shadow anonymous");
-    ok (!node._form.isNativeAnonymous, "Child is not native anonymous");
+    ok(node.isAnonymous, "Child is anonymous");
+    ok(node._form.isXBLAnonymous, "Child is XBL anonymous");
+    ok(!node._form.isShadowAnonymous, "Child is not shadow anonymous");
+    ok(!node._form.isNativeAnonymous, "Child is not native anonymous");
     yield isEditingMenuDisabled(node, inspector);
   }
 });
--- a/devtools/client/inspector/markup/test/browser_markup_anonymous_03.js
+++ b/devtools/client/inspector/markup/test/browser_markup_anonymous_03.js
@@ -12,23 +12,23 @@ const TEST_URL = URL_ROOT + "doc_markup_
 add_task(function*() {
   Services.prefs.setBoolPref("dom.webcomponents.enabled", true);
 
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   let shadow = yield getNodeFront("#shadow", inspector.markup);
   let children = yield inspector.walker.children(shadow);
 
-  is (shadow.numChildren, 3, "Children of the shadow root are counted");
-  is (children.nodes.length, 3, "Children returned from walker");
+  is(shadow.numChildren, 3, "Children of the shadow root are counted");
+  is(children.nodes.length, 3, "Children returned from walker");
 
-  info ("Checking the ::before pseudo element");
+  info("Checking the ::before pseudo element");
   let before = children.nodes[0];
   yield isEditingMenuDisabled(before, inspector);
 
-  info ("Checking the <h3> shadow element");
+  info("Checking the <h3> shadow element");
   let shadowChild1 = children.nodes[1];
   yield isEditingMenuDisabled(shadowChild1, inspector);
 
-  info ("Checking the <select> shadow element");
+  info("Checking the <select> shadow element");
   let shadowChild2 = children.nodes[2];
   yield isEditingMenuDisabled(shadowChild2, inspector);
 });
--- a/devtools/client/inspector/markup/test/browser_markup_anonymous_04.js
+++ b/devtools/client/inspector/markup/test/browser_markup_anonymous_04.js
@@ -1,36 +1,37 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
-// Test native anonymous content in the markupview with devtools.inspector.showAllAnonymousContent
-// set to true
+// Test native anonymous content in the markupview with
+// devtools.inspector.showAllAnonymousContent set to true
 const TEST_URL = URL_ROOT + "doc_markup_anonymous.html";
+const PREF = "devtools.inspector.showAllAnonymousContent";
 
 add_task(function*() {
-  Services.prefs.setBoolPref("devtools.inspector.showAllAnonymousContent", true);
+  Services.prefs.setBoolPref(PREF, true);
 
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   let native = yield getNodeFront("#native", inspector);
 
   // Markup looks like: <div><video controls /></div>
   let nativeChildren = yield inspector.walker.children(native);
-  is (nativeChildren.nodes.length, 1, "Children returned from walker");
+  is(nativeChildren.nodes.length, 1, "Children returned from walker");
 
-  info ("Checking the video element");
+  info("Checking the video element");
   let video = nativeChildren.nodes[0];
-  ok (!video.isAnonymous, "<video> is not anonymous");
+  ok(!video.isAnonymous, "<video> is not anonymous");
 
   let videoChildren = yield inspector.walker.children(video);
-  is (videoChildren.nodes.length, 3, "<video> has native anonymous children");
+  is(videoChildren.nodes.length, 3, "<video> has native anonymous children");
 
   for (let node of videoChildren.nodes) {
-    ok (node.isAnonymous, "Child is anonymous");
-    ok (!node._form.isXBLAnonymous, "Child is not XBL anonymous");
-    ok (!node._form.isShadowAnonymous, "Child is not shadow anonymous");
-    ok (node._form.isNativeAnonymous, "Child is native anonymous");
+    ok(node.isAnonymous, "Child is anonymous");
+    ok(!node._form.isXBLAnonymous, "Child is not XBL anonymous");
+    ok(!node._form.isShadowAnonymous, "Child is not shadow anonymous");
+    ok(node._form.isNativeAnonymous, "Child is native anonymous");
     yield isEditingMenuDisabled(node, inspector);
   }
 });
--- a/devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute.js
+++ b/devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute.js
@@ -17,55 +17,59 @@ const TEST_URL = URL_ROOT + "doc_markup_
 //  [
 //    what key to press,
 //    expected input box value after keypress,
 //    expected input.selectionStart,
 //    expected input.selectionEnd,
 //    is popup expected to be open ?
 //  ]
 const TEST_DATA = [
-  ['s', 's', 1, 1, false],
-  ['t', 'st', 2, 2, false],
-  ['y', 'sty', 3, 3, false],
-  ['l', 'styl', 4, 4, false],
-  ['e', 'style', 5, 5, false],
-  ['=', 'style=', 6, 6, false],
-  ['"', 'style="', 7, 7, false],
-  ['d', 'style="direction', 8, 16, true],
-  ['VK_DOWN', 'style="display', 8, 14, true],
-  ['VK_TAB', 'style="display', 14, 14, true],
-  ['VK_TAB', 'style="dominant-baseline', 24, 24, true],
-  ['VK_TAB', 'style="direction', 16, 16, true],
-  ['click_1', 'style="display', 14, 14, false],
-  [':', 'style="display:-moz-box', 15, 23, true],
-  ['n', 'style="display:none', 16, 19, false],
-  ['VK_BACK_SPACE', 'style="display:n', 16, 16, false],
-  ['VK_BACK_SPACE', 'style="display:', 15, 15, false],
-  [' ', 'style="display: -moz-box', 16, 24, true],
-  [' ', 'style="display:  -moz-box', 17, 25, true],
-  ['i', 'style="display:  inherit', 18, 24, true],
-  ['VK_RIGHT', 'style="display:  inherit', 24, 24, false],
-  [';', 'style="display:  inherit;', 25, 25, false],
-  [' ', 'style="display:  inherit; ', 26, 26, false],
-  [' ', 'style="display:  inherit;  ', 27, 27, false],
-  ['VK_LEFT', 'style="display:  inherit;  ', 26, 26, false],
-  ['c', 'style="display:  inherit; caption-side ', 27, 38, true],
-  ['o', 'style="display:  inherit; color ', 28, 31, true],
-  ['VK_RIGHT', 'style="display:  inherit; color ', 31, 31, false],
-  [' ', 'style="display:  inherit; color  ', 32, 32, false],
-  ['c', 'style="display:  inherit; color c ', 33, 33, false],
-  ['VK_BACK_SPACE', 'style="display:  inherit; color  ', 32, 32, false],
-  [':', 'style="display:  inherit; color :aliceblue ', 33, 42, true],
-  ['c', 'style="display:  inherit; color :cadetblue ', 34, 42, true],
-  ['VK_DOWN', 'style="display:  inherit; color :chartreuse ', 34, 43, true],
-  ['VK_RIGHT', 'style="display:  inherit; color :chartreuse ', 43, 43, false],
-  [' ', 'style="display:  inherit; color :chartreuse !important; ', 44, 55, true],
-  ['!', 'style="display:  inherit; color :chartreuse !important; ', 45, 55, false],
-  ['VK_RIGHT', 'style="display:  inherit; color :chartreuse !important; ', 55, 55, false],
-  ['VK_RETURN', 'style="display:  inherit; color :chartreuse !important;"', -1, -1, false]
+  ["s", "s", 1, 1, false],
+  ["t", "st", 2, 2, false],
+  ["y", "sty", 3, 3, false],
+  ["l", "styl", 4, 4, false],
+  ["e", "style", 5, 5, false],
+  ["=", "style=", 6, 6, false],
+  ["\"", "style=\"", 7, 7, false],
+  ["d", "style=\"direction", 8, 16, true],
+  ["VK_DOWN", "style=\"display", 8, 14, true],
+  ["VK_TAB", "style=\"display", 14, 14, true],
+  ["VK_TAB", "style=\"dominant-baseline", 24, 24, true],
+  ["VK_TAB", "style=\"direction", 16, 16, true],
+  ["click_1", "style=\"display", 14, 14, false],
+  [":", "style=\"display:-moz-box", 15, 23, true],
+  ["n", "style=\"display:none", 16, 19, false],
+  ["VK_BACK_SPACE", "style=\"display:n", 16, 16, false],
+  ["VK_BACK_SPACE", "style=\"display:", 15, 15, false],
+  [" ", "style=\"display: -moz-box", 16, 24, true],
+  [" ", "style=\"display:  -moz-box", 17, 25, true],
+  ["i", "style=\"display:  inherit", 18, 24, true],
+  ["VK_RIGHT", "style=\"display:  inherit", 24, 24, false],
+  [";", "style=\"display:  inherit;", 25, 25, false],
+  [" ", "style=\"display:  inherit; ", 26, 26, false],
+  [" ", "style=\"display:  inherit;  ", 27, 27, false],
+  ["VK_LEFT", "style=\"display:  inherit;  ", 26, 26, false],
+  ["c", "style=\"display:  inherit; caption-side ", 27, 38, true],
+  ["o", "style=\"display:  inherit; color ", 28, 31, true],
+  ["VK_RIGHT", "style=\"display:  inherit; color ", 31, 31, false],
+  [" ", "style=\"display:  inherit; color  ", 32, 32, false],
+  ["c", "style=\"display:  inherit; color c ", 33, 33, false],
+  ["VK_BACK_SPACE", "style=\"display:  inherit; color  ", 32, 32, false],
+  [":", "style=\"display:  inherit; color :aliceblue ", 33, 42, true],
+  ["c", "style=\"display:  inherit; color :cadetblue ", 34, 42, true],
+  ["VK_DOWN", "style=\"display:  inherit; color :chartreuse ", 34, 43, true],
+  ["VK_RIGHT", "style=\"display:  inherit; color :chartreuse ", 43, 43, false],
+  [" ", "style=\"display:  inherit; color :chartreuse !important; ",
+   44, 55, true],
+  ["!", "style=\"display:  inherit; color :chartreuse !important; ",
+   45, 55, false],
+  ["VK_RIGHT", "style=\"display:  inherit; color :chartreuse !important; ",
+   55, 55, false],
+  ["VK_RETURN", "style=\"display:  inherit; color :chartreuse !important;\"",
+   -1, -1, false]
 ];
 
 add_task(function*() {
   info("Opening the inspector on the test URL");
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   yield inspector.markup.expandAll();
 
@@ -92,17 +96,18 @@ add_task(function*() {
   while (inspector.markup.undo.canUndo()) {
     yield undoChange(inspector);
   }
   yield onMutation;
 });
 
 function enterData(index, editor, inspector) {
   let [key] = TEST_DATA[index];
-  info("Entering test data " + index + ": " + key + ", expecting: [" + TEST_DATA[index].slice(1) + "]");
+  let expected = TEST_DATA[index].slice(1);
+  info(`Entering test data ${index}: ${key}, expecting: [${expected}]`);
 
   let def = promise.defer();
 
   if (/click_[0-9]/.test(key)) {
     let nb = +key.split("_")[1];
     info("Clicking on item " + nb + " in the list");
     editor.once("after-suggest", () => {
       executeSoon(def.resolve);
@@ -126,28 +131,31 @@ function enterData(index, editor, inspec
     });
   }
   EventUtils.synthesizeKey(key, {}, inspector.panelWin);
 
   return def.promise;
 }
 
 function* checkData(index, editor, inspector) {
-  let [key, completion, selStart, selEnd, popupOpen] = TEST_DATA[index];
+  let [, completion, selStart, selEnd, popupOpen] = TEST_DATA[index];
   info("Test data " + index + " entered. Checking state.");
 
   if (selEnd != -1) {
     is(editor.input.value, completion, "Completed value is correct");
-    is(editor.input.selectionStart, selStart, "Selection start position is correct");
+    is(editor.input.selectionStart, selStart,
+       "Selection start position is correct");
     is(editor.input.selectionEnd, selEnd, "Selection end position is correct");
     if (popupOpen) {
       ok(editor.popup.isOpen, "Popup is open");
     } else {
-      ok(editor.popup._panel.state != "open" && editor.popup._panel.state != "showing",
+      ok(editor.popup._panel.state != "open" &&
+         editor.popup._panel.state != "showing",
         "Popup is closed");
     }
   } else {
     let nodeFront = yield getNodeFront("#node14", inspector);
     let editor = getContainerForNodeFront(nodeFront, inspector).editor;
     let attr = editor.attrElements.get("style").querySelector(".editable");
-    is(attr.textContent, completion, "Correct value is persisted after pressing Enter");
+    is(attr.textContent, completion,
+       "Correct value is persisted after pressing Enter");
   }
 }
--- a/devtools/client/inspector/markup/test/browser_markup_dragdrop_invalidNodes.js
+++ b/devtools/client/inspector/markup/test/browser_markup_dragdrop_invalidNodes.js
@@ -2,19 +2,20 @@
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Check that pseudo-elements and anonymous nodes are not draggable.
 
 const TEST_URL = URL_ROOT + "doc_markup_dragdrop.html";
+const PREF = "devtools.inspector.showAllAnonymousContent";
 
 add_task(function*() {
-  Services.prefs.setBoolPref("devtools.inspector.showAllAnonymousContent", true);
+  Services.prefs.setBoolPref(PREF, true);
 
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   info("Expanding nodes below #test");
   let parentFront = yield getNodeFront("#test", inspector);
   yield inspector.markup.expandNode(parentFront);
   yield waitForMultipleChildrenUpdates(inspector);
 
--- a/devtools/client/inspector/markup/test/browser_markup_dragdrop_tooltip.js
+++ b/devtools/client/inspector/markup/test/browser_markup_dragdrop_tooltip.js
@@ -1,8 +1,11 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 // Test that tooltips don't appear when dragging over tooltip targets.
 
 const TEST_URL = "data:text/html;charset=utf8,<img src=\"about:logo\" /><div>";
 
 add_task(function*() {
   let {inspector} = yield openInspectorForURL(TEST_URL);
@@ -15,20 +18,20 @@ add_task(function*() {
   info("Check that the src attribute of the image is a valid tooltip target");
   let isValid = yield markup.tooltip.isValidHoverTarget(target);
   ok(isValid, "The element is a valid tooltip target");
 
   info("Start dragging the test div");
   yield simulateNodeDrag(inspector, "div");
 
   info("Now check that the src attribute of the image isn't a valid target");
-  try{
+  try {
     yield markup.tooltip.isValidHoverTarget(target);
     isValid = true;
-  } catch(e) {
+  } catch (e) {
     isValid = false;
   }
   ok(!isValid, "The element is not a valid tooltip target");
 
   info("Stop dragging the test div");
   yield simulateNodeDrop(inspector, "div");
 
   info("Check again the src attribute of the image");
--- a/devtools/client/inspector/markup/test/browser_markup_events-overflow.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events-overflow.js
@@ -2,18 +2,20 @@
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 const TEST_URL = URL_ROOT + "doc_markup_events-overflow.html";
 const TEST_DATA = [
   {
     desc: "editor overflows container",
-    initialScrollTop: -1, // scroll to bottom
-    headerToClick: 49, // last header
+    // scroll to bottom
+    initialScrollTop: -1,
+    // last header
+    headerToClick: 49,
     alignBottom: true,
     alignTop: false,
   },
   {
     desc: "header overflows the container",
     initialScrollTop: 2,
     headerToClick: 0,
     alignBottom: false,
@@ -31,17 +33,18 @@ const TEST_DATA = [
 add_task(function*() {
   let { inspector } = yield openInspectorForURL(TEST_URL);
 
   let markupContainer = yield getContainerForSelector("#events", inspector);
   let evHolder = markupContainer.elt.querySelector(".markupview-events");
   let tooltip = inspector.markup.tooltip;
 
   info("Clicking to open event tooltip.");
-  EventUtils.synthesizeMouseAtCenter(evHolder, {}, inspector.markup.doc.defaultView);
+  EventUtils.synthesizeMouseAtCenter(evHolder, {},
+    inspector.markup.doc.defaultView);
   yield tooltip.once("shown");
   info("EventTooltip visible.");
 
   let container = tooltip.content;
   let containerRect = container.getBoundingClientRect();
   let headers = container.querySelectorAll(".event-header");
 
   for (let data of TEST_DATA) {
@@ -70,21 +73,19 @@ add_task(function*() {
     // Wait for any scrolling to finish.
     yield promiseNextTick();
 
     if (data.alignTop) {
       let headerRect = header.getBoundingClientRect();
 
       is(Math.round(headerRect.top), Math.round(containerRect.top),
         "Clicked header is aligned with the container top.");
-
     } else if (data.alignBottom) {
       let editorRect = header.nextElementSibling.getBoundingClientRect();
 
       is(Math.round(editorRect.bottom), Math.round(containerRect.bottom),
         "Clicked event handler code is aligned with the container bottom.");
-
     } else {
       is(container.scrollTop, data.initialScrollTop,
         "Container did not scroll, as expected.");
     }
   }
 });
--- a/devtools/client/inspector/markup/test/browser_markup_events.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events.js
@@ -1,22 +1,23 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
+/* import-globals-from helper_events_test_runner.js */
 
 "use strict";
 
 // Test that markup view event bubbles show the correct event info for DOM
 // events.
 
 const TEST_URL = URL_ROOT + "doc_markup_events.html";
 
 loadHelperScript("helper_events_test_runner.js");
 
-const TEST_DATA = [
+const TEST_DATA = [ // eslint-disable-line
   {
     selector: "html",
     expected: [
       {
         type: "load",
         filename: TEST_URL,
         attributes: [
           "Bubbling",
@@ -31,51 +32,51 @@ const TEST_DATA = [
     expected: [
       {
         type: "mouseover",
         filename: TEST_URL + ":62",
         attributes: [
           "Capturing",
           "DOM2"
         ],
-        handler: 'function mouseoverHandler(event) {\n' +
-                 '  if (event.target.id !== "container") {\n' +
-                 '    let output = document.getElementById("output");\n' +
-                 '    output.textContent = event.target.textContent;\n' +
-                 '  }\n' +
-                 '}'
+        handler: "function mouseoverHandler(event) {\n" +
+                 "  if (event.target.id !== \"container\") {\n" +
+                 "    let output = document.getElementById(\"output\");\n" +
+                 "    output.textContent = event.target.textContent;\n" +
+                 "  }\n" +
+                 "}"
       }
     ]
   },
   {
     selector: "#multiple",
     expected: [
       {
         type: "click",
         filename: TEST_URL + ":69",
         attributes: [
           "Bubbling",
           "DOM2"
         ],
-        handler: 'function clickHandler(event) {\n' +
-                 '  let output = document.getElementById("output");\n' +
-                 '  output.textContent = "click";\n' +
-                 '}'
+        handler: "function clickHandler(event) {\n" +
+                 "  let output = document.getElementById(\"output\");\n" +
+                 "  output.textContent = \"click\";\n" +
+                 "}"
       },
       {
         type: "mouseup",
         filename: TEST_URL + ":78",
         attributes: [
           "Bubbling",
           "DOM2"
         ],
-        handler: 'function mouseupHandler(event) {\n' +
-                 '  let output = document.getElementById("output");\n' +
-                 '  output.textContent = "mouseup";\n' +
-                 '}'
+        handler: "function mouseupHandler(event) {\n" +
+                 "  let output = document.getElementById(\"output\");\n" +
+                 "  output.textContent = \"mouseup\";\n" +
+                 "}"
       }
     ]
   },
   {
     selector: "#DOM0",
     expected: [
       {
         type: "click",
@@ -93,67 +94,67 @@ const TEST_DATA = [
     expected: [
       {
         type: "click",
         filename: TEST_URL + ":89",
         attributes: [
           "Bubbling",
           "DOM2"
         ],
-        handler: 'handleEvent: function(blah) {\n' +
-                 '  alert("handleEvent clicked");\n' +
-                 '}'
+        handler: "handleEvent: function(blah) {\n" +
+                 "  alert(\"handleEvent clicked\");\n" +
+                 "}"
       }
     ]
   },
   {
     selector: "#fatarrow",
     expected: [
       {
         type: "click",
         filename: TEST_URL + ":57",
         attributes: [
           "Bubbling",
           "DOM2"
         ],
-        handler: 'event => {\n' +
-                 '  alert("Yay for the fat arrow!");\n' +
-                 '}'
+        handler: "event => {\n" +
+                 "  alert(\"Yay for the fat arrow!\");\n" +
+                 "}"
       }
     ]
   },
   {
     selector: "#boundhe",
     expected: [
       {
         type: "click",
         filename: TEST_URL + ":101",
         attributes: [
           "Bubbling",
           "DOM2"
         ],
-        handler: 'handleEvent: function() {\n' +
-                 '  alert("boundHandleEvent clicked");\n' +
-                 '}'
+        handler: "handleEvent: function() {\n" +
+                 "  alert(\"boundHandleEvent clicked\");\n" +
+                 "}"
       }
     ]
   },
   {
     selector: "#bound",
     expected: [
       {
         type: "click",
         filename: TEST_URL + ":74",
         attributes: [
           "Bubbling",
           "DOM2"
         ],
-        handler: 'function boundClickHandler(event) {\n' +
-                 '  alert("Bound event clicked");\n' +
-                 '}'
+        handler: "function boundClickHandler(event) {\n" +
+                 "  alert(\"Bound event clicked\");\n" +
+                 "}"
       }
     ]
   },
   // #noevents tests check that dynamically added events are properly displayed
   // in the markupview
   {
     selector: "#noevents",
     expected: []
@@ -168,26 +169,29 @@ const TEST_DATA = [
     expected: [
       {
         type: "click",
         filename: TEST_URL + ":106",
         attributes: [
           "Bubbling",
           "DOM2"
         ],
-        handler: 'function noeventsClickHandler(event) {\n' +
-                 '  alert("noevents has an event listener");\n' +
-                 '}'
+        handler: "function noeventsClickHandler(event) {\n" +
+                 "  alert(\"noevents has an event listener\");\n" +
+                 "}"
       }
     ]
   },
   {
     selector: "#noevents",
     beforeTest: function* (inspector, testActor) {
       let nodeMutated = inspector.once("markupmutation");
-      yield testActor.eval("window.wrappedJSObject.removeNoeventsClickHandler();");
+      yield testActor.eval(
+        "window.wrappedJSObject.removeNoeventsClickHandler();");
       yield nodeMutated;
     },
     expected: []
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_form.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_form.js
@@ -7,17 +7,16 @@
 // Testing the feature whereby custom registered actors can listen to
 // 'form' events sent by the NodeActor to hook custom data to it.
 // The test registers one backend actor providing custom form data
 // and checks that the value is properly sent to the client (NodeFront).
 
 const TEST_PAGE_URL = URL_ROOT + "doc_markup_events_form.html";
 const TEST_ACTOR_URL = CHROME_URL_ROOT + "actor_events_form.js";
 
-var {ActorRegistryFront} = require("devtools/server/actors/actor-registry");
 var {EventsFormFront} = require(TEST_ACTOR_URL);
 
 add_task(function*() {
   info("Opening the Toolbox");
   let tab = yield addTab(TEST_PAGE_URL);
   let toolbox = yield openToolboxForTab(tab, "webconsole");
 
   info("Registering test actor");
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.0.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.0.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 1.0).
 
 const TEST_LIB = "lib_jquery_1.0.js";
 const TEST_URL = URL_ROOT + "doc_markup_events_jquery.html?" + TEST_LIB;
 
@@ -226,9 +226,11 @@ const TEST_DATA = [
                  "\n" +
                  "  return returnValue;\n" +
                  "}"
       }
     ]
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.1.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.1.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 1.1).
 
 const TEST_LIB = "lib_jquery_1.1.js";
 const TEST_URL = URL_ROOT + "doc_markup_events_jquery.html?" + TEST_LIB;
 
@@ -260,9 +260,11 @@ const TEST_DATA = [
                  "\n" +
                  "  return returnValue;\n" +
                  "}"
       }
     ]
   }
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.11.1.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.11.1.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 1.11.1).
 
 const TEST_LIB = "lib_jquery_1.11.1_min.js";
 const TEST_URL = URL_ROOT + "doc_markup_events_jquery.html?" + TEST_LIB;
 
@@ -184,9 +184,11 @@ const TEST_DATA = [
         handler: "var handler5 = function liveDivDrop() {\n" +
                  "  alert(5);\n" +
                  "}"
       }
     ]
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.2.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.2.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 1.2).
 
 const TEST_LIB = "lib_jquery_1.2_min.js";
 const TEST_URL = URL_ROOT + "doc_markup_events_jquery.html?" + TEST_LIB;
 
@@ -179,9 +179,11 @@ const TEST_DATA = [
                  "  val = jQuery.event.handle.apply(element, arguments);\n" +
                  "  return val;\n" +
                  "}"
       }
     ]
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.3.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.3.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 1.3).
 
 const TEST_LIB = "lib_jquery_1.3_min.js";
 const TEST_URL = URL_ROOT + "doc_markup_events_jquery.html?" + TEST_LIB;
 
@@ -212,9 +212,11 @@ const TEST_DATA = [
         handler: "var handler2 = function liveDivDragStart() {\n" +
                  "  alert(2);\n" +
                  "}"
       }
     ]
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.4.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.4.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 1.4).
 
 const TEST_LIB = "lib_jquery_1.4_min.js";
 const TEST_URL = URL_ROOT + "doc_markup_events_jquery.html?" + TEST_LIB;
 
@@ -275,9 +275,11 @@ const TEST_DATA = [
                  "  }\n" +
                  "  return b\n" +
                  "}"
       }
     ]
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.6.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.6.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 requestLongerTimeout(2);
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 1.6).
 
 const TEST_LIB = "lib_jquery_1.6_min.js";
@@ -376,9 +376,11 @@ const TEST_DATA = [
                  "    return b\n" +
                  "  }\n" +
                  "}"
       }
     ]
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.7.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_1.7.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 requestLongerTimeout(2);
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 1.7).
 
 const TEST_LIB = "lib_jquery_1.7_min.js";
@@ -222,9 +222,11 @@ const TEST_DATA = [
         handler: "var handler5 = function liveDivDrop() {\n" +
                  "  alert(5);\n" +
                  "}"
       }
     ]
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_events_jquery_2.1.1.js
+++ b/devtools/client/inspector/markup/test/browser_markup_events_jquery_2.1.1.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_events_test_runner.js */
 "use strict";
 
 requestLongerTimeout(2);
 
 // Test that markup view event bubbles show the correct event info for jQuery
 // and jQuery Live events (jQuery version 2.1.1).
 
 const TEST_LIB = "lib_jquery_2.1.1_min.js";
@@ -184,9 +184,11 @@ const TEST_DATA = [
         handler: "var handler5 = function liveDivDrop() {\n" +
                  "  alert(5);\n" +
                  "}"
       }
     ]
   },
 ];
 
-add_task(runEventPopupTests);
+add_task(function*() {
+  yield runEventPopupTests(TEST_URL, TEST_DATA);
+});
--- a/devtools/client/inspector/markup/test/browser_markup_html_edit_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_html_edit_01.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_outerhtml_test_runner.js */
 "use strict";
 
 // Test outerHTML edition via the markup-view
 
 loadHelperScript("helper_outerhtml_test_runner.js");
 
 const TEST_DATA = [
   {
--- a/devtools/client/inspector/markup/test/browser_markup_html_edit_02.js
+++ b/devtools/client/inspector/markup/test/browser_markup_html_edit_02.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_outerhtml_test_runner.js */
 "use strict";
 
 // Test outerHTML edition via the markup-view
 
 loadHelperScript("helper_outerhtml_test_runner.js");
 requestLongerTimeout(2);
 
 const TEST_DATA = [
--- a/devtools/client/inspector/markup/test/browser_markup_image_tooltip_mutations.js
+++ b/devtools/client/inspector/markup/test/browser_markup_image_tooltip_mutations.js
@@ -24,17 +24,18 @@ add_task(function*() {
   yield selectNode(img, inspector);
 
   info("Adding src attribute to the image.");
   yield updateImageSrc(img, INITIAL_SRC, inspector);
 
   let container = getContainerForNodeFront(img, inspector);
   ok(container, "Found markup container for the image.");
 
-  let target = container.editor.getAttributeElement("src").querySelector(".link");
+  let target = container.editor.getAttributeElement("src")
+                               .querySelector(".link");
   ok(target, "Found the src attribute in the markup view.");
 
   info("Showing tooltip on the src link.");
   yield inspector.markup.tooltip.isValidHoverTarget(target);
 
   checkImageTooltip(INITIAL_SRC_SIZE, inspector);
 
   info("Updating the image src.");
--- a/devtools/client/inspector/markup/test/browser_markup_keybindings_03.js
+++ b/devtools/client/inspector/markup/test/browser_markup_keybindings_03.js
@@ -3,20 +3,21 @@
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests that selecting a node with the mouse (by clicking on the line) focuses
 // the first focusable element in the corresponding MarkupContainer so that the
 // keyboard can be used immediately.
 
-const TEST_URL = "data:text/html;charset=utf8,<div class='test-class'></div>Text node";
+const TEST_URL = `data:text/html;charset=utf8,
+                  <div class='test-class'></div>Text node`;
 
 add_task(function*() {
-  let {inspector, toolbox} = yield openInspectorForURL(TEST_URL);
+  let {inspector} = yield openInspectorForURL(TEST_URL);
   let {walker} = inspector;
 
   info("Select the test node to have the 2 test containers visible");
   yield selectNode("div", inspector);
 
   let divFront = yield walker.querySelector(walker.rootNode, "div");
   let textFront = yield walker.nextSibling(divFront);
 
@@ -29,17 +30,18 @@ add_task(function*() {
   info("Click on the MarkupContainer element for the <div> node");
   yield clickContainer(divFront, inspector);
   is(inspector.markup.doc.activeElement,
      getContainerForNodeFront(divFront, inspector).editor.tag,
      "The currently focused element is the div's tagname");
 
   info("Click on the test-class attribute, to make sure it gets focused");
   let editor = getContainerForNodeFront(divFront, inspector).editor;
-  let attributeEditor = editor.attrElements.get("class").querySelector(".editable");
+  let attributeEditor = editor.attrElements.get("class")
+                                           .querySelector(".editable");
 
   let onFocus = once(attributeEditor, "focus");
   EventUtils.synthesizeMouseAtCenter(attributeEditor, {type: "mousedown"},
     inspector.markup.doc.defaultView);
   EventUtils.synthesizeMouseAtCenter(attributeEditor, {type: "mouseup"},
     inspector.markup.doc.defaultView);
   yield onFocus;
 
--- a/devtools/client/inspector/markup/test/browser_markup_links_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_links_01.js
@@ -106,19 +106,22 @@ add_task(function*() {
 
   for (let {selector, attributes} of TEST_DATA) {
     info("Testing attributes on node " + selector);
     yield selectNode(selector, inspector);
     let {editor} = yield getContainerForSelector(selector, inspector);
 
     for (let {attributeName, links} of attributes) {
       info("Testing attribute " + attributeName);
-      let linkEls = editor.attrElements.get(attributeName).querySelectorAll(".link");
+      let linkEls = editor.attrElements.get(attributeName)
+                                       .querySelectorAll(".link");
 
       is(linkEls.length, links.length, "The right number of links were found");
 
-      for (let i = 0; i < links.length; i ++) {
-        is(linkEls[i].dataset.type, links[i].type, "Link " + i + " has the right type");
-        is(linkEls[i].textContent, links[i].value, "Link " + i + " has the right value");
+      for (let i = 0; i < links.length; i++) {
+        is(linkEls[i].dataset.type, links[i].type,
+           `Link ${i} has the right type`);
+        is(linkEls[i].textContent, links[i].value,
+           `Link ${i} has the right value`);
       }
     }
   }
 });
--- a/devtools/client/inspector/markup/test/browser_markup_links_02.js
+++ b/devtools/client/inspector/markup/test/browser_markup_links_02.js
@@ -12,17 +12,18 @@ const TEST_URL = URL_ROOT + "doc_markup_
 add_task(function*() {
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   info("Adding a contextmenu attribute to the body node");
   yield addNewAttributes("body", "contextmenu=\"menu1\"", inspector);
 
   info("Checking for links in the new attribute");
   let {editor} = yield getContainerForSelector("body", inspector);
-  let linkEls = editor.attrElements.get("contextmenu").querySelectorAll(".link");
+  let linkEls = editor.attrElements.get("contextmenu")
+                                   .querySelectorAll(".link");
   is(linkEls.length, 1, "There is one link in the contextmenu attribute");
   is(linkEls[0].dataset.type, "idref", "The link has the right type");
   is(linkEls[0].textContent, "menu1", "The link has the right value");
 
   info("Editing the contextmenu attribute on the body node");
   let nodeMutated = inspector.once("markupmutation");
   let attr = editor.attrElements.get("contextmenu").querySelector(".editable");
   setEditableFieldValue(attr, "contextmenu=\"menu2\"", inspector);
--- a/devtools/client/inspector/markup/test/browser_markup_links_03.js
+++ b/devtools/client/inspector/markup/test/browser_markup_links_03.js
@@ -13,17 +13,18 @@ add_task(function*() {
 
   info("Adding a contextmenu attribute to the body node via the content");
   let onMutated = inspector.once("markupmutation");
   yield setNodeAttribute("body", "contextmenu", "menu1", testActor);
   yield onMutated;
 
   info("Checking for links in the new attribute");
   let {editor} = yield getContainerForSelector("body", inspector);
-  let linkEls = editor.attrElements.get("contextmenu").querySelectorAll(".link");
+  let linkEls = editor.attrElements.get("contextmenu")
+                                   .querySelectorAll(".link");
   is(linkEls.length, 1, "There is one link in the contextmenu attribute");
   is(linkEls[0].dataset.type, "idref", "The link has the right type");
   is(linkEls[0].textContent, "menu1", "The link has the right value");
 
   info("Editing the contextmenu attribute on the body node");
   onMutated = inspector.once("markupmutation");
   yield setNodeAttribute("body", "contextmenu", "menu2", testActor);
   yield onMutated;
--- a/devtools/client/inspector/markup/test/browser_markup_links_04.js
+++ b/devtools/client/inspector/markup/test/browser_markup_links_04.js
@@ -23,26 +23,30 @@ const TOOLBOX_STRINGS = Services.strings
 // - linkFollowItemLabel: the expected label of the follow-link item
 // - linkCopyItemLabel: the expected label of the copy-link item
 const TEST_DATA = [{
   selector: "link",
   attributeName: "href",
   popupNodeSelector: ".link",
   isLinkFollowItemVisible: true,
   isLinkCopyItemVisible: true,
-  linkFollowItemLabel: TOOLBOX_STRINGS.GetStringFromName("toolbox.viewCssSourceInStyleEditor.label"),
-  linkCopyItemLabel: STRINGS.GetStringFromName("inspector.menu.copyUrlToClipboard.label")
+  linkFollowItemLabel: TOOLBOX_STRINGS.GetStringFromName(
+    "toolbox.viewCssSourceInStyleEditor.label"),
+  linkCopyItemLabel: STRINGS.GetStringFromName(
+    "inspector.menu.copyUrlToClipboard.label")
 }, {
   selector: "link[rel=icon]",
   attributeName: "href",
   popupNodeSelector: ".link",
   isLinkFollowItemVisible: true,
   isLinkCopyItemVisible: true,
-  linkFollowItemLabel: STRINGS.GetStringFromName("inspector.menu.openUrlInNewTab.label"),
-  linkCopyItemLabel: STRINGS.GetStringFromName("inspector.menu.copyUrlToClipboard.label")
+  linkFollowItemLabel: STRINGS.GetStringFromName(
+    "inspector.menu.openUrlInNewTab.label"),
+  linkCopyItemLabel: STRINGS.GetStringFromName(
+    "inspector.menu.copyUrlToClipboard.label")
 }, {
   selector: "link",
   attributeName: "rel",
   popupNodeSelector: ".attr-value",
   isLinkFollowItemVisible: false,
   isLinkCopyItemVisible: false
 }, {
   selector: "output",
@@ -53,18 +57,20 @@ const TEST_DATA = [{
   linkFollowItemLabel: STRINGS.formatStringFromName(
     "inspector.menu.selectElement.label", ["name"], 1)
 }, {
   selector: "script",
   attributeName: "src",
   popupNodeSelector: ".link",
   isLinkFollowItemVisible: true,
   isLinkCopyItemVisible: true,
-  linkFollowItemLabel: TOOLBOX_STRINGS.GetStringFromName("toolbox.viewJsSourceInDebugger.label"),
-  linkCopyItemLabel: STRINGS.GetStringFromName("inspector.menu.copyUrlToClipboard.label")
+  linkFollowItemLabel: TOOLBOX_STRINGS.GetStringFromName(
+    "toolbox.viewJsSourceInDebugger.label"),
+  linkCopyItemLabel: STRINGS.GetStringFromName(
+    "inspector.menu.copyUrlToClipboard.label")
 }, {
   selector: "p[for]",
   attributeName: "for",
   popupNodeSelector: ".attr-value",
   isLinkFollowItemVisible: false,
   isLinkCopyItemVisible: false
 }];
 
--- a/devtools/client/inspector/markup/test/browser_markup_links_07.js
+++ b/devtools/client/inspector/markup/test/browser_markup_links_07.js
@@ -32,17 +32,18 @@ add_task(function*() {
 
   info("Find the link element from the markup-view that contains the ref");
   ({editor} = yield getContainerForSelector("label", inspector));
   linkEl = editor.attrElements.get("for").querySelector(".link");
 
   info("Follow link with middle-click, wait for new node to be selected.");
   yield followLinkWaitForNewNode(linkEl, false, inspector);
 
-  // We have to re-select the label as the link switched the currently selected node
+  // We have to re-select the label as the link switched the currently selected
+  // node.
   yield selectNode("label", inspector);
 
   info("Follow link with ctrl/meta-click, wait for new node to be selected.");
   yield followLinkWaitForNewNode(linkEl, true, inspector);
 
   info("Select a node with an invalid IDREF attribute");
   yield selectNode("output", inspector);
 
--- a/devtools/client/inspector/markup/test/browser_markup_load_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_load_01.js
@@ -8,17 +8,17 @@
 // menu during a page reload doesn't cause the markup view to become empty.
 // See https://bugzilla.mozilla.org/show_bug.cgi?id=1036324
 
 const server = createTestHTTPServer();
 
 // Register a slow image handler so we can simulate a long time between
 // a reload and the load event firing.
 server.registerContentType("gif", "image/gif");
-server.registerPathHandler("/slow.gif", function (metadata, response) {
+server.registerPathHandler("/slow.gif", function(metadata, response) {
   info("Image has been requested");
   response.processAsync();
   setTimeout(() => {
     info("Image is responding");
     response.finish();
   }, 500);
 });
 
--- a/devtools/client/inspector/markup/test/browser_markup_mutation_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_mutation_01.js
@@ -98,18 +98,18 @@ const TEST_DATA = [
       let node1 = getNode("#node1");
       node1.textContent = "newtext";
     },
     check: function*(inspector) {
       let container = yield getContainerForSelector("#node1", inspector);
       ok(container.singleTextChild, "Has single text child.");
       ok(!container.canExpand, "Can't expand container with singleTextChild.");
       ok(!container.singleTextChild.canExpand, "Can't expand singleTextChild.");
-      is(container.editor.elt.querySelector(".text").textContent.trim(), "newtext",
-        "Single text child editor updated.");
+      is(container.editor.elt.querySelector(".text").textContent.trim(),
+         "newtext", "Single text child editor updated.");
     }
   },
   {
     desc: "Adding a second text child",
     test: () => {
       let node1 = getNode("#node1");
       let newText = node1.ownerDocument.createTextNode("more");
       node1.appendChild(newText);
@@ -128,18 +128,18 @@ const TEST_DATA = [
       let node1 = getNode("#node1");
       node1.textContent = "newtext";
     },
     check: function*(inspector) {
       let container = yield getContainerForSelector("#node1", inspector);
       ok(container.singleTextChild, "Has single text child.");
       ok(!container.canExpand, "Can't expand container with singleTextChild.");
       ok(!container.singleTextChild.canExpand, "Can't expand singleTextChild.");
-      ok(container.editor.elt.querySelector(".text").textContent.trim(), "newtext",
-        "Single text child editor updated.");
+      ok(container.editor.elt.querySelector(".text").textContent.trim(),
+         "newtext", "Single text child editor updated.");
     },
   },
   {
     desc: "Removing an only text child",
     test: () => {
       let node1 = getNode("#node1");
       node1.innerHTML = "";
     },
@@ -157,18 +157,18 @@ const TEST_DATA = [
       let node1 = getNode("#node1");
       node1.textContent = "newtext";
     },
     check: function*(inspector) {
       let container = yield getContainerForSelector("#node1", inspector);
       ok(container.singleTextChild, "Has single text child.");
       ok(!container.canExpand, "Can't expand container with singleTextChild.");
       ok(!container.singleTextChild.canExpand, "Can't expand singleTextChild.");
-      ok(container.editor.elt.querySelector(".text").textContent.trim(), "newtext",
-        "Single text child editor updated.");
+      ok(container.editor.elt.querySelector(".text").textContent.trim(),
+         "newtext", "Single text child editor updated.");
     },
   },
 
   {
     desc: "Updating the innerHTML",
     test: () => {
       let node2 = getNode("#node2");
       node2.innerHTML = "<div><span>foo</span></div>";
@@ -202,17 +202,18 @@ const TEST_DATA = [
     desc: "Appending a child to a different parent",
     test: () => {
       let node17 = getNode("#node17");
       let node2 = getNode("#node2");
       node2.appendChild(node17);
     },
     check: function*(inspector) {
       let {children} = yield getContainerForSelector("#node16", inspector);
-      is(children.innerHTML, "", "Node17 has been removed from its node16 parent");
+      is(children.innerHTML, "",
+         "Node17 has been removed from its node16 parent");
 
       let container = yield getContainerForSelector("#node2", inspector);
       let openTags = container.children.querySelectorAll(".open .tag");
       is(openTags.length, 3, "There are now 3 tags in node2");
       is(openTags[2].textContent.trim(), "p", "The third tag is node17");
     }
   },
   {
@@ -247,28 +248,29 @@ const TEST_DATA = [
         "Node1 now has 2 children (textnode and node20)");
 
       let node20 = children.childNodes[1];
       let node20Children = node20.container.children;
       is(node20Children.childNodes.length, 2,
           "Node20 has 2 children (21 and 18)");
 
       let node21 = node20Children.childNodes[0];
-      is(node21.container.editor.elt.querySelector(".text").textContent.trim(), "line21",
-        "Node21 has a single text child");
+      is(node21.container.editor.elt.querySelector(".text").textContent.trim(),
+         "line21", "Node21 has a single text child");
 
       let node18 = node20Children.childNodes[1];
-      is(node18.querySelector(".open .attreditor .attr-value").textContent.trim(),
-        "node18", "Node20's second child is indeed node18");
+      is(node18.querySelector(".open .attreditor .attr-value")
+               .textContent.trim(),
+         "node18", "Node20's second child is indeed node18");
     }
   }
 ];
 
 add_task(function*() {
-  let {toolbox, inspector} = yield openInspectorForURL(TEST_URL);
+  let {inspector} = yield openInspectorForURL(TEST_URL);
 
   info("Expanding all markup-view nodes");
   yield inspector.markup.expandAll();
 
   for (let {desc, test, check, numMutations} of TEST_DATA) {
     info("Starting test: " + desc);
 
     numMutations = numMutations || 1;
@@ -284,17 +286,17 @@ add_task(function*() {
              " mutations, expecting at least " + numMutations);
         if (seenMutations >= numMutations) {
           inspector.off("markupmutation", onmutation);
           resolve();
         }
       });
 
       test();
-    })
+    });
 
     info("Expanding all markup-view nodes to make sure new nodes are imported");
     yield inspector.markup.expandAll();
 
     info("Checking the markup-view content");
     yield check(inspector);
   }
 });
--- a/devtools/client/inspector/markup/test/browser_markup_mutation_02.js
+++ b/devtools/client/inspector/markup/test/browser_markup_mutation_02.js
@@ -2,24 +2,25 @@
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Test that markup-containers in the markup-view do flash when their
 // corresponding DOM nodes mutate
 
+const {clearTimeout} = require("sdk/timers");
 const TEST_URL = URL_ROOT + "doc_markup_flashing.html";
 
 // The test data contains a list of mutations to test.
 // Each item is an object:
 // - desc: a description of the test step, for better logging
 // - mutate: a function that should make changes to the content DOM
-// - attribute: if set, the test will expect the corresponding attribute to flash
-//   instead of the whole node
+// - attribute: if set, the test will expect the corresponding attribute to
+//   flash instead of the whole node
 // - flashedNode: [optional] the css selector of the node that is expected to
 //   flash in the markup-view as a result of the mutation.
 //   If missing, the rootNode (".list") will be expected to flash
 const TEST_DATA = [{
   desc: "Adding a new node should flash the new node",
   mutate: (doc, rootNode) => {
     let newLi = doc.createElement("LI");
     newLi.textContent = "new list item";
@@ -39,17 +40,18 @@ const TEST_DATA = [{
   flashedNode: ".list .item:last-child"
 }, {
   desc: "Adding an attribute should flash the attribute",
   attribute: "test-name",
   mutate: (doc, rootNode) => {
     rootNode.setAttribute("test-name", "value-" + Date.now());
   }
 }, {
-  desc: "Adding an attribute with css reserved characters should flash the attribute",
+  desc: "Adding an attribute with css reserved characters should flash the " +
+        "attribute",
   attribute: "one:two",
   mutate: (doc, rootNode) => {
     rootNode.setAttribute("one:two", "value-" + Date.now());
   }
 }, {
   desc: "Editing an attribute should flash the attribute",
   attribute: "class",
   mutate: (doc, rootNode) => {
@@ -110,27 +112,28 @@ add_task(function*() {
 });
 
 function* assertNodeFlashing(nodeFront, inspector) {
   let container = getContainerForNodeFront(nodeFront, inspector);
   ok(container, "Markup container for node found");
   ok(container.tagState.classList.contains("theme-bg-contrast"),
     "Markup container for node is flashing");
 
-  // Clear the mutation flashing timeout now that we checked the node was flashing
-  let markup = inspector.markup;
+  // Clear the mutation flashing timeout now that we checked the node was
+  // flashing.
   clearTimeout(container._flashMutationTimer);
   container._flashMutationTimer = null;
   container.tagState.classList.remove("theme-bg-contrast");
 }
 
 function* assertAttributeFlashing(nodeFront, attribute, inspector) {
   let container = getContainerForNodeFront(nodeFront, inspector);
   ok(container, "Markup container for node found");
-  ok(container.editor.attrElements.get(attribute), "Attribute exists on editor");
+  ok(container.editor.attrElements.get(attribute),
+     "Attribute exists on editor");
 
   let attributeElement = container.editor.getAttributeElement(attribute);
 
   ok(attributeElement.classList.contains("theme-bg-contrast"),
     "Element for " + attribute + " attribute is flashing");
 
   attributeElement.classList.remove("theme-bg-contrast");
 }
--- a/devtools/client/inspector/markup/test/browser_markup_node_not_displayed_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_node_not_displayed_01.js
@@ -24,11 +24,11 @@ const TEST_DATA = [
 add_task(function*() {
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   for (let {selector, isDisplayed} of TEST_DATA) {
     info("Getting node " + selector);
     let nodeFront = yield getNodeFront(selector, inspector);
     let container = getContainerForNodeFront(nodeFront, inspector);
     is(!container.elt.classList.contains("not-displayed"), isDisplayed,
-      "The container for " + selector + " is marked as displayed " + isDisplayed);
+       `The container for ${selector} is marked as displayed ${isDisplayed}`);
   }
 });
--- a/devtools/client/inspector/markup/test/browser_markup_pagesize_02.js
+++ b/devtools/client/inspector/markup/test/browser_markup_pagesize_02.js
@@ -1,17 +1,17 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests that the markup view loads only as many nodes as specified
-// by the devtools.markup.pagesize preference and that pressing the "show all nodes"
-// actually shows the nodes
+// by the devtools.markup.pagesize preference and that pressing the "show all
+// nodes" actually shows the nodes
 
 const TEST_URL = URL_ROOT + "doc_markup_pagesize_02.html";
 
 // Make sure nodes are hidden when there are more than 5 in a row
 Services.prefs.setIntPref("devtools.markup.pagesize", 5);
 
 add_task(function*() {
   let {inspector} = yield openInspectorForURL(TEST_URL);
@@ -35,11 +35,12 @@ function* showAllNodes(inspector) {
   let win = button.ownerDocument.defaultView;
 
   EventUtils.sendMouseEvent({type: "click"}, button, win);
   yield inspector.markup._waitForChildren();
 }
 
 function* assertAllNodesAreVisible(inspector) {
   let container = yield getContainerForSelector("ul", inspector);
-  ok(!container.elt.querySelector("button"), "All nodes button isn't here anymore");
+  ok(!container.elt.querySelector("button"),
+     "All nodes button isn't here anymore");
   is(container.children.childNodes.length, getNode("ul").children.length);
 }
--- a/devtools/client/inspector/markup/test/browser_markup_remove_xul_attributes.js
+++ b/devtools/client/inspector/markup/test/browser_markup_remove_xul_attributes.js
@@ -10,18 +10,20 @@
 const TEST_URL = URL_ROOT + "doc_markup_xul.xul";
 
 add_task(function*() {
   let {inspector} = yield openInspectorForURL(TEST_URL);
 
   let panel = yield getNode("#test", inspector);
   let panelFront = yield getNodeFront("#test", inspector);
 
-  ok(panelFront.hasAttribute("id"), "panelFront has id attribute in the beginning");
+  ok(panelFront.hasAttribute("id"),
+     "panelFront has id attribute in the beginning");
 
   info("Removing panel's id attribute");
   panel.removeAttribute("id");
 
   info("Waiting for markupmutation");
   yield inspector.once("markupmutation");
 
-  is(panelFront.hasAttribute("id"), false, "panelFront doesn't have id attribute anymore");
+  is(panelFront.hasAttribute("id"), false,
+     "panelFront doesn't have id attribute anymore");
 });
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_01.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_attributes_test_runner.js */
 "use strict";
 
 // Test editing various markup-containers' attribute fields
 
 loadHelperScript("helper_attributes_test_runner.js");
 
 const TEST_URL = URL_ROOT + "doc_markup_edit.html";
 var TEST_DATA = [{
@@ -18,18 +18,18 @@ var TEST_DATA = [{
   },
   name: "class",
   value: 'class="changednode1"',
   expectedAttributes: {
     id: "node1",
     class: "changednode1"
   }
 }, {
-  desc: 'Try changing an attribute to a quote (") - this should result ' +
-        'in it being set to an empty string',
+  desc: "Try changing an attribute to a quote (\") - this should result " +
+        "in it being set to an empty string",
   node: "#node22",
   originalAttributes: {
     id: "node22",
     class: "unchanged"
   },
   name: "class",
   value: 'class="""',
   expectedAttributes: {
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_02.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_02.js
@@ -1,17 +1,18 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests that an existing attribute can be modified
 
-const TEST_URL = "data:text/html,<div id='test-div'>Test modifying my ID attribute</div>";
+const TEST_URL = `data:text/html,
+                  <div id='test-div'>Test modifying my ID attribute</div>`;
 
 add_task(function*() {
   info("Opening the inspector on the test page");
   let {inspector, testActor} = yield openInspectorForURL(TEST_URL);
 
   info("Selecting the test node");
   yield selectNode("#test-div", inspector);
 
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_03.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_03.js
@@ -1,17 +1,18 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests that a node's tagname can be edited in the markup-view
 
-const TEST_URL = "data:text/html;charset=utf-8,<div id='retag-me'><div id='retag-me-2'></div></div>";
+const TEST_URL = `data:text/html;charset=utf-8,
+                  <div id='retag-me'><div id='retag-me-2'></div></div>`;
 
 add_task(function*() {
   let {inspector, testActor} = yield openInspectorForURL(TEST_URL);
 
   yield inspector.markup.expandAll();
 
   info("Selecting the test node");
   yield selectNode("#retag-me", inspector);
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_05.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_05.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_attributes_test_runner.js */
 "use strict";
 
 // Tests that adding various types of attributes to nodes in the markup-view
 // works as expected. Also checks that the changes are properly undoable and
 // redoable. For each step in the test, we:
 // - Create a new DIV
 // - Make the change, check that the change was made as we expect
 // - Undo the change, check that the node is back in its original state
@@ -56,22 +56,22 @@ var TEST_DATA = [{
   }
 }, {
   desc: "Add multiple attributes with no value, and some with value",
   text: "disabled name='name' data-test='test' autofocus",
   expectedAttributes: {
     disabled: "",
     autofocus: "",
     name: "name",
-    'data-test': "test"
+    "data-test": "test"
   }
 }, {
   desc: "Add attribute with xmlns",
   text: "xmlns:edi='http://ecommerce.example.org/schema'",
   expectedAttributes: {
-    'xmlns:edi': "http://ecommerce.example.org/schema"
+    "xmlns:edi": "http://ecommerce.example.org/schema"
   }
 }];
 
 add_task(function*() {
   let {inspector, testActor} = yield openInspectorForURL(TEST_URL);
-  yield runAddAttributesTests(TEST_DATA, "div", inspector, testActor)
+  yield runAddAttributesTests(TEST_DATA, "div", inspector, testActor);
 });
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_06.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_06.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_attributes_test_runner.js */
 "use strict";
 
 // Tests that adding various types of attributes to nodes in the markup-view
 // works as expected. Also checks that the changes are properly undoable and
 // redoable. For each step in the test, we:
 // - Create a new DIV
 // - Make the change, check that the change was made as we expect
 // - Undo the change, check that the node is back in its original state
@@ -66,19 +66,20 @@ var TEST_DATA = [{
   desc: "Object attribute names",
   text: "toString=\"true\" hasOwnProperty=\"false\"",
   expectedAttributes: {
     tostring: "true",
     hasownproperty: "false"
   }
 }, {
   desc: "Add event handlers",
-  text: "onclick=\"javascript: throw new Error('wont fire');\" onload=\"alert('here');\"",
+  text: "onclick=\"javascript: throw new Error('wont fire');\" " +
+        "onload=\"alert('here');\"",
   expectedAttributes: {
     onclick: "javascript: throw new Error('wont fire');",
     onload: "alert('here');"
   }
 }];
 
 add_task(function*() {
   let {inspector, testActor} = yield openInspectorForURL(TEST_URL);
-  yield runAddAttributesTests(TEST_DATA, "div", inspector, testActor)
+  yield runAddAttributesTests(TEST_DATA, "div", inspector, testActor);
 });
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_07.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_07.js
@@ -1,12 +1,12 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
+/* import-globals-from helper_attributes_test_runner.js */
 "use strict";
 
 // One more test testing various add-attributes configurations
 // Some of the test data below asserts that long attributes get collapsed
 
 loadHelperScript("helper_attributes_test_runner.js");
 
 const LONG_ATTRIBUTE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-ABCDEFGHIJKLMNOPQRSTUVWXYZ-ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ-ABCDEFGHIJKLMNOPQRSTUVWXYZ-ABCDEFGHIJKLMNOPQRSTUVWXYZ";
@@ -26,61 +26,66 @@ var TEST_DATA = [{
 }, {
   desc: "Add an attribute by clicking the empty space after a node",
   text: 'class="newclass" style="color:green"',
   expectedAttributes: {
     class: "newclass",
     style: "color:green"
   }
 }, {
-  desc: 'Try add an attribute containing a quote (") attribute by ' +
-        'clicking the empty space after a node - this should result ' +
-        'in it being set to an empty string',
+  desc: "Try add an attribute containing a quote (\") attribute by " +
+        "clicking the empty space after a node - this should result " +
+        "in it being set to an empty string",
   text: 'class="newclass" style="""',
   expectedAttributes: {
     class: "newclass",
     style: ""
   }
 }, {
   desc: "Try to add long data URL to make sure it is collapsed in attribute editor.",
-  text: "style='"+DATA_URL_INLINE_STYLE+"'",
+  text: `style='${DATA_URL_INLINE_STYLE}'`,
   expectedAttributes: {
-    'style': DATA_URL_INLINE_STYLE
+    "style": DATA_URL_INLINE_STYLE
   },
   validate: (element, container, inspector) => {
     let editor = container.editor;
-    let visibleAttrText = editor.attrElements.get("style").querySelector(".attr-value").textContent;
-    is (visibleAttrText, DATA_URL_INLINE_STYLE_COLLAPSED);
+    let visibleAttrText = editor.attrElements.get("style")
+                                             .querySelector(".attr-value")
+                                             .textContent;
+    is(visibleAttrText, DATA_URL_INLINE_STYLE_COLLAPSED);
   }
 }, {
   desc: "Try to add long attribute to make sure it is collapsed in attribute editor.",
-  text: 'data-long="'+LONG_ATTRIBUTE+'"',
+  text: `data-long="${LONG_ATTRIBUTE}"`,
   expectedAttributes: {
-    'data-long':LONG_ATTRIBUTE
+    "data-long": LONG_ATTRIBUTE
   },
   validate: (element, container, inspector) => {
     let editor = container.editor;
-    let visibleAttrText = editor.attrElements.get("data-long").querySelector(".attr-value").textContent;
-    is (visibleAttrText, LONG_ATTRIBUTE_COLLAPSED)
+    let visibleAttrText = editor.attrElements.get("data-long")
+                                             .querySelector(".attr-value")
+                                             .textContent;
+    is(visibleAttrText, LONG_ATTRIBUTE_COLLAPSED);
   }
 }, {
   desc: "Try to add long data URL to make sure it is collapsed in attribute editor.",
-  text: 'src="'+DATA_URL_ATTRIBUTE+'"',
+  text: `src="${DATA_URL_ATTRIBUTE}"`,
   expectedAttributes: {
     "src": DATA_URL_ATTRIBUTE
   },
   validate: (element, container, inspector) => {
     let editor = container.editor;
-    let visibleAttrText = editor.attrElements.get("src").querySelector(".attr-value").textContent;
-    is (visibleAttrText, DATA_URL_ATTRIBUTE_COLLAPSED);
+    let visibleAttrText = editor.attrElements.get("src")
+                                .querySelector(".attr-value").textContent;
+    is(visibleAttrText, DATA_URL_ATTRIBUTE_COLLAPSED);
   }
 }, {
   desc: "Try to add long attribute with collapseAttributes == false" +
   "to make sure it isn't collapsed in attribute editor.",
-  text: 'data-long="' + LONG_ATTRIBUTE + '"',
+  text: `data-long="${LONG_ATTRIBUTE}"`,
   expectedAttributes: {
     "data-long": LONG_ATTRIBUTE
   },
   setUp: function(inspector) {
     Services.prefs.setBoolPref("devtools.markup.collapseAttributes", false);
   },
   validate: (element, container, inspector) => {
     let editor = container.editor;
@@ -90,17 +95,17 @@ var TEST_DATA = [{
       .textContent;
     is(visibleAttrText, LONG_ATTRIBUTE);
   },
   tearDown: function(inspector) {
     Services.prefs.clearUserPref("devtools.markup.collapseAttributes");
   }
 }, {
   desc: "Try to collapse attributes with collapseAttributeLength == 5",
-  text: 'data-long="' + LONG_ATTRIBUTE + '"',
+  text: `data-long="${LONG_ATTRIBUTE}"`,
   expectedAttributes: {
     "data-long": LONG_ATTRIBUTE
   },
   setUp: function(inspector) {
     Services.prefs.setIntPref("devtools.markup.collapseAttributeLength", 2);
   },
   validate: (element, container, inspector) => {
     let firstChar = LONG_ATTRIBUTE[0];
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_08.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_08.js
@@ -37,29 +37,29 @@ function* testCollapsedLongAttribute(ins
 
   let {editor} = yield getContainerForSelector("#node24", inspector);
   let attr = editor.attrElements.get("data-long").querySelector(".editable");
 
   // Check to make sure it has expanded after focus
   attr.focus();
   EventUtils.sendKey("return", inspector.panelWin);
   let input = inplaceEditor(attr).input;
-  is (input.value, 'data-long="' + LONG_ATTRIBUTE + '"');
+  is(input.value, `data-long="${LONG_ATTRIBUTE}"`);
   EventUtils.sendKey("escape", inspector.panelWin);
 
   setEditableFieldValue(attr, input.value + ' data-short="ABC"', inspector);
   yield inspector.once("markupmutation");
 
   let visibleAttrText = editor.attrElements.get("data-long").querySelector(".attr-value").textContent;
-  is (visibleAttrText, LONG_ATTRIBUTE_COLLAPSED)
+  is(visibleAttrText, LONG_ATTRIBUTE_COLLAPSED)
 
   yield assertAttributes("#node24", {
     id: "node24",
     class: "",
-    'data-long': LONG_ATTRIBUTE,
+    "data-long": LONG_ATTRIBUTE,
     "data-short": "ABC"
   }, testActor);
 }
 
 function* testModifyInlineStyleWithQuotes(inspector, testActor) {
   info("Modify inline style containing \"");
 
   yield assertAttributes("#node26", {
@@ -72,17 +72,17 @@ function* testModifyInlineStyleWithQuote
   let attr = editor.attrElements.get("style").querySelector(".editable");
 
   attr.focus();
   EventUtils.sendKey("return", inspector.panelWin);
 
   let input = inplaceEditor(attr).input;
   let value = input.value;
 
-  is (value,
+  is(value,
     "style='background-image: url(\"moz-page-thumb://thumbnail?url=http%3A%2F%2Fwww.mozilla.org%2F\");'",
     "Value contains actual double quotes"
   );
 
   value = value.replace(/mozilla\.org/, "mozilla.com");
   input.value = value;
 
   EventUtils.sendKey("return", inspector.panelWin);
@@ -108,17 +108,17 @@ function* testEditingAttributeWithMixedQ
   let attr = editor.attrElements.get("class").querySelector(".editable");
 
   attr.focus();
   EventUtils.sendKey("return", inspector.panelWin);
 
   let input = inplaceEditor(attr).input;
   let value = input.value;
 
-  is (value, "class=\"Double &quot; and single '\"", "Value contains &quot;");
+  is(value, "class=\"Double &quot; and single '\"", "Value contains &quot;");
 
   value = value.replace(/Double/, "&quot;").replace(/single/, "'");
   input.value = value;
 
   EventUtils.sendKey("return", inspector.panelWin);
 
   yield onMutated;
 
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_10.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_10.js
@@ -4,30 +4,32 @@
 
 "use strict";
 
 // Tests that invalid tagname updates are handled correctly
 
 const TEST_URL = "data:text/html;charset=utf-8,<div></div>";
 
 add_task(function*() {
-  let {toolbox, inspector} = yield openInspectorForURL(TEST_URL);
+  let {inspector} = yield openInspectorForURL(TEST_URL);
   yield inspector.markup.expandAll();
   yield selectNode("div", inspector);
 
   info("Updating the DIV tagname to an invalid value");
   let container = yield getContainerForSelector("div", inspector);
   let onCancelReselect = inspector.markup.once("canceledreselectonremoved");
   let tagEditor = container.editor.tag;
   setEditableFieldValue(tagEditor, "<<<", inspector);
   yield onCancelReselect;
   ok(true, "The markup-view emitted the canceledreselectonremoved event");
-  is(inspector.selection.nodeFront, container.node, "The test DIV is still selected");
+  is(inspector.selection.nodeFront, container.node,
+     "The test DIV is still selected");
 
   info("Updating the DIV tagname to a valid value this time");
   let onReselect = inspector.markup.once("reselectedonremoved");
   setEditableFieldValue(tagEditor, "span", inspector);
   yield onReselect;
   ok(true, "The markup-view emitted the reselectedonremoved event");
 
   let spanFront = yield getNodeFront("span", inspector);
-  is(inspector.selection.nodeFront, spanFront, "The seelected node is now the SPAN");
+  is(inspector.selection.nodeFront, spanFront,
+     "The selected node is now the SPAN");
 });
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_11.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_11.js
@@ -7,30 +7,32 @@
 // Bug 1090874 - Tests that a node is not recreated when it's tagname editor
 // is blurred and no changes were done.
 
 const TEST_URL = "data:text/html;charset=utf-8,<div></div>";
 
 add_task(function*() {
   let isEditTagNameCalled = false;
 
-  let {toolbox, inspector} = yield openInspectorForURL(TEST_URL);
+  let {inspector} = yield openInspectorForURL(TEST_URL);
 
   // Overriding the editTagName walkerActor method here to check that it isn't
   // called when blurring the tagname field.
-  inspector.walker.editTagName = function() { isEditTagNameCalled = true; }
+  inspector.walker.editTagName = function() {
+    isEditTagNameCalled = true;
+  };
 
   yield selectNode("div", inspector);
   let container = yield getContainerForSelector("div", inspector);
   let tagEditor = container.editor.tag;
 
   info("Blurring the tagname field");
   tagEditor.blur();
   is(isEditTagNameCalled, false, "The editTagName method wasn't called");
 
   info("Updating the tagname to uppercase");
   setEditableFieldValue(tagEditor, "DIV", inspector);
   is(isEditTagNameCalled, false, "The editTagName method wasn't called");
 
   info("Updating the tagname to a different value");
   setEditableFieldValue(tagEditor, "SPAN", inspector);
   is(isEditTagNameCalled, true, "The editTagName method was called");
-});
\ No newline at end of file
+});
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_12.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_12.js
@@ -15,61 +15,68 @@ add_task(function*() {
   yield testAttributeEditing(inspector);
   yield testAttributeDeletion(inspector);
 });
 
 function* testAttributeEditing(inspector) {
   info("Testing focus position after attribute editing");
 
   info("Setting the first non-id attribute in edit mode");
-  yield activateFirstAttribute("#attr", inspector); // focuses id
-  collapseSelectionAndTab(inspector); // focuses the first attr after id
+  // focuses id
+  yield activateFirstAttribute("#attr", inspector);
+  // focuses the first attr after id
+  collapseSelectionAndTab(inspector);
 
   let attrs = yield getAttributesFromEditor("#attr", inspector);
 
-  info("Editing this attribute, keeping the same name, and tabbing to the next");
+  info("Editing this attribute, keeping the same name, " +
+       "and tabbing to the next");
   yield editAttributeAndTab(attrs[1] + '="99"', inspector);
   checkFocusedAttribute(attrs[2], true);
 
-  info("Editing the new focused attribute, keeping the name, and tabbing to the previous");
+  info("Editing the new focused attribute, keeping the name, " +
+       "and tabbing to the previous");
   yield editAttributeAndTab(attrs[2] + '="99"', inspector, true);
   checkFocusedAttribute(attrs[1], true);
 
   info("Editing attribute name, changes attribute order");
   yield editAttributeAndTab("d='4'", inspector);
   checkFocusedAttribute("id", true);
 
   // Escape of the currently focused field for the next test
   EventUtils.sendKey("escape", inspector.panelWin);
 }
 
 function* testAttributeDeletion(inspector) {
   info("Testing focus position after attribute deletion");
 
   info("Setting the first non-id attribute in edit mode");
-  yield activateFirstAttribute("#delattr", inspector); // focuses id
-  collapseSelectionAndTab(inspector); // focuses the first attr after id
+  // focuses id
+  yield activateFirstAttribute("#delattr", inspector);
+  // focuses the first attr after id
+  collapseSelectionAndTab(inspector);
 
   let attrs = yield getAttributesFromEditor("#delattr", inspector);
 
   info("Entering an invalid attribute to delete the attribute");
   yield editAttributeAndTab('"', inspector);
   checkFocusedAttribute(attrs[2], true);
 
   info("Deleting the last attribute");
   yield editAttributeAndTab(" ", inspector);
 
   // Check we're on the newattr element
   let focusedAttr = Services.focus.focusedElement;
-  ok(focusedAttr.classList.contains("styleinspector-propertyeditor"), "in newattr");
+  ok(focusedAttr.classList.contains("styleinspector-propertyeditor"),
+     "in newattr");
   is(focusedAttr.tagName, "input", "newattr is active");
 }
 
 function* editAttributeAndTab(newValue, inspector, goPrevious) {
-  var onEditMutation = inspector.markup.once("refocusedonedit");
+  let onEditMutation = inspector.markup.once("refocusedonedit");
   inspector.markup.doc.activeElement.value = newValue;
   if (goPrevious) {
     EventUtils.synthesizeKey("VK_TAB", { shiftKey: true },
       inspector.panelWin);
   } else {
     EventUtils.sendKey("tab", inspector.panelWin);
   }
   yield onEditMutation;
--- a/devtools/client/inspector/markup/test/browser_markup_tag_edit_13-other.js
+++ b/devtools/client/inspector/markup/test/browser_markup_tag_edit_13-other.js
@@ -1,17 +1,18 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests that doesn't fit into any specific category.
 
-const TEST_URL = "data:text/html;charset=utf8,<div a b id='order' c class></div>";
+const TEST_URL = `data:text/html;charset=utf8,
+                  <div a b id='order' c class></div>`;
 
 add_task(function*() {
   let {inspector, testActor} = yield openInspectorForURL(TEST_URL);
 
   yield testOriginalAttributesOrder(inspector);
   yield testOrderAfterAttributeChange(inspector, testActor);
 });
 
@@ -20,17 +21,16 @@ function* testOriginalAttributesOrder(in
 
   let attributes = yield getAttributesFromEditor("#order", inspector);
   ok(isEqual(attributes, ["id", "class", "a", "b", "c"]), "ordered correctly");
 }
 
 function* testOrderAfterAttributeChange(inspector, testActor) {
   info("Testing order of attributes after attribute is change by setAttribute");
 
-  let container = getContainerForSelector("#order", inspector);
   yield testActor.setAttribute("#order", "a", "changed");
 
   let attributes = yield getAttributesFromEditor("#order", inspector);
   ok(isEqual(attributes, ["id", "class", "a", "b", "c"]),
     "order isn't changed");
 }
 
 function isEqual(a, b) {
--- a/devtools/client/inspector/markup/test/browser_markup_textcontent_edit_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_textcontent_edit_01.js
@@ -41,31 +41,34 @@ function* editContainer(inspector, {sele
   is(node.nodeValue, oldValue, "The test node's text content is correct");
 
   info("Changing the text content");
   let onMutated = inspector.once("markupmutation");
   let container = yield getContainerForSelector(selector, inspector);
   let field = container.elt.querySelector("pre");
 
   if (shortValue) {
-    is (oldValue.indexOf(field.textContent.substring(0, field.textContent.length - 1)), 0,
-        "The shortened value starts with the full value " + field.textContent);
-    ok (oldValue.length > field.textContent.length, "The shortened value is short");
+    is(oldValue.indexOf(field.textContent.substring(0, field.textContent.length - 1)), 0,
+       "The shortened value starts with the full value " + field.textContent);
+    ok(oldValue.length > field.textContent.length,
+       "The shortened value is short");
   } else {
-    is (field.textContent, oldValue, "The text node has the correct original value");
+    is(field.textContent, oldValue,
+       "The text node has the correct original value");
   }
 
   inspector.markup.markNodeAsSelected(container.node);
 
   if (shortValue) {
     info("Waiting for the text to be updated");
     yield inspector.markup.once("text-expand");
   }
 
-  is (field.textContent, oldValue, "The text node has the correct original value after selecting");
+  is(field.textContent, oldValue,
+     "The text node has the correct original value after selecting");
   setEditableFieldValue(field, newValue, inspector);
 
   info("Listening to the markupmutation event");
   yield onMutated;
 
   is(node.nodeValue, newValue, "The test node's text content has changed");
 
   info("Selecting the <body> to reset the selection");
--- a/devtools/client/inspector/markup/test/browser_markup_toggle_01.js
+++ b/devtools/client/inspector/markup/test/browser_markup_toggle_01.js
@@ -27,30 +27,30 @@ add_task(function*() {
   let onChildren = waitForChildrenUpdated(inspector);
   let onUpdated = inspector.once("inspector-updated");
   EventUtils.synthesizeMouseAtCenter(container.expander, {},
     inspector.markup.doc.defaultView);
   yield onChildren;
   yield onUpdated;
 
   info("Checking that child LI elements have been created");
-  for (let i = 0; i < content.document.querySelectorAll("li").length; i ++) {
+  for (let i = 0; i < content.document.querySelectorAll("li").length; i++) {
     let liContainer = yield getContainerForSelector(
-      "li:nth-child(" + (i + 1) + ")", inspector);
+      `li:nth-child(${i + 1})`, inspector);
     ok(liContainer, "A container for the child LI element was created");
   }
   ok(container.expanded, "Parent UL container is expanded");
 
   info("Clicking again on the UL expander");
   // No need to wait, this is a local, synchronous operation where nodes are
   // only hidden from the view, not destroyed
   EventUtils.synthesizeMouseAtCenter(container.expander, {},
     inspector.markup.doc.defaultView);
 
   info("Checking that child LI elements have been hidden");
-  for (let i = 0; i < content.document.querySelectorAll("li").length; i ++) {
+  for (let i = 0; i < content.document.querySelectorAll("li").length; i++) {
     let liContainer = yield getContainerForSelector(
-      "li:nth-child(" + (i + 1) + ")", inspector);
+      `li:nth-child(${i + 1})`, inspector);
     is(liContainer.elt.getClientRects().length, 0,
       "The container for the child LI element was hidden");
   }
   ok(!container.expanded, "Parent UL container is collapsed");
 });
--- a/devtools/client/inspector/markup/test/browser_markup_toggle_02.js
+++ b/devtools/client/inspector/markup/test/browser_markup_toggle_02.js
@@ -18,30 +18,30 @@ add_task(function*() {
   let onChildren = waitForChildrenUpdated(inspector);
   let onUpdated = inspector.once("inspector-updated");
   EventUtils.synthesizeMouseAtCenter(container.tagLine, {clickCount: 2},
     inspector.markup.doc.defaultView);
   yield onChildren;
   yield onUpdated;
 
   info("Checking that child LI elements have been created");
-  for (let i = 0; i < content.document.querySelectorAll("li").length; i ++) {
+  for (let i = 0; i < content.document.querySelectorAll("li").length; i++) {
     let liContainer = yield getContainerForSelector(
       "li:nth-child(" + (i + 1) + ")", inspector);
     ok(liContainer, "A container for the child LI element was created");
   }
   ok(container.expanded, "Parent UL container is expanded");
 
   info("Dbl-clicking again on the UL expander");
   // No need to wait, this is a local, synchronous operation where nodes are
   // only hidden from the view, not destroyed
   EventUtils.synthesizeMouseAtCenter(container.tagLine, {clickCount: 2},
     inspector.markup.doc.defaultView);
 
   info("Checking that child LI elements have been hidden");
-  for (let i = 0; i < content.document.querySelectorAll("li").length; i ++) {
+  for (let i = 0; i < content.document.querySelectorAll("li").length; i++) {
     let liContainer = yield getContainerForSelector(
       "li:nth-child(" + (i + 1) + ")", inspector);
     is(liContainer.elt.getClientRects().length, 0,
       "The container for the child LI element was hidden");
   }
   ok(!container.expanded, "Parent UL container is collapsed");
 });
--- a/devtools/client/inspector/markup/test/head.js
+++ b/devtools/client/inspector/markup/test/head.js
@@ -1,21 +1,23 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/* eslint no-unused-vars: [2, {"vars": "local"}] */
+/* import-globals-from ../../test/head.js */
 "use strict";
 
 // Import the inspector's head.js first (which itself imports shared-head.js).
 Services.scriptloader.loadSubScript(
   "chrome://mochitests/content/browser/devtools/client/inspector/test/head.js",
   this);
 
 var {getInplaceEditorForSpan: inplaceEditor} = require("devtools/client/shared/inplace-editor");
 var clipboard = require("sdk/clipboard");
-var {setTimeout, clearTimeout} = require("sdk/timers");
+var {ActorRegistryFront} = require("devtools/server/actors/actor-registry");
 
 // If a test times out we want to see the complete log and not just the last few
 // lines.
 SimpleTest.requestCompleteLog();
 
 // Set the testing flag on DevToolsUtils and reset it when the test ends
 DevToolsUtils.testing = true;
 registerCleanupFunction(() => DevToolsUtils.testing = false);
@@ -27,18 +29,18 @@ registerCleanupFunction(() => {
   Services.prefs.clearUserPref("devtools.markup.pagesize");
   Services.prefs.clearUserPref("dom.webcomponents.enabled");
   Services.prefs.clearUserPref("devtools.inspector.showAllAnonymousContent");
 });
 
 /**
  * Some tests may need to import one or more of the test helper scripts.
  * A test helper script is simply a js file that contains common test code that
- * is either not common-enough to be in head.js, or that is located in a separate
- * directory.
+ * is either not common-enough to be in head.js, or that is located in a
+ * separate directory.
  * The script will be loaded synchronously and in the test's scope.
  * @param {String} filePath The file path, relative to the current directory.
  *                 Examples:
  *                 - "helper_attributes_test_runner.js"
  *                 - "../../../commandline/test/helpers.js"
  */
 function loadHelperScript(filePath) {
   let testDir = gTestPath.substr(0, gTestPath.lastIndexOf("/"));
@@ -173,35 +175,27 @@ function waitForChildrenUpdated({markup}
  * @return {Promise} Resolves when the node has been selected.
  */
 var clickContainer = Task.async(function*(selector, inspector) {
   info("Clicking on the markup-container for node " + selector);
 
   let nodeFront = yield getNodeFront(selector, inspector);
   let container = getContainerForNodeFront(nodeFront, inspector);
 
-  let updated = container.selected ? promise.resolve() : inspector.once("inspector-updated");
+  let updated = container.selected
+                ? promise.resolve()
+                : inspector.once("inspector-updated");
   EventUtils.synthesizeMouseAtCenter(container.tagLine, {type: "mousedown"},
     inspector.markup.doc.defaultView);
   EventUtils.synthesizeMouseAtCenter(container.tagLine, {type: "mouseup"},
     inspector.markup.doc.defaultView);
   return updated;
 });
 
 /**
- * Checks if the highlighter is visible currently
- * @return {Boolean}
- */
-function isHighlighterVisible() {
-  let highlighter = gBrowser.selectedBrowser.parentNode
-                            .querySelector(".highlighter-container .box-model-root");
-  return highlighter && !highlighter.hasAttribute("hidden");
-}
-
-/**
  * Focus a given editable element, enter edit mode, set value, and commit
  * @param {DOMNode} field The element that gets editable after receiving focus
  * and <ENTER> keypress
  * @param {String} value The string value to be set into the edited field
  * @param {InspectorPanel} inspector The instance of InspectorPanel currently
  * loaded in the toolbox
  */
 function setEditableFieldValue(field, value, inspector) {
@@ -219,17 +213,17 @@ function setEditableFieldValue(field, va
  * node to mutates (when new attribute(s) is(are) created)
  * @param {String} selector The selector for the node to edit.
  * @param {String} text The new attribute text to be entered (e.g. "id='test'")
  * @param {InspectorPanel} inspector The instance of InspectorPanel currently
  * loaded in the toolbox
  * @return a promise that resolves when the node has mutated
  */
 var addNewAttributes = Task.async(function*(selector, text, inspector) {
-  info("Entering text '" + text + "' in node '" + selector + "''s new attribute field");
+  info(`Entering text "${text}" in new attribute field for node ${selector}`);
 
   let container = yield getContainerForSelector(selector, inspector);
   ok(container, "The container for '" + selector + "' was found");
 
   info("Listening for the markupmutation event");
   let nodeMutated = inspector.once("markupmutation");
   setEditableFieldValue(container.editor.newAttr, text, inspector);
   yield nodeMutated;
@@ -247,17 +241,17 @@ var addNewAttributes = Task.async(functi
  * parser. The parser only provides unescaped entities so &amp; will return &.
  */
 var assertAttributes = Task.async(function*(selector, expected, testActor) {
   let {attributes: actual} = yield getNodeInfo(selector, testActor);
 
   is(actual.length, Object.keys(expected).length,
     "The node " + selector + " has the expected number of attributes.");
   for (let attr in expected) {
-    let foundAttr = actual.find(({name, value}) => name === attr);
+    let foundAttr = actual.find(({name}) => name === attr);
     let foundValue = foundAttr ? foundAttr.value : undefined;
     ok(foundAttr, "The node " + selector + " has the attribute " + attr);
     is(foundValue, expected[attr],
       "The node " + selector + " has the correct " + attr + " attribute value");
   }
 });
 
 /**
@@ -339,20 +333,22 @@ function wait(ms) {
  * Check to see if the inspector menu items for editing are disabled.
  * Things like Edit As HTML, Delete Node, etc.
  * @param {NodeFront} nodeFront
  * @param {InspectorPanel} inspector
  * @param {Boolean} assert Should this function run assertions inline.
  * @return A promise that resolves with a boolean indicating whether
  *         the menu items are disabled once the menu has been checked.
  */
-var isEditingMenuDisabled = Task.async(function*(nodeFront, inspector, assert=true) {
-  let deleteMenuItem = inspector.panelDoc.getElementById("node-menu-delete");
-  let editHTMLMenuItem = inspector.panelDoc.getElementById("node-menu-edithtml");
-  let pasteHTMLMenuItem = inspector.panelDoc.getElementById("node-menu-pasteouterhtml");
+var isEditingMenuDisabled = Task.async(
+function*(nodeFront, inspector, assert = true) {
+  let doc = inspector.panelDoc;
+  let deleteMenuItem = doc.getElementById("node-menu-delete");
+  let editHTMLMenuItem = doc.getElementById("node-menu-edithtml");
+  let pasteHTMLMenuItem = doc.getElementById("node-menu-pasteouterhtml");
 
   // To ensure clipboard contains something to paste.
   clipboard.set("<p>test</p>", "html");
 
   let menu = inspector.nodemenu;
   yield selectNode(nodeFront, inspector);
   yield reopenMenu(menu);
 
@@ -361,32 +357,36 @@ var isEditingMenuDisabled = Task.async(f
   let isPasteHTMLMenuDisabled = pasteHTMLMenuItem.hasAttribute("disabled");
 
   if (assert) {
     ok(isDeleteMenuDisabled, "Delete menu item is disabled");
     ok(isEditHTMLMenuDisabled, "Edit HTML menu item is disabled");
     ok(isPasteHTMLMenuDisabled, "Paste HTML menu item is disabled");
   }
 
-  return isDeleteMenuDisabled && isEditHTMLMenuDisabled && isPasteHTMLMenuDisabled;
+  return isDeleteMenuDisabled &&
+         isEditHTMLMenuDisabled &&
+         isPasteHTMLMenuDisabled;
 });
 
 /**
  * Check to see if the inspector menu items for editing are enabled.
  * Things like Edit As HTML, Delete Node, etc.
  * @param {NodeFront} nodeFront
  * @param {InspectorPanel} inspector
  * @param {Boolean} assert Should this function run assertions inline.
  * @return A promise that resolves with a boolean indicating whether
  *         the menu items are enabled once the menu has been checked.
  */
-var isEditingMenuEnabled = Task.async(function*(nodeFront, inspector, assert=true) {
-  let deleteMenuItem = inspector.panelDoc.getElementById("node-menu-delete");
-  let editHTMLMenuItem = inspector.panelDoc.getElementById("node-menu-edithtml");
-  let pasteHTMLMenuItem = inspector.panelDoc.getElementById("node-menu-pasteouterhtml");
+var isEditingMenuEnabled = Task.async(
+function*(nodeFront, inspector, assert = true) {
+  let doc = inspector.panelDoc;
+  let deleteMenuItem = doc.getElementById("node-menu-delete");
+  let editHTMLMenuItem = doc.getElementById("node-menu-edithtml");
+  let pasteHTMLMenuItem = doc.getElementById("node-menu-pasteouterhtml");
 
   // To ensure clipboard contains something to paste.
   clipboard.set("<p>test</p>", "html");
 
   let menu = inspector.nodemenu;
   yield selectNode(nodeFront, inspector);
   yield reopenMenu(menu);
 
@@ -395,17 +395,19 @@ var isEditingMenuEnabled = Task.async(fu
   let isPasteHTMLMenuDisabled = pasteHTMLMenuItem.hasAttribute("disabled");
 
   if (assert) {
     ok(!isDeleteMenuDisabled, "Delete menu item is enabled");
     ok(!isEditHTMLMenuDisabled, "Edit HTML menu item is enabled");
     ok(!isPasteHTMLMenuDisabled, "Paste HTML menu item is enabled");
   }
 
-  return !isDeleteMenuDisabled && !isEditHTMLMenuDisabled && !isPasteHTMLMenuDisabled;
+  return !isDeleteMenuDisabled &&
+         !isEditHTMLMenuDisabled &&
+         !isPasteHTMLMenuDisabled;
 });
 
 /**
  * Open a menu (closing it first if necessary).
  * @param {DOMNode} menu A menu that implements hidePopup/openPopup
  * @return a promise that resolves once the menu is opened.
  */
 var reopenMenu = Task.async(function*(menu) {
@@ -432,44 +434,50 @@ function promiseNextTick() {
   return deferred.promise;
 }
 
 /**
  * Collapses the current text selection in an input field and tabs to the next
  * field.
  */
 function collapseSelectionAndTab(inspector) {
-  EventUtils.sendKey("tab", inspector.panelWin); // collapse selection and move caret to end
-  EventUtils.sendKey("tab", inspector.panelWin); // next element
+  // collapse selection and move caret to end
+  EventUtils.sendKey("tab", inspector.panelWin);
+  // next element
+  EventUtils.sendKey("tab", inspector.panelWin);
 }
 
 /**
  * Collapses the current text selection in an input field and tabs to the
  * previous field.
  */
 function collapseSelectionAndShiftTab(inspector) {
+  // collapse selection and move caret to end
   EventUtils.synthesizeKey("VK_TAB", { shiftKey: true },
-    inspector.panelWin); // collapse selection and move caret to end
+    inspector.panelWin);
+  // previous element
   EventUtils.synthesizeKey("VK_TAB", { shiftKey: true },
-    inspector.panelWin); // previous element
+    inspector.panelWin);
 }
 
 /**
  * Check that the current focused element is an attribute element in the markup
  * view.
  * @param {String} attrName The attribute name expected to be found
  * @param {Boolean} editMode Whether or not the attribute should be in edit mode
  */
 function checkFocusedAttribute(attrName, editMode) {
   let focusedAttr = Services.focus.focusedElement;
   is(focusedAttr ? focusedAttr.parentNode.dataset.attr : undefined,
-    attrName, attrName + " attribute editor is currently focused.");
+     attrName, attrName + " attribute editor is currently focused.");
   is(focusedAttr ? focusedAttr.tagName : undefined,
-    editMode ? "input": "span",
-    editMode ? attrName + " is in edit mode" : attrName + " is not in edit mode");
+     editMode ? "input" : "span",
+     editMode
+     ? attrName + " is in edit mode"
+     : attrName + " is not in edit mode");
 }
 
 /**
  * Get attributes for node as how they are represented in editor.
  *
  * @param  {String} selector
  * @param  {InspectorPanel} inspector
  * @return {Promise}
@@ -479,18 +487,18 @@ function checkFocusedAttribute(attrName,
 var getAttributesFromEditor = Task.async(function*(selector, inspector) {
   let nodeList = (yield getContainerForSelector(selector, inspector))
     .tagLine.querySelectorAll("[data-attr]");
 
   return [...nodeList].map(node => node.getAttribute("data-attr"));
 });
 
 // The expand all operation of the markup-view calls itself recursively and
-// there's not one event we can wait for to know when it's done
-// so use this helper function to wait until all recursive children updates are done.
+// there's not one event we can wait for to know when it's done so use this
+// helper function to wait until all recursive children updates are done.
 function* waitForMultipleChildrenUpdates(inspector) {
   // As long as child updates are queued up while we wait for an update already
   // wait again
   if (inspector.markup._queuedChildUpdates &&
       inspector.markup._queuedChildUpdates.size) {
     yield waitForChildrenUpdated(inspector);
     return yield waitForMultipleChildrenUpdates(inspector);
   }
@@ -526,22 +534,22 @@ function createTestHTTPServer() {
   server.start(-1);
   return server;
 }
 
 /**
  * A helper that simulates a contextmenu event on the given chrome DOM element.
  */
 function contextMenuClick(element) {
-  let evt = element.ownerDocument.createEvent('MouseEvents');
-  let button = 2;  // right click
+  let evt = element.ownerDocument.createEvent("MouseEvents");
+  let buttonRight = 2;
 
-  evt.initMouseEvent('contextmenu', true, true,
-       element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
-       false, false, false, button, null);
+  evt.initMouseEvent("contextmenu", true, true,
+    element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false,
+    false, buttonRight, null);
 
   element.dispatchEvent(evt);
 }
 
 /**
  * Registers new backend tab actor.
  *
  * @param {DebuggerClient} client RDP client object (toolbox.target.client)
@@ -568,22 +576,20 @@ function registerTabActor(client, option
       prefix: options.prefix,
       constructor: options.actorClass,
       type: { tab: true },
     };
 
     // Register the custom actor on the backend.
     let registry = ActorRegistryFront(client, response);
     return registry.registerActor(moduleUrl, config).then(registrar => {
-      return client.getTab().then(response => {
-        return {
-          registrar: registrar,
-          form: response.tab
-        };
-      });
+      return client.getTab().then(tabResponse => ({
+        registrar: registrar,
+        form: tabResponse.tab
+      }));
     });
   });
 }
 
 /**
  * A helper for unregistering an existing backend actor.
  *
  * @param {ActorActor} registrar A handle to the registered actor
--- a/devtools/client/inspector/markup/test/helper_attributes_test_runner.js
+++ b/devtools/client/inspector/markup/test/helper_attributes_test_runner.js
@@ -1,11 +1,14 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/* eslint no-unused-vars: [2, {"vars": "local"}] */
+/* import-globals-from head.js */
+"use strict";
 
 /**
  * Run a series of add-attributes tests.
  * This function will iterate over the provided tests array and run each test.
  * Each test's goal is to provide some text to be entered into the test node's
  * new-attribute field and check that the given attributes have been created.
  * After each test has run, the markup-view's undo command will be called and
  * the test runner will check if all the new attributes are gone.
@@ -34,20 +37,20 @@ function runAddAttributesTests(tests, no
  * Run a single add-attribute test.
  * See runAddAttributesTests for a description.
  * @param {Object} test A test object should contain the following properties:
  *        - desc {String} a textual description for that test, to help when
  *        reading logs
  *        - text {String} the string to be inserted into the new attribute field
  *        - expectedAttributes {Object} a key/value pair object that will be
  *        used to check the attributes on the test element
- *        - validate {Function} optional extra function that will be called after
- *        the attributes have been added and which should be used to assert some
- *        more things this test runner might not be checking. The function will
- *        be called with the following arguments:
+ *        - validate {Function} optional extra function that will be called
+ *        after the attributes have been added and which should be used to
+ *        assert some more things this test runner might not be checking. The
+ *        function will be called with the following arguments:
  *          - {DOMNode} The element being tested
  *          - {MarkupContainer} The corresponding container in the markup-view
  *          - {InspectorPanel} The instance of the InspectorPanel opened
  * @param {String} selector The node selector corresponding to the test element
  * @param {InspectorPanel} inspector The instance of InspectorPanel currently
  * @param {TestActorFront} testActor The current TestActorFront instance.
  * opened
  */
@@ -76,19 +79,19 @@ function* runAddAttributesTest(test, sel
   if (test.tearDown) {
     test.tearDown(inspector);
   }
 }
 
 /**
  * Run a series of edit-attributes tests.
  * This function will iterate over the provided tests array and run each test.
- * Each test's goal is to locate a given element on the current test page, assert
- * its current attributes, then provide the name of one of them and a value to
- * be set into it, and then check if the new attributes are correct.
+ * Each test's goal is to locate a given element on the current test page,
+ * assert its current attributes, then provide the name of one of them and a
+ * value to be set into it, and then check if the new attributes are correct.
  * After each test has run, the markup-view's undo and redo commands will be
  * called and the test runner will assert again that the attributes are correct.
  * @param {Array} tests See runEditAttributesTest for the structure
  * @param {InspectorPanel} inspector The instance of InspectorPanel currently
  * opened
  * @param {TestActorFront} testActor The current TestActorFront instance.
  * @return a promise that resolves when the tests have run
  */
@@ -134,23 +137,25 @@ function* runEditAttributesTest(test, in
   info("Editing attribute " + test.name + " with value " + test.value);
 
   let container = yield getContainerForSelector(test.node, inspector);
   ok(container && container.editor, "The markup-container for " + test.node +
     " was found");
 
   info("Listening for the markupmutation event");
   let nodeMutated = inspector.once("markupmutation");
-  let attr = container.editor.attrElements.get(test.name).querySelector(".editable");
+  let attr = container.editor.attrElements.get(test.name)
+                                          .querySelector(".editable");
   setEditableFieldValue(attr, test.value, inspector);
   yield nodeMutated;
 
   info("Asserting the new attributes after edition");
   yield assertAttributes(test.node, test.expectedAttributes, testActor);
 
   info("Undo the change and assert that the attributes have been changed back");
   yield undoChange(inspector);
   yield assertAttributes(test.node, test.originalAttributes, testActor);
 
-  info("Redo the change and assert that the attributes have been changed again");
+  info("Redo the change and assert that the attributes have been changed " +
+       "again");
   yield redoChange(inspector);
   yield assertAttributes(test.node, test.expectedAttributes, testActor);
 }
--- a/devtools/client/inspector/markup/test/helper_events_test_runner.js
+++ b/devtools/client/inspector/markup/test/helper_events_test_runner.js
@@ -1,22 +1,25 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/* eslint no-unused-vars: [2, {"vars": "local"}] */
+/* import-globals-from head.js */
+"use strict";
 
 /**
  * Generator function that runs checkEventsForNode() for each object in the
  * TEST_DATA array.
  */
-function* runEventPopupTests() {
-  let {inspector, testActor} = yield openInspectorForURL(TEST_URL);
+function* runEventPopupTests(url, tests) {
+  let {inspector, testActor} = yield openInspectorForURL(url);
 
   yield inspector.markup.expandAll();
 
-  for (let test of TEST_DATA) {
+  for (let test of tests) {
     yield checkEventsForNode(test, inspector, testActor);
   }
 
   // Wait for promises to avoid leaks when running this as a single test.
   // We need to do this because we have opened a bunch of popups and don't them
   // to affect other test runs when they are GCd.
   yield promiseNextTick();
 }
@@ -56,17 +59,18 @@ function* checkEventsForNode(test, inspe
   }
 
   let tooltip = inspector.markup.tooltip;
 
   yield selectNode(selector, inspector);
 
   // Click button to show tooltip
   info("Clicking evHolder");
-  EventUtils.synthesizeMouseAtCenter(evHolder, {}, inspector.markup.doc.defaultView);
+  EventUtils.synthesizeMouseAtCenter(evHolder, {},
+    inspector.markup.doc.defaultView);
   yield tooltip.once("shown");
   info("tooltip shown");
 
   // Check values
   let content = tooltip.content;
   let headers = content.querySelectorAll(".event-header");
   let nodeFront = container.node;
   let cssSelector = nodeFront.nodeName + "#" + nodeFront.id;
--- a/devtools/client/inspector/markup/test/helper_outerhtml_test_runner.js
+++ b/devtools/client/inspector/markup/test/helper_outerhtml_test_runner.js
@@ -1,11 +1,14 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/* eslint no-unused-vars: [2, {"vars": "local"}] */
+/* import-globals-from head.js */
+"use strict";
 
 /**
  * Run a series of edit-outer-html tests.
  * This function will iterate over the provided tests array and run each test.
  * Each test's goal is to provide a node (a selector) and a new outer-HTML to be
  * inserted in place of the current one for that node.
  * This test runner will wait for the mutation event to be fired and will check
  * a few things. Each test may also provide its own validate function to perform
@@ -37,41 +40,43 @@ function runEditOuterHTMLTests(tests, in
  *        the actual DOM, see if it corresponds to the newHTML string provided
  * @param {InspectorPanel} inspector The instance of InspectorPanel currently
  * @param {TestActorFront} testActor The current TestActorFront instance
  * opened
  */
 function* runEditOuterHTMLTest(test, inspector, testActor) {
   info("Running an edit outerHTML test on '" + test.selector + "'");
   yield selectNode(test.selector, inspector);
-  let oldNodeFront = inspector.selection.nodeFront;
 
   let onUpdated = inspector.once("inspector-updated");
 
   info("Listen for reselectedonremoved and edit the outerHTML");
   let onReselected = inspector.markup.once("reselectedonremoved");
   yield inspector.markup.updateNodeOuterHTML(inspector.selection.nodeFront,
                                              test.newHTML, test.oldHTML);
   yield onReselected;
 
   // Typically selectedNode will === pageNode, but if a new element has been
   // injected in front of it, this will not be the case. If this happens.
   let selectedNodeFront = inspector.selection.nodeFront;
-  let pageNodeFront = yield inspector.walker.querySelector(inspector.walker.rootNode, test.selector);
+  let pageNodeFront = yield inspector.walker.querySelector(
+    inspector.walker.rootNode, test.selector);
   let pageNode = getNode(test.selector);
 
   if (test.validate) {
     yield test.validate(pageNode, pageNodeFront, selectedNodeFront, inspector);
   } else {
-    is(pageNodeFront, selectedNodeFront, "Original node (grabbed by selector) is selected");
+    is(pageNodeFront, selectedNodeFront,
+       "Original node (grabbed by selector) is selected");
     let {outerHTML} = yield getNodeInfo(test.selector, testActor);
     is(outerHTML, test.newHTML, "Outer HTML has been updated");
   }
 
   // Wait for the inspector to be fully updated to avoid causing errors by
   // abruptly closing hanging requests when the test ends
   yield onUpdated;
 
   let closeTagLine = inspector.markup.getContainer(pageNodeFront).closeTagLine;
   if (closeTagLine) {
-    is(closeTagLine.querySelectorAll(".theme-fg-contrast").length, 0, "No contrast class");
+    is(closeTagLine.querySelectorAll(".theme-fg-contrast").length, 0,
+       "No contrast class");
   }
 }