diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /devtools/client/inspector/test/browser_inspector_breadcrumbs.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | devtools/client/inspector/test/browser_inspector_breadcrumbs.js | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_breadcrumbs.js b/devtools/client/inspector/test/browser_inspector_breadcrumbs.js new file mode 100644 index 0000000000..01d53820ac --- /dev/null +++ b/devtools/client/inspector/test/browser_inspector_breadcrumbs.js @@ -0,0 +1,191 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +// Test that the breadcrumbs widget content is correct. + +const TEST_URI = URL_ROOT + "doc_inspector_breadcrumbs.html"; +const NODES = [ + { + selector: "#i1111", + ids: "i1 i11 i111 i1111", + nodeName: "div", + title: "div#i1111", + }, + { selector: "#i22", ids: "i2 i22", nodeName: "div", title: "div#i22" }, + { + selector: "#i2111", + ids: "i2 i21 i211 i2111", + nodeName: "div", + title: "div#i2111", + }, + { + selector: "#i21", + ids: "i2 i21 i211 i2111", + nodeName: "div", + title: "div#i21", + }, + { + selector: "#i22211", + ids: "i2 i22 i222 i2221 i22211", + nodeName: "div", + title: "div#i22211", + }, + { + selector: "#i22", + ids: "i2 i22 i222 i2221 i22211", + nodeName: "div", + title: "div#i22", + }, + { selector: "#i3", ids: "i3", nodeName: "article", title: "article#i3" }, + { + selector: "clipPath", + ids: "vector clip", + nodeName: "clipPath", + title: "clipPath#clip", + }, +]; + +add_task(async function () { + const { inspector } = await openInspectorForURL(TEST_URI); + const breadcrumbs = inspector.panelDoc.getElementById( + "inspector-breadcrumbs" + ); + const container = breadcrumbs.querySelector(".html-arrowscrollbox-inner"); + + for (const node of NODES) { + info("Testing node " + node.selector); + + info("Selecting node and waiting for breadcrumbs to update"); + const breadcrumbsUpdated = inspector.once("breadcrumbs-updated"); + await selectNode(node.selector, inspector); + await breadcrumbsUpdated; + + info("Performing checks for node " + node.selector); + const buttonsLabelIds = node.ids.split(" "); + + // html > body > … + is( + container.childNodes.length, + buttonsLabelIds.length + 2, + "Node " + node.selector + ": Items count" + ); + + for (let i = 2; i < container.childNodes.length; i++) { + const expectedId = "#" + buttonsLabelIds[i - 2]; + const button = container.childNodes[i]; + const labelId = button.querySelector(".breadcrumbs-widget-item-id"); + is( + labelId.textContent, + expectedId, + "Node " + node.selector + ": button " + i + " matches" + ); + } + + const checkedButton = container.querySelector("button[checked]"); + const labelId = checkedButton.querySelector(".breadcrumbs-widget-item-id"); + const id = inspector.selection.nodeFront.id; + is( + labelId.textContent, + "#" + id, + "Node " + node.selector + ": selection matches" + ); + + const labelTag = checkedButton.querySelector( + ".breadcrumbs-widget-item-tag" + ); + is( + labelTag.textContent, + node.nodeName, + "Node " + node.selector + " has the expected tag name" + ); + + is( + checkedButton.getAttribute("title"), + node.title, + "Node " + node.selector + " has the expected tooltip" + ); + } + + await testPseudoElements(inspector, container); + await testComments(inspector, container); +}); + +async function testPseudoElements(inspector, container) { + info("Checking for pseudo elements"); + + const pseudoParent = await getNodeFront("#pseudo-container", inspector); + const children = await inspector.walker.children(pseudoParent); + is(children.nodes.length, 2, "Pseudo children returned from walker"); + + const beforeElement = children.nodes[0]; + let breadcrumbsUpdated = inspector.once("breadcrumbs-updated"); + await selectNode(beforeElement, inspector); + await breadcrumbsUpdated; + is( + container.childNodes[3].textContent, + "::before", + "::before shows up in breadcrumb" + ); + + const afterElement = children.nodes[1]; + breadcrumbsUpdated = inspector.once("breadcrumbs-updated"); + await selectNode(afterElement, inspector); + await breadcrumbsUpdated; + is( + container.childNodes[3].textContent, + "::after", + "::before shows up in breadcrumb" + ); +} + +async function testComments(inspector, container) { + info("Checking for comment elements"); + + const breadcrumbs = inspector.breadcrumbs; + const checkedButtonIndex = 2; + const button = container.childNodes[checkedButtonIndex]; + + let onBreadcrumbsUpdated = inspector.once("breadcrumbs-updated"); + button.click(); + await onBreadcrumbsUpdated; + + is(breadcrumbs.currentIndex, checkedButtonIndex, "New button is selected"); + ok( + breadcrumbs.outer.hasAttribute("aria-activedescendant"), + "Active descendant must be set" + ); + + const comment = [...inspector.markup._containers].find( + ([node]) => node.nodeType === Node.COMMENT_NODE + )[0]; + + let onInspectorUpdated = inspector.once("inspector-updated"); + inspector.selection.setNodeFront(comment); + await onInspectorUpdated; + + is( + breadcrumbs.currentIndex, + -1, + "When comment is selected no breadcrumb should be checked" + ); + ok( + !breadcrumbs.outer.hasAttribute("aria-activedescendant"), + "Active descendant must not be set" + ); + + onInspectorUpdated = inspector.once("inspector-updated"); + onBreadcrumbsUpdated = inspector.once("breadcrumbs-updated"); + button.click(); + await Promise.all([onInspectorUpdated, onBreadcrumbsUpdated]); + + is( + breadcrumbs.currentIndex, + checkedButtonIndex, + "Same button is selected again" + ); + ok( + breadcrumbs.outer.hasAttribute("aria-activedescendant"), + "Active descendant must be set again" + ); +} |