summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/test/mochitest/browser_dbg-search-file-paused.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg-search-file-paused.js')
-rw-r--r--devtools/client/debugger/test/mochitest/browser_dbg-search-file-paused.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg-search-file-paused.js b/devtools/client/debugger/test/mochitest/browser_dbg-search-file-paused.js
new file mode 100644
index 0000000000..54a493fc2d
--- /dev/null
+++ b/devtools/client/debugger/test/mochitest/browser_dbg-search-file-paused.js
@@ -0,0 +1,71 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
+
+// Tests the search bar correctly responds to queries, enter, shift enter
+
+"use strict";
+
+add_task(async function () {
+ const dbg = await initDebugger(
+ "doc-scripts.html",
+ "simple1.js",
+ "simple2.js"
+ );
+
+ info("Add a breakpoint, wait for pause");
+ const source = findSource(dbg, "simple2.js");
+ await selectSource(dbg, source);
+ await addBreakpoint(dbg, source, 5);
+ invokeInTab("main");
+ await waitForPaused(dbg);
+
+ info("Starting a search for 'bar'");
+ const cm = getCM(dbg);
+ pressKey(dbg, "fileSearch");
+ is(dbg.selectors.getActiveSearch(), "file");
+ const el = getFocusedEl(dbg);
+ type(dbg, "bar");
+ await waitForSearchState(dbg);
+
+ info("Ensuring 'bar' matches are highlighted");
+ pressKey(dbg, "Enter");
+ is(cm.state.search.posFrom.line, 1);
+ pressKey(dbg, "Enter");
+ is(cm.state.search.posFrom.line, 4);
+
+ info("Switching files via frame click");
+ const frames = findAllElements(dbg, "frames");
+ pressMouseDown(dbg, frames[1]);
+
+ // Ensure that the debug line is in view, and not the first "bar" instance,
+ // which the user would have to scroll down for
+ const { top } = cm.getScrollInfo();
+ is(top, 0, "First search term is not in view");
+
+ // Change the search term and go back to the first source in stack
+ info("Switching to paused file via frame click");
+ pressKey(dbg, "fileSearch");
+ el.value = "";
+ type(dbg, "func");
+ await waitForSearchState(dbg);
+ pressMouseDown(dbg, frames[0]);
+ await waitFor(() => cm.state.search.query === "func");
+
+ // Ensure there is a match for the new term
+ pressKey(dbg, "Enter");
+ await waitFor(() => cm.state.search.posFrom.line === 0);
+ is(cm.state.search.posFrom.line, 0);
+ pressKey(dbg, "Enter");
+ await waitFor(() => cm.state.search.posFrom.line === 1);
+ is(cm.state.search.posFrom.line, 1);
+});
+
+function getFocusedEl(dbg) {
+ const doc = dbg.win.document;
+ return doc.activeElement;
+}
+
+function pressMouseDown(dbg, node) {
+ EventUtils.sendMouseEvent({ type: "mousedown" }, node, dbg.win);
+}