summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/test/browser_inspector_initialization.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/inspector/test/browser_inspector_initialization.js')
-rw-r--r--devtools/client/inspector/test/browser_inspector_initialization.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_initialization.js b/devtools/client/inspector/test/browser_inspector_initialization.js
new file mode 100644
index 000000000..55db060f3
--- /dev/null
+++ b/devtools/client/inspector/test/browser_inspector_initialization.js
@@ -0,0 +1,112 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* 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/. */
+/* globals getTestActorWithoutToolbox */
+"use strict";
+
+// Tests for different ways to initialize the inspector.
+
+const HTML = `
+ <div id="first" style="margin: 10em; font-size: 14pt;
+ font-family: helvetica, sans-serif; color: gray">
+ <h1>Some header text</h1>
+ <p id="salutation" style="font-size: 12pt">hi.</p>
+ <p id="body" style="font-size: 12pt">I am a test-case. This text exists
+ solely to provide some things to test the inspector initialization.</p>
+ <p>If you are reading this, you should go do something else instead. Maybe
+ read a book. Or better yet, write some test-cases for another bit of code.
+ <span style="font-style: italic">Inspector's!</span>
+ </p>
+ <p id="closing">end transmission</p>
+ </div>
+`;
+
+const TEST_URI = "data:text/html;charset=utf-8," + encodeURI(HTML);
+
+add_task(function* () {
+ let tab = yield addTab(TEST_URI);
+ let testActor = yield getTestActorWithoutToolbox(tab);
+
+ yield testToolboxInitialization(testActor, tab);
+ yield testContextMenuInitialization(testActor);
+ yield testContextMenuInspectorAlreadyOpen(testActor);
+});
+
+function* testToolboxInitialization(testActor, tab) {
+ let target = TargetFactory.forTab(tab);
+
+ info("Opening inspector with gDevTools.");
+ let toolbox = yield gDevTools.showToolbox(target, "inspector");
+ let inspector = toolbox.getCurrentPanel();
+
+ ok(true, "Inspector started, and notification received.");
+ ok(inspector, "Inspector instance is accessible.");
+ ok(inspector.isReady, "Inspector instance is ready.");
+ is(inspector.target.tab, tab, "Valid target.");
+
+ yield selectNode("p", inspector);
+ yield testMarkupView("p", inspector);
+ yield testBreadcrumbs("p", inspector);
+
+ yield testActor.scrollIntoView("span");
+
+ yield selectNode("span", inspector);
+ yield testMarkupView("span", inspector);
+ yield testBreadcrumbs("span", inspector);
+
+ info("Destroying toolbox");
+ let destroyed = toolbox.once("destroyed");
+ toolbox.destroy();
+ yield destroyed;
+
+ ok("true", "'destroyed' notification received.");
+ ok(!gDevTools.getToolbox(target), "Toolbox destroyed.");
+}
+
+function* testContextMenuInitialization(testActor) {
+ info("Opening inspector by clicking on 'Inspect Element' context menu item");
+ yield clickOnInspectMenuItem(testActor, "#salutation");
+
+ info("Checking inspector state.");
+ yield testMarkupView("#salutation");
+ yield testBreadcrumbs("#salutation");
+}
+
+function* testContextMenuInspectorAlreadyOpen(testActor) {
+ info("Changing node by clicking on 'Inspect Element' context menu item");
+
+ let inspector = getActiveInspector();
+ ok(inspector, "Inspector is active");
+
+ yield clickOnInspectMenuItem(testActor, "#closing");
+
+ ok(true, "Inspector was updated when 'Inspect Element' was clicked.");
+ yield testMarkupView("#closing", inspector);
+ yield testBreadcrumbs("#closing", inspector);
+}
+
+function* testMarkupView(selector, inspector) {
+ inspector = inspector || getActiveInspector();
+ let nodeFront = yield getNodeFront(selector, inspector);
+ try {
+ is(inspector.selection.nodeFront, nodeFront,
+ "Right node is selected in the markup view");
+ } catch (ex) {
+ ok(false, "Got exception while resolving selected node of markup view.");
+ console.error(ex);
+ }
+}
+
+function* testBreadcrumbs(selector, inspector) {
+ inspector = inspector || getActiveInspector();
+ let nodeFront = yield getNodeFront(selector, inspector);
+
+ let b = inspector.breadcrumbs;
+ let expectedText = b.prettyPrintNodeAsText(nodeFront);
+ let button = b.container.querySelector("button[checked=true]");
+ ok(button, "A crumbs is checked=true");
+ is(button.getAttribute("title"), expectedText,
+ "Crumb refers to the right node");
+}