summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/test/browser_inspector_search-09.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/test/browser_inspector_search-09.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_search-09.js b/devtools/client/inspector/test/browser_inspector_search-09.js
new file mode 100644
index 0000000000..f61d1c9213
--- /dev/null
+++ b/devtools/client/inspector/test/browser_inspector_search-09.js
@@ -0,0 +1,112 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+requestLongerTimeout(2);
+
+// Test that searching for XPaths via the search field actually selects the
+// matching nodes.
+
+const TEST_URL = URL_ROOT + "doc_inspector_search.html";
+
+// The various states of the inspector: [key, id, isTextNode, isValid]
+// [
+// what key to press,
+// what id should be selected after the keypress,
+// is the selected node a text node,
+// is the searched text valid selector
+// ]
+const KEY_STATES = [
+ ["/", "b1", false, true], // /
+ ["*", "b1", false, true], // /*
+ ["VK_RETURN", "root", false, true], // /*
+ ["VK_BACK_SPACE", "root", false, true], // /
+ ["/", "root", false, true], // //
+ ["d", "root", false, true], // //d
+ ["i", "root", false, true], // //di
+ ["v", "root", false, true], // //div
+ ["VK_RETURN", "d1", false, true], // //div
+ ["VK_RETURN", "d2", false, true], // //div
+ ["VK_RETURN", "d1", false, true], // //div
+ ["VK_BACK_SPACE", "d1", false, true], // //di
+ ["VK_BACK_SPACE", "d1", false, true], // //d
+ ["VK_BACK_SPACE", "d1", false, true], // //
+ ["s", "d1", false, true], // //s
+ ["p", "d1", false, true], // //sp
+ ["a", "d1", false, true], // //spa
+ ["n", "d1", false, true], // //span
+ ["/", "d1", false, true], // //span/
+ ["t", "d1", false, true], // //span/t
+ ["e", "d1", false, true], // //span/te
+ ["x", "d1", false, true], // //span/tex
+ ["t", "d1", false, true], // //span/text
+ ["(", "d1", false, true], // //span/text(
+ [")", "d1", false, true], // //span/text()
+ ["VK_RETURN", "s1", false, true], // //span/text()
+ ["VK_RETURN", "s2", true, true], // //span/text()
+];
+
+add_task(async function () {
+ const { inspector } = await openInspectorForURL(TEST_URL);
+ const { searchBox } = inspector;
+
+ await selectNode("#b1", inspector);
+ await focusSearchBoxUsingShortcut(inspector.panelWin);
+
+ let index = 0;
+ for (const [key, id, isTextNode, isValid] of KEY_STATES) {
+ info(index + ": Pressing key " + key + " to get id " + id + ".");
+ const onSearchProcessingDone =
+ inspector.searchSuggestions.once("processing-done");
+ const onSearchResult = inspector.search.once("search-result");
+ EventUtils.synthesizeKey(
+ key,
+ { shiftKey: key === "*" },
+ inspector.panelWin
+ );
+
+ if (key === "VK_RETURN") {
+ info("Waiting for " + (isValid ? "NO " : "") + "results");
+ await onSearchResult;
+ }
+
+ info("Waiting for search query to complete");
+ await onSearchProcessingDone;
+
+ if (isTextNode) {
+ info(
+ "Text node of " +
+ inspector.selection.nodeFront.parentNode.id +
+ " is selected with text " +
+ searchBox.value
+ );
+
+ is(
+ inspector.selection.nodeFront.nodeType,
+ Node.TEXT_NODE,
+ "Correct node is selected for state " + index
+ );
+ } else {
+ info(
+ inspector.selection.nodeFront.id +
+ " is selected with text " +
+ searchBox.value
+ );
+
+ const nodeFront = await getNodeFront("#" + id, inspector);
+ is(
+ inspector.selection.nodeFront,
+ nodeFront,
+ "Correct node is selected for state " + index
+ );
+ }
+
+ is(
+ !searchBox.parentNode.classList.contains("devtools-searchbox-no-match"),
+ isValid,
+ "Correct searchbox result state for state " + index
+ );
+
+ index++;
+ }
+});