summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/test/browser_inspector_search-selection.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/test/browser_inspector_search-selection.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_search-selection.js b/devtools/client/inspector/test/browser_inspector_search-selection.js
new file mode 100644
index 0000000000..bdc65945af
--- /dev/null
+++ b/devtools/client/inspector/test/browser_inspector_search-selection.js
@@ -0,0 +1,83 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+// Testing navigation between nodes in search results
+
+const TEST_URL = URL_ROOT + "doc_inspector_search.html";
+
+add_task(async function () {
+ const { inspector } = await openInspectorForURL(TEST_URL);
+
+ info("Focus the search box");
+ await focusSearchBoxUsingShortcut(inspector.panelWin);
+
+ info("Enter body > p to search");
+ const searchText = "body > p";
+ // EventUtils.sendString will trigger multiple updates, so wait until the final one.
+ const processingDone = new Promise(resolve => {
+ const off = inspector.searchSuggestions.on("processing-done", data => {
+ if (data.query == searchText) {
+ resolve();
+ off();
+ }
+ });
+ });
+ EventUtils.sendString(searchText, inspector.panelWin);
+
+ info("Wait for search query to complete");
+ await processingDone;
+
+ let msg = "Press enter and expect a new selection";
+ await sendKeyAndCheck(inspector, msg, "VK_RETURN", {}, "#p1");
+
+ msg = "Press enter to cycle through multiple nodes";
+ await sendKeyAndCheck(inspector, msg, "VK_RETURN", {}, "#p2");
+
+ msg = "Press shift-enter to select the previous node";
+ await sendKeyAndCheck(inspector, msg, "VK_RETURN", { shiftKey: true }, "#p1");
+
+ if (AppConstants.platform === "macosx") {
+ msg = "Press meta-g to cycle through multiple nodes";
+ await sendKeyAndCheck(inspector, msg, "VK_G", { metaKey: true }, "#p2");
+
+ msg = "Press shift+meta-g to select the previous node";
+ await sendKeyAndCheck(
+ inspector,
+ msg,
+ "VK_G",
+ { metaKey: true, shiftKey: true },
+ "#p1"
+ );
+ } else {
+ msg = "Press ctrl-g to cycle through multiple nodes";
+ await sendKeyAndCheck(inspector, msg, "VK_G", { ctrlKey: true }, "#p2");
+
+ msg = "Press shift+ctrl-g to select the previous node";
+ await sendKeyAndCheck(
+ inspector,
+ msg,
+ "VK_G",
+ { ctrlKey: true, shiftKey: true },
+ "#p1"
+ );
+ }
+});
+
+const sendKeyAndCheck = async function (
+ inspector,
+ description,
+ key,
+ modifiers,
+ expectedId
+) {
+ info(description);
+ const onSelect = inspector.once("inspector-updated");
+ EventUtils.synthesizeKey(key, modifiers, inspector.panelWin);
+ await onSelect;
+
+ const selectedNode = inspector.selection.nodeFront;
+ info(selectedNode.id + " is selected with text " + inspector.searchBox.value);
+ const targetNode = await getNodeFront(expectedId, inspector);
+ is(selectedNode, targetNode, "Correct node " + expectedId + " is selected");
+};