summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/test/mochitest/browser_dbg-breakpoints-list.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /devtools/client/debugger/test/mochitest/browser_dbg-breakpoints-list.js
parentInitial commit. (diff)
downloadfirefox-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 'devtools/client/debugger/test/mochitest/browser_dbg-breakpoints-list.js')
-rw-r--r--devtools/client/debugger/test/mochitest/browser_dbg-breakpoints-list.js189
1 files changed, 189 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg-breakpoints-list.js b/devtools/client/debugger/test/mochitest/browser_dbg-breakpoints-list.js
new file mode 100644
index 0000000000..a4373907be
--- /dev/null
+++ b/devtools/client/debugger/test/mochitest/browser_dbg-breakpoints-list.js
@@ -0,0 +1,189 @@
+/* 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/>. */
+
+// Testing displaying breakpoints in the breakpoints list and the tooltip
+// shows the source url.
+
+"use strict";
+
+add_task(async function testBreakpointsListForMultipleTargets() {
+ const dbg = await initDebugger(
+ "doc_dbg-fission-frame-sources.html",
+ "simple1.js",
+ "simple2.js"
+ );
+
+ info("Add breakpoint to the source (simple1.js) in the main thread");
+ await selectSource(dbg, "simple1.js");
+ const source1 = findSource(dbg, "simple1.js");
+ await addBreakpoint(dbg, "simple1.js", 5);
+
+ info("Add breakpoint to the source (simple2.js) in the frame");
+ await selectSource(dbg, "simple2.js");
+ const source2 = findSource(dbg, "simple2.js");
+ await addBreakpoint(dbg, "simple2.js", 3);
+
+ const breakpointHeadings = findAllElements(dbg, "breakpointHeadings");
+ const breakpointItems = findAllElements(dbg, "breakpointItems");
+
+ is(
+ breakpointHeadings.length,
+ 2,
+ "The breakpoint list shows two breakpoints sources"
+ );
+ is(
+ breakpointItems.length,
+ 2,
+ "The breakpoint list shows only two breakpoints"
+ );
+
+ is(
+ breakpointHeadings[0].title,
+ source1.url,
+ "The breakpoint heading tooltip shows the source info for the first breakpoint"
+ );
+ is(
+ breakpointHeadings[0].textContent,
+ "simple1.js",
+ "The info displayed for the breakpoint heading of the 1st breakpoint is correct"
+ );
+ is(
+ breakpointItems[0].textContent,
+ "func();5:18",
+ "The info displayed for the 1st breakpoint is correct"
+ );
+
+ is(
+ breakpointHeadings[1].title,
+ source2.url,
+ "The breakpoint heading tooltip shows the source info for the second breakpoint"
+ );
+ is(
+ breakpointHeadings[1].textContent,
+ "simple2.js",
+ "The info displayed for the breakpoint heading of the 2nd breakpoint is correct"
+ );
+ is(
+ breakpointItems[1].textContent,
+ "return x + y;3:5",
+ "The info displayed for the 2nd breakpoint is correct"
+ );
+
+ await removeBreakpoint(dbg, source1.id, 5);
+ await removeBreakpoint(dbg, source2.id, 3);
+});
+
+add_task(async function testBreakpointsListForOriginalFiles() {
+ const dbg = await initDebugger("doc-sourcemaps.html", "entry.js");
+
+ info("Add breakpoint to the entry.js (original source)");
+ await selectSource(dbg, "entry.js");
+ const source = findSource(dbg, "entry.js");
+ await addBreakpoint(dbg, "entry.js", 5);
+
+ const breakpointHeadings = findAllElements(dbg, "breakpointHeadings");
+ const breakpointItems = findAllElements(dbg, "breakpointItems");
+
+ is(
+ breakpointHeadings.length,
+ 1,
+ "The breakpoint list shows one breakpoints sources"
+ );
+ is(
+ breakpointItems.length,
+ 1,
+ "The breakpoint list shows only one breakpoints"
+ );
+
+ is(
+ breakpointHeadings[0].title,
+ source.url,
+ "The breakpoint heading tooltip shows the source info for the first breakpoint"
+ );
+ is(
+ breakpointHeadings[0].textContent,
+ "entry.js",
+ "The info displayed for the breakpoint heading of the 1st breakpoint is correct"
+ );
+ is(
+ breakpointItems[0].textContent,
+ "output(times2(1));5",
+ "The info displayed for the 1st breakpoint is correct"
+ );
+
+ await removeBreakpoint(dbg, source.id, 5);
+});
+
+add_task(async function testBreakpointsListForIgnoredLines() {
+ const dbg = await initDebugger("doc-sourcemaps.html", "entry.js");
+
+ info("Add breakpoint to the entry.js (original source)");
+ await selectSource(dbg, "entry.js");
+ await addBreakpoint(dbg, "entry.js", 5);
+
+ info("Ignoring line 5 to 6 which has a breakpoint already set");
+ await selectEditorLinesAndOpenContextMenu(dbg, {
+ startLine: 5,
+ endLine: 6,
+ });
+ await selectBlackBoxContextMenuItem(dbg, "blackbox-lines");
+
+ info("Assert the breakpoint on the ignored line");
+ let breakpointItems = findAllElements(dbg, "breakpointItems");
+ is(
+ breakpointItems[0].textContent,
+ "output(times2(1));5",
+ "The info displayed for the 1st breakpoint is correct"
+ );
+ const firstBreakpointCheck = breakpointItems[0].querySelector("input");
+ ok(
+ firstBreakpointCheck.disabled,
+ "The first breakpoint checkbox on an ignored line is disabled"
+ );
+ ok(
+ !firstBreakpointCheck.checked,
+ "The first breakpoint on an ignored line is not checked"
+ );
+
+ info("Ignoring line 8 to 9 which currently has not breakpoint");
+ await selectEditorLinesAndOpenContextMenu(dbg, {
+ startLine: 8,
+ endLine: 9,
+ });
+ await selectBlackBoxContextMenuItem(dbg, "blackbox-lines");
+
+ await addBreakpointViaGutter(dbg, 9);
+
+ breakpointItems = findAllElements(dbg, "breakpointItems");
+ is(
+ breakpointItems[1].textContent,
+ "output(times2(3));9",
+ "The info displayed for the 2nd breakpoint is correct"
+ );
+ const secondBreakpointCheck = breakpointItems[1].querySelector("input");
+ ok(
+ secondBreakpointCheck.disabled,
+ "The second breakpoint checkbox on an ignored line is disabled"
+ );
+ ok(
+ !secondBreakpointCheck.checked,
+ "The second breakpoint on an ignored line is not checked"
+ );
+
+ await clickElement(dbg, "blackbox");
+ await waitForDispatch(dbg.store, "UNBLACKBOX_WHOLE_SOURCES");
+
+ info("Assert that both breakpoints are now enabled");
+ breakpointItems = findAllElements(dbg, "breakpointItems");
+ [...breakpointItems].forEach(breakpointItem => {
+ const check = breakpointItem.querySelector("input");
+ ok(
+ !check.disabled,
+ "The breakpoint checkbox on the unignored line is enabled"
+ );
+ ok(check.checked, "The breakpoint on the unignored line is checked");
+ });
+
+ await dbg.toolbox.closeToolbox();
+});