Bug 1035140 - Split browser_inspector_menu-0?.js into multiple tests. r=pbrosset, a=test-only
authorSami Jaktholm <sjakthol@outlook.com>
Sat, 14 Mar 2015 13:53:32 +0200
changeset 248128 8cb4760b0f549e43ba0fd769711621fdd1117fc0
parent 248127 d98504aa80c2f2847ca53e02c477c10dbb7214fd
child 248129 dd6e425826fcbe674f300188a42f9586606c6383
push id7764
push userryanvm@gmail.com
push dateMon, 16 Mar 2015 16:02:28 +0000
treeherdermozilla-aurora@38edb378cf15 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerspbrosset, test-only
bugs1035140
milestone38.0a2
Bug 1035140 - Split browser_inspector_menu-0?.js into multiple tests. r=pbrosset, a=test-only
browser/devtools/inspector/inspector-panel.js
browser/devtools/inspector/test/browser.ini
browser/devtools/inspector/test/browser_inspector_menu-01-sensitivity.js
browser/devtools/inspector/test/browser_inspector_menu-01.js
browser/devtools/inspector/test/browser_inspector_menu-02-copy-items.js
browser/devtools/inspector/test/browser_inspector_menu-02.js
browser/devtools/inspector/test/browser_inspector_menu-03-paste-items.js
browser/devtools/inspector/test/browser_inspector_menu-04-other.js
browser/devtools/inspector/test/doc_inspector_menu-01.html
browser/devtools/inspector/test/doc_inspector_menu-02.html
browser/devtools/inspector/test/doc_inspector_menu.html
--- a/browser/devtools/inspector/inspector-panel.js
+++ b/browser/devtools/inspector/inspector-panel.js
@@ -803,17 +803,17 @@ InspectorPanel.prototype = {
    * Show DOM properties
    */
   showDOMProperties: function InspectorPanel_showDOMProperties() {
     this._toolbox.openSplitConsole().then(() => {
       let panel = this._toolbox.getPanel("webconsole");
       let jsterm = panel.hud.jsterm;
 
       jsterm.execute("inspect($0)");
-      jsterm.focusInput();
+      jsterm.inputNode.focus();
     });
   },
 
   /**
    * Clear any pseudo-class locks applied to the current hierarchy.
    */
   clearPseudoClasses: function InspectorPanel_clearPseudoClasses() {
     if (!this.walker) {
--- a/browser/devtools/inspector/test/browser.ini
+++ b/browser/devtools/inspector/test/browser.ini
@@ -9,18 +9,17 @@ support-files =
   doc_inspector_highlight_after_transition.html
   doc_inspector_highlighter-comments.html
   doc_inspector_highlighter_csstransform.html
   doc_inspector_highlighter.html
   doc_inspector_highlighter_rect.html
   doc_inspector_highlighter_rect_iframe.html
   doc_inspector_infobar_01.html
   doc_inspector_infobar_02.html
-  doc_inspector_menu-01.html
-  doc_inspector_menu-02.html
+  doc_inspector_menu.html
   doc_inspector_remove-iframe-during-load.html
   doc_inspector_search.html
   doc_inspector_search-suggestions.html
   doc_inspector_select-last-selected-01.html
   doc_inspector_select-last-selected-02.html
   head.js
 
 [browser_inspector_breadcrumbs.js]
@@ -51,18 +50,20 @@ skip-if = e10s # GCLI isn't e10s compati
 [browser_inspector_highlighter-selector_02.js]
 [browser_inspector_highlighter-zoom.js]
 [browser_inspector_iframe-navigation.js]
 [browser_inspector_infobar_01.js]
 [browser_inspector_initialization.js]
 [browser_inspector_inspect-object-element.js]
 [browser_inspector_invalidate.js]
 [browser_inspector_keyboard-shortcuts.js]
-[browser_inspector_menu-01.js]
-[browser_inspector_menu-02.js]
+[browser_inspector_menu-01-sensitivity.js]
+[browser_inspector_menu-02-copy-items.js]
+[browser_inspector_menu-03-paste-items.js]
+[browser_inspector_menu-04-other.js]
 [browser_inspector_navigation.js]
 [browser_inspector_picker-stop-on-destroy.js]
 [browser_inspector_picker-stop-on-tool-change.js]
 [browser_inspector_pseudoclass-lock.js]
 [browser_inspector_pseudoclass-menu.js]
 [browser_inspector_reload-01.js]
 [browser_inspector_reload-02.js]
 [browser_inspector_remove-iframe-during-load.js]
new file mode 100644
--- /dev/null
+++ b/browser/devtools/inspector/test/browser_inspector_menu-01-sensitivity.js
@@ -0,0 +1,202 @@
+/* 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 context menu items are enabled / disabled correctly.
+
+const TEST_URL = TEST_URL_ROOT + "doc_inspector_menu.html";
+
+const PASTE_MENU_ITEMS = [
+  "node-menu-pasteinnerhtml",
+  "node-menu-pasteouterhtml",
+  "node-menu-pastebefore",
+  "node-menu-pasteafter",
+  "node-menu-pastefirstchild",
+  "node-menu-pastelastchild",
+];
+
+const ALL_MENU_ITEMS = [
+  "node-menu-edithtml",
+  "node-menu-copyinner",
+  "node-menu-copyouter",
+  "node-menu-copyuniqueselector",
+  "node-menu-copyimagedatauri",
+  "node-menu-showdomproperties",
+  "node-menu-delete",
+  "node-menu-pseudo-hover",
+  "node-menu-pseudo-active",
+  "node-menu-pseudo-focus"
+].concat(PASTE_MENU_ITEMS);
+
+const ITEMS_WITHOUT_SHOWDOMPROPS =
+  ALL_MENU_ITEMS.filter(item => item != "node-menu-showdomproperties");
+
+const TEST_CASES = [
+  {
+    desc: "doctype node with empty clipboard",
+    selector: null,
+    disabled: ITEMS_WITHOUT_SHOWDOMPROPS,
+  },
+  {
+    desc: "doctype node with html on clipboard",
+    clipboardData: "<p>some text</p>",
+    clipboardDataType: "html",
+    selector: null,
+    disabled: ITEMS_WITHOUT_SHOWDOMPROPS,
+  },
+  {
+    desc: "element node HTML on the clipboard",
+    clipboardData: "<p>some text</p>",
+    clipboardDataType: "html",
+    disabled: ["node-menu-copyimagedatauri"],
+    selector: "#sensitivity",
+  },
+  {
+    desc: "<html> element",
+    clipboardData: "<p>some text</p>",
+    clipboardDataType: "html",
+    selector: "html",
+    disabled: [
+      "node-menu-copyimagedatauri",
+      "node-menu-pastebefore",
+      "node-menu-pasteafter",
+      "node-menu-pastefirstchild",
+      "node-menu-pastelastchild",
+    ],
+  },
+  {
+    desc: "<body> with HTML on clipboard",
+    clipboardData: "<p>some text</p>",
+    clipboardDataType: "html",
+    selector: "body",
+    disabled: [
+      "node-menu-copyimagedatauri",
+      "node-menu-pastebefore",
+      "node-menu-pasteafter",
+    ]
+  },
+  {
+    desc: "<img> with HTML on clipboard",
+    clipboardData: "<p>some text</p>",
+    clipboardDataType: "html",
+    selector: "img",
+    disabled: []
+  },
+  {
+    desc: "<head> with HTML on clipboard",
+    clipboardData: "<p>some text</p>",
+    clipboardDataType: "html",
+    selector: "head",
+    disabled: [
+      "node-menu-copyimagedatauri",
+      "node-menu-pastebefore",
+      "node-menu-pasteafter",
+    ]
+  },
+  {
+    desc: "<element> with text on clipboard",
+    clipboardData: "some text",
+    clipboardDataType: undefined,
+    selector: "#paste-area",
+    disabled: ["node-menu-copyimagedatauri"],
+  },
+  {
+    desc: "<element> with base64 encoded image data uri on clipboard",
+    clipboardData:
+      "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABC" +
+      "AAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg==",
+    clipboardDataType: undefined,
+    selector: "#paste-area",
+    disabled: PASTE_MENU_ITEMS.concat(["node-menu-copyimagedatauri"]),
+  },
+  {
+    desc: "<element> with empty string on clipboard",
+    clipboardData: "",
+    clipboardDataType: undefined,
+    selector: "#paste-area",
+    disabled: PASTE_MENU_ITEMS.concat(["node-menu-copyimagedatauri"]),
+  },
+  {
+    desc: "<element> with whitespace only on clipboard",
+    clipboardData: " \n\n\t\n\n  \n",
+    clipboardDataType: undefined,
+    selector: "#paste-area",
+    disabled: PASTE_MENU_ITEMS.concat(["node-menu-copyimagedatauri"]),
+  },
+];
+
+let clipboard = require("sdk/clipboard");
+registerCleanupFunction(() => {
+  clipboard = null;
+});
+
+add_task(function *() {
+  let { inspector } = yield openInspectorForURL(TEST_URL);
+  for (let test of TEST_CASES) {
+    let { desc, disabled, selector } = test;
+
+    info(`Test ${desc}`);
+    setupClipboard(test.clipboardData, test.clipboardDataType);
+
+    let front = yield getNodeFrontForSelector(selector, inspector);
+
+    info("Selecting the specified node.");
+    yield selectNode(front, inspector);
+
+    info("Simulating context menu click on the selected node container.");
+    contextMenuClick(getContainerForNodeFront(front, inspector).tagLine);
+
+    for (let menuitem of ALL_MENU_ITEMS) {
+      let elt = inspector.panelDoc.getElementById(menuitem);
+      let shouldBeDisabled = disabled.indexOf(menuitem) !== -1;
+      let isDisabled = elt.hasAttribute("disabled");
+
+      is(isDisabled, shouldBeDisabled,
+        `#${menuitem} should be ${shouldBeDisabled ? "disabled" : "enabled"} `);
+    }
+  }
+});
+
+/**
+ * A helper that fetches a front for a node that matches the given selector or
+ * doctype node if the selector is falsy.
+ */
+function* getNodeFrontForSelector(selector, inspector) {
+  if (selector) {
+    info("Retrieving front for selector " + selector);
+    return getNodeFront(selector, inspector);
+  } else {
+    info("Retrieving front for doctype node");
+    let {nodes} = yield inspector.walker.children(inspector.walker.rootNode);
+    return nodes[0];
+  }
+}
+
+/**
+ * A helper that populates the clipboard with data of given type. Clears the
+ * clipboard if data is falsy.
+ */
+function setupClipboard(data, type) {
+  if (data) {
+    info("Populating clipboard with " + type + " data.");
+    clipboard.set(data, type);
+  } else {
+    info("Clearing clipboard.");
+    clipboard.set("", "text");
+  }
+}
+
+/**
+ * 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
+
+  evt.initMouseEvent('contextmenu', true, true,
+       element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
+       false, false, false, button, null);
+
+  element.dispatchEvent(evt);
+}
new file mode 100644
--- /dev/null
+++ b/browser/devtools/inspector/test/browser_inspector_menu-02-copy-items.js
@@ -0,0 +1,51 @@
+/* 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 the various copy items in the context menu works correctly.
+
+const TEST_URL = TEST_URL_ROOT + "doc_inspector_menu.html";
+const COPY_ITEMS_TEST_DATA = [
+  {
+    desc: "copy inner html",
+    id: "node-menu-copyinner",
+    selector: "[data-id=\"copy\"]",
+    text: "Paragraph for testing copy",
+  },
+  {
+    desc: "copy outer html",
+    id: "node-menu-copyouter",
+    selector: "[data-id=\"copy\"]",
+    text: "<p data-id=\"copy\">Paragraph for testing copy</p>",
+  },
+  {
+    desc: "copy unique selector",
+    id: "node-menu-copyuniqueselector",
+    selector: "[data-id=\"copy\"]",
+    text: "body > div:nth-child(1) > p:nth-child(2)",
+  },
+  {
+    desc: "copy image data uri",
+    id: "node-menu-copyimagedatauri",
+    selector: "#copyimage",
+    text: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABC" +
+      "AAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg==",
+  },
+];
+
+add_task(function *() {
+  let { inspector } = yield openInspectorForURL(TEST_URL);
+  for (let {desc, id, selector, text} of COPY_ITEMS_TEST_DATA) {
+    info("Testing " + desc);
+    yield selectNode(selector, inspector);
+
+    let item = inspector.panelDoc.getElementById(id);
+    ok(item, "The popup has a " + desc + " menu item.");
+
+    let deferred = promise.defer();
+    waitForClipboard(text, () => item.doCommand(),
+                     deferred.resolve, deferred.reject);
+    yield deferred.promise;
+  }
+});
rename from browser/devtools/inspector/test/browser_inspector_menu-02.js
rename to browser/devtools/inspector/test/browser_inspector_menu-03-paste-items.js
--- a/browser/devtools/inspector/test/browser_inspector_menu-02.js
+++ b/browser/devtools/inspector/test/browser_inspector_menu-03-paste-items.js
@@ -1,100 +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";
 
-// Test context menu functionality:
-// 1) menu items are disabled/enabled depending on the clicked node
-// 2) actions triggered by the items work correctly
-
-///////////////////
-//
-// Whitelisting this test.
-// As part of bug 1077403, the leaking uncaught rejection should be fixed.
-//
-thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: jsterm.focusInput is not a function");
+// Test that different paste items work in the context menu
 
-const MENU_SENSITIVITY_TEST_DATA = [
-  {
-    desc: "doctype node",
-    selector: null,
-    disabled: true,
-  },
-  {
-    desc: "element node",
-    selector: "#sensitivity",
-    disabled: false,
-  },
-  {
-    desc: "document element",
-    selector: "html",
-    disabled: {
-      "node-menu-pastebefore": true,
-      "node-menu-pasteafter": true,
-      "node-menu-pastefirstchild": true,
-      "node-menu-pastelastchild": true,
-    }
-  },
-  {
-    desc: "body",
-    selector: "body",
-    disabled: {
-      "node-menu-pastebefore": true,
-      "node-menu-pasteafter": true,
-    }
-  },
-  {
-    desc: "head",
-    selector: "head",
-    disabled: {
-      "node-menu-pastebefore": true,
-      "node-menu-pasteafter": true,
-    }
-  }
-];
 
-const TEST_URL = TEST_URL_ROOT + "doc_inspector_menu-02.html";
-
-const PASTE_HTML_TEST_SENSITIVITY_DATA = [
-  {
-    desc: "some text",
-    clipboardData: "some text",
-    clipboardDataType: undefined,
-    disabled: false
-  },
-  {
-    desc: "base64 encoded image data uri",
-    clipboardData:
-      "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABC" +
-      "AAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg==",
-    clipboardDataType: undefined,
-    disabled: true
-  },
-  {
-    desc: "html",
-    clipboardData: "<p>some text</p>",
-    clipboardDataType: "html",
-    disabled: false
-  },
-  {
-    desc: "empty string",
-    clipboardData: "",
-    clipboardDataType: undefined,
-    disabled: true
-  },
-  {
-    desc: "whitespace only",
-    clipboardData: " \n\n\t\n\n  \n",
-    clipboardDataType: undefined,
-    disabled: true
-  },
-];
-
+const TEST_URL = TEST_URL_ROOT + "doc_inspector_menu.html";
 const PASTE_ADJACENT_HTML_DATA = [
   {
     desc: "As First Child",
     clipboardData: "2",
     menuId: "node-menu-pastefirstchild",
   },
   {
     desc: "As Last Child",
@@ -115,95 +32,22 @@ const PASTE_ADJACENT_HTML_DATA = [
 
 
 let clipboard = require("sdk/clipboard");
 registerCleanupFunction(() => {
   clipboard = null;
 });
 
 add_task(function* () {
-  let { inspector, toolbox } = yield openInspectorForURL(TEST_URL);
+  let { inspector } = yield openInspectorForURL(TEST_URL);
 
-  yield testMenuItemSensitivity();
-  yield testPasteHTMLMenuItemsSensitivity();
   yield testPasteOuterHTMLMenu();
   yield testPasteInnerHTMLMenu();
   yield testPasteAdjacentHTMLMenu();
 
-  function* testMenuItemSensitivity() {
-    info("Testing sensitivity of menu items for different elements.");
-
-    const MENU_ITEMS = [
-      "node-menu-pasteinnerhtml",
-      "node-menu-pasteouterhtml",
-      "node-menu-pastebefore",
-      "node-menu-pasteafter",
-      "node-menu-pastefirstchild",
-      "node-menu-pastelastchild",
-    ];
-
-    // To ensure clipboard contains something to paste.
-    clipboard.set("<p>test</p>", "html");
-
-    for (let {desc, selector, disabled} of MENU_SENSITIVITY_TEST_DATA) {
-      info("Testing context menu entries for " + desc);
-
-      let front;
-      if (selector) {
-        front = yield getNodeFront(selector, inspector);
-      } else {
-        // Select the docType if no selector is provided
-        let {nodes} = yield inspector.walker.children(inspector.walker.rootNode);
-        front = nodes[0];
-      }
-      yield selectNode(front, inspector);
-
-      contextMenuClick(getContainerForNodeFront(front, inspector).tagLine);
-
-      for (let name of MENU_ITEMS) {
-        let disabledForMenu = typeof disabled === "object" ?
-          disabled[name] : disabled;
-        info(`${name} should be ${disabledForMenu ? "disabled" : "enabled"}  ` +
-          `for ${desc}`);
-        checkMenuItem(name, disabledForMenu);
-      }
-    }
-  }
-
-  function* testPasteHTMLMenuItemsSensitivity() {
-    let menus = [
-      "node-menu-pasteinnerhtml",
-      "node-menu-pasteouterhtml",
-      "node-menu-pastebefore",
-      "node-menu-pasteafter",
-      "node-menu-pastefirstchild",
-      "node-menu-pastelastchild",
-    ];
-
-    info("Checking Paste menu items sensitivity for different types" +
-         "of data");
-
-    let nodeFront = yield getNodeFront("#paste-area", inspector);
-    let markupTagLine = getContainerForNodeFront(nodeFront, inspector).tagLine;
-
-    for (let menuId of menus) {
-      for (let data of PASTE_HTML_TEST_SENSITIVITY_DATA) {
-        let { desc, clipboardData, clipboardDataType, disabled } = data;
-        let menuLabel = getLabelFor("#" + menuId);
-        info(`Checking ${menuLabel} for ${desc}`);
-        clipboard.set(clipboardData, clipboardDataType);
-
-        yield selectNode(nodeFront, inspector);
-
-        contextMenuClick(markupTagLine);
-        checkMenuItem(menuId, disabled);
-      }
-    }
-  }
-
   function* testPasteOuterHTMLMenu() {
     info("Testing that 'Paste Outer HTML' menu item works.");
     clipboard.set("this was pasted (outerHTML)");
     let outerHTMLSelector = "#paste-area h1";
 
     let nodeFront = yield getNodeFront(outerHTMLSelector, inspector);
     yield selectNode(nodeFront, inspector);
 
@@ -251,17 +95,17 @@ add_task(function* () {
 
   function* testPasteAdjacentHTMLMenu() {
     let refSelector = "#paste-area .adjacent .ref";
     let adjacentNode = content.document.querySelector(refSelector).parentNode;
     let nodeFront = yield getNodeFront(refSelector, inspector);
     yield selectNode(nodeFront, inspector);
     let markupTagLine = getContainerForNodeFront(nodeFront, inspector).tagLine;
 
-    for (let { desc, clipboardData, menuId } of PASTE_ADJACENT_HTML_DATA) {
+    for (let { clipboardData, menuId } of PASTE_ADJACENT_HTML_DATA) {
       let menu = inspector.panelDoc.getElementById(menuId);
       info(`Testing ${getLabelFor(menu)} for ${clipboardData}`);
       clipboard.set(clipboardData);
 
       contextMenuClick(markupTagLine);
       let onMutation = inspector.once("markupmutation");
       dispatchCommandEvent(menu);
 
@@ -272,36 +116,16 @@ add_task(function* () {
     ok(adjacentNode.innerHTML.trim() === "1<span class=\"ref\">234</span>" +
       "<span>5</span>", "The Paste as Last Child / as First Child / Before " +
       "/ After worked as expected");
     yield undoChange(inspector);
     ok(adjacentNode.innerHTML.trim() === "1<span class=\"ref\">234</span>",
       "Undo works for paste adjacent HTML");
   }
 
-  function checkMenuItem(elementId, disabled) {
-    if (disabled) {
-      checkDisabled(elementId);
-    } else {
-      checkEnabled(elementId);
-    }
-  }
-
-  function checkEnabled(elementId) {
-    let elt = inspector.panelDoc.getElementById(elementId);
-    ok(!elt.hasAttribute("disabled"),
-      '"' + elt.label + '" context menu option is not disabled');
-  }
-
-  function checkDisabled(elementId) {
-    let elt = inspector.panelDoc.getElementById(elementId);
-    ok(elt.hasAttribute("disabled"),
-      '"' + elt.label + '" context menu option is disabled');
-  }
-
   function dispatchCommandEvent(node) {
     info("Dispatching command event on " + node);
     let commandEvent = document.createEvent("XULCommandEvent");
     commandEvent.initCommandEvent("command", true, true, window, 0, false, false,
                                   false, false, null);
     node.dispatchEvent(commandEvent);
   }
 
rename from browser/devtools/inspector/test/browser_inspector_menu-01.js
rename to browser/devtools/inspector/test/browser_inspector_menu-04-other.js
--- a/browser/devtools/inspector/test/browser_inspector_menu-01.js
+++ b/browser/devtools/inspector/test/browser_inspector_menu-04-other.js
@@ -1,120 +1,24 @@
 /* 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";
 
-///////////////////
-//
-// Whitelisting this test.
-// As part of bug 1077403, the leaking uncaught rejection should be fixed.
-//
-thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: jsterm.focusInput is not a function");
-
-// Test context menu functionality:
-// 1) menu items are disabled/enabled depending on the clicked node
-// 2) actions triggered by the items work correctly
+// Tests for menuitem functionality that doesn't fit into any specific category
 
-const TEST_URL = TEST_URL_ROOT + "doc_inspector_menu-01.html";
-const MENU_SENSITIVITY_TEST_DATA = [
-  {
-    desc: "doctype node",
-    selector: null,
-    disabled: true,
-  },
-  {
-    desc: "element node",
-    selector: "p",
-    disabled: false,
-  }
-];
-
-const COPY_ITEMS_TEST_DATA = [
-  {
-    desc: "copy inner html",
-    id: "node-menu-copyinner",
-    text: "This is some example text",
-  },
-  {
-    desc: "copy outer html",
-    id: "node-menu-copyouter",
-    text: "<p>This is some example text</p>",
-  },
-  {
-    desc: "copy unique selector",
-    id: "node-menu-copyuniqueselector",
-    text: "body > div:nth-child(1) > p:nth-child(2)",
-  },
-];
-
-let clipboard = require("sdk/clipboard");
-registerCleanupFunction(() => {
-  clipboard = null;
-});
+const TEST_URL = TEST_URL_ROOT + "doc_inspector_menu.html";
 
 add_task(function* () {
   let { inspector, toolbox } = yield openInspectorForURL(TEST_URL);
 
-  yield testMenuItemSensitivity();
-  yield testCopyMenuItems();
   yield testShowDOMProperties();
   yield testDeleteNode();
   yield testDeleteRootNode();
 
-  function* testMenuItemSensitivity() {
-    info("Testing sensitivity of menu items for different elements.");
-
-    // The sensibility for paste options are described in browser_inspector_menu-02.js
-    const MENU_ITEMS = [
-      "node-menu-copyinner",
-      "node-menu-copyouter",
-      "node-menu-copyuniqueselector",
-      "node-menu-delete",
-      "node-menu-pseudo-hover",
-      "node-menu-pseudo-active",
-      "node-menu-pseudo-focus"
-    ];
-
-    for (let {desc, selector, disabled} of MENU_SENSITIVITY_TEST_DATA) {
-      info("Testing context menu entries for " + desc);
-
-      let front;
-      if (selector) {
-        front = yield getNodeFront(selector, inspector);
-      } else {
-        // Select the docType if no selector is provided
-        let {nodes} = yield inspector.walker.children(inspector.walker.rootNode);
-        front = nodes[0];
-      }
-      yield selectNode(front, inspector);
-
-      contextMenuClick(getContainerForNodeFront(front, inspector).tagLine);
-
-      for (let name of MENU_ITEMS) {
-        checkMenuItem(name, disabled);
-      }
-    }
-  }
-
-  function* testCopyMenuItems() {
-    info("Testing various copy actions of context menu.");
-    for (let {desc, id, text} of COPY_ITEMS_TEST_DATA) {
-      info("Testing " + desc);
-
-      let item = inspector.panelDoc.getElementById(id);
-      ok(item, "The popup has a " + desc + " menu item.");
-
-      let deferred = promise.defer();
-      waitForClipboard(text, () => item.doCommand(),
-                       deferred.resolve, deferred.reject);
-      yield deferred.promise;
-    }
-  }
-
   function* testShowDOMProperties() {
     info("Testing 'Show DOM Properties' menu item.");
     let showDOMPropertiesNode = inspector.panelDoc.getElementById("node-menu-showdomproperties");
     ok(showDOMPropertiesNode, "the popup menu has a show dom properties item");
 
     let consoleOpened = toolbox.once("webconsole-ready");
 
     info("Triggering 'Show DOM Properties' and waiting for inspector open");
@@ -129,73 +33,41 @@ add_task(function* () {
     ok(webconsoleUI.jsterm.history[0] === 'inspect($0)');
 
     yield toolbox.toggleSplitConsole();
   }
 
   function* testDeleteNode() {
     info("Testing 'Delete Node' menu item for normal elements.");
 
-    yield selectNode("p", inspector);
+    yield selectNode("#delete", inspector);
     let deleteNode = inspector.panelDoc.getElementById("node-menu-delete");
     ok(deleteNode, "the popup menu has a delete menu item");
 
     let updated = inspector.once("inspector-updated");
 
     info("Triggering 'Delete Node' and waiting for inspector to update");
     dispatchCommandEvent(deleteNode);
     yield updated;
 
-    ok(!getNode("p", { expectNoMatch: true }), "Node deleted");
+    ok(!getNode("#delete", { expectNoMatch: true }), "Node deleted");
   }
 
   function* testDeleteRootNode() {
     info("Testing 'Delete Node' menu item does not delete root node.");
-    yield selectNode(inspector.walker.rootNode, inspector);
+    yield selectNode("html", inspector);
 
     let deleteNode = inspector.panelDoc.getElementById("node-menu-delete");
     dispatchCommandEvent(deleteNode);
 
     executeSoon(() => {
       ok(content.document.documentElement, "Document element still alive.");
     });
   }
 
-  function checkMenuItem(elementId, disabled) {
-    if (disabled) {
-      checkDisabled(elementId);
-    } else {
-      checkEnabled(elementId);
-    }
-  }
-
-  function checkEnabled(elementId) {
-    let elt = inspector.panelDoc.getElementById(elementId);
-    ok(!elt.hasAttribute("disabled"),
-      '"' + elt.label + '" context menu option is not disabled');
-  }
-
-  function checkDisabled(elementId) {
-    let elt = inspector.panelDoc.getElementById(elementId);
-    ok(elt.hasAttribute("disabled"),
-      '"' + elt.label + '" context menu option is disabled');
-  }
-
   function dispatchCommandEvent(node) {
     info("Dispatching command event on " + node);
     let commandEvent = document.createEvent("XULCommandEvent");
     commandEvent.initCommandEvent("command", true, true, window, 0, false, false,
                                   false, false, null);
     node.dispatchEvent(commandEvent);
   }
-
-  function contextMenuClick(element) {
-    info("Simulating contextmenu event on " + element);
-    let evt = element.ownerDocument.createEvent('MouseEvents');
-    let button = 2;  // right click
-
-    evt.initMouseEvent('contextmenu', true, true,
-         element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
-         false, false, false, button, null);
-
-    element.dispatchEvent(evt);
-  }
 });
deleted file mode 100644
--- a/browser/devtools/inspector/test/doc_inspector_menu-01.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<head>
-  <title>Inspector Tree Menu Test</title>
-</head>
-<body>
-  <div>
-    <h1>Inspector Tree Menu Test</h1>
-    <p>This is some example text</p>
-  </div>
-</body>
rename from browser/devtools/inspector/test/doc_inspector_menu-02.html
rename to browser/devtools/inspector/test/doc_inspector_menu.html
--- a/browser/devtools/inspector/test/doc_inspector_menu-02.html
+++ b/browser/devtools/inspector/test/doc_inspector_menu.html
@@ -11,11 +11,12 @@
         <p class="inner">Unset</p>
         <p class="adjacent">
           <span class="ref">3</span>
         </p>
       </div>
       <p data-id="copy">Paragraph for testing copy</p>
       <p id="sensitivity">Paragraph for sensitivity</p>
       <p id="delete">This has to be deleted</p>
+      <img id="copyimage" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg==" />
     </div>
   </body>
 </html>