summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/markup/test/browser_markup_pagesize_01.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/markup/test/browser_markup_pagesize_01.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/devtools/client/inspector/markup/test/browser_markup_pagesize_01.js b/devtools/client/inspector/markup/test/browser_markup_pagesize_01.js
new file mode 100644
index 0000000000..1700c9a433
--- /dev/null
+++ b/devtools/client/inspector/markup/test/browser_markup_pagesize_01.js
@@ -0,0 +1,91 @@
+/* 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.
+
+Services.prefs.setIntPref("devtools.markup.pagesize", 5);
+
+const TEST_URL = URL_ROOT + "doc_markup_pagesize_01.html";
+const TEST_DATA = [
+ {
+ desc: "Select the last item",
+ selector: "#z",
+ expected: "*more*vwxyz",
+ },
+ {
+ desc: "Select the first item",
+ selector: "#a",
+ expected: "abcde*more*",
+ },
+ {
+ desc: "Select the last item",
+ selector: "#z",
+ expected: "*more*vwxyz",
+ },
+ {
+ desc: "Select an already-visible item",
+ selector: "#v",
+ // Because "v" was already visible, we shouldn't have loaded
+ // a different page.
+ expected: "*more*vwxyz",
+ },
+ {
+ desc: "Verify childrenDirty reloads the page",
+ selector: "#w",
+ forceReload: true,
+ // But now that we don't already have a loaded page, selecting
+ // w should center around w.
+ expected: "*more*uvwxy*more*",
+ },
+];
+
+add_task(async function () {
+ const { inspector } = await openInspectorForURL(TEST_URL);
+
+ info("Start iterating through the test data");
+ for (const step of TEST_DATA) {
+ info("Start test: " + step.desc);
+
+ if (step.forceReload) {
+ await forceReload(inspector);
+ }
+ info("Selecting the node that corresponds to " + step.selector);
+ await selectNode(step.selector, inspector);
+
+ info("Checking that the right nodes are shwon");
+ await assertChildren(step.expected, inspector);
+ }
+
+ info("Checking that clicking the more button loads everything");
+ await clickShowMoreNodes(inspector);
+ await inspector.markup._waitForChildren();
+ await assertChildren("abcdefghijklmnopqrstuvwxyz", inspector);
+});
+
+async function assertChildren(expected, inspector) {
+ const container = await getContainerForSelector("body", inspector);
+ let found = "";
+ for (const child of container.children.children) {
+ if (child.classList.contains("more-nodes")) {
+ found += "*more*";
+ } else {
+ found += child.container.node.getAttribute("id");
+ }
+ }
+ is(found, expected, "Got the expected children.");
+}
+
+async function forceReload(inspector) {
+ const container = await getContainerForSelector("body", inspector);
+ container.childrenDirty = true;
+}
+
+async function clickShowMoreNodes(inspector) {
+ const container = await getContainerForSelector("body", inspector);
+ const button = container.elt.querySelector("button");
+ const win = button.ownerDocument.defaultView;
+ EventUtils.sendMouseEvent({ type: "click" }, button, win);
+}