diff options
Diffstat (limited to '')
-rw-r--r-- | devtools/client/inspector/test/browser_inspector_search-09.js | 112 |
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++; + } +}); |