summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/test/mochitest/browser_dbg-paused-overlay-iframe.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg-paused-overlay-iframe.js')
-rw-r--r--devtools/client/debugger/test/mochitest/browser_dbg-paused-overlay-iframe.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg-paused-overlay-iframe.js b/devtools/client/debugger/test/mochitest/browser_dbg-paused-overlay-iframe.js
new file mode 100644
index 0000000000..5f8bcd972c
--- /dev/null
+++ b/devtools/client/debugger/test/mochitest/browser_dbg-paused-overlay-iframe.js
@@ -0,0 +1,76 @@
+/* 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 paused overlay in a remote frame
+
+"use strict";
+
+const TEST_COM_URI = `${URL_ROOT_COM_SSL}examples/doc_dbg-fission-frame-sources.html`;
+
+add_task(async function () {
+ info("Load a test page with a remote frame");
+ // simple1.js is imported by the main page. simple2.js comes from the remote frame.
+ const dbg = await initDebuggerWithAbsoluteURL(
+ TEST_COM_URI,
+ "simple1.js",
+ "simple2.js"
+ );
+ const {
+ selectors: { getSelectedSource },
+ commands,
+ } = dbg;
+
+ info("Add breakpoint within the iframe, in `foo` function");
+ await selectSource(dbg, "simple2.js");
+ await addBreakpoint(dbg, "simple2.js", 5);
+
+ info("Call `foo` in the iframe");
+ SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
+ const iframe = content.document.querySelector("iframe");
+ SpecialPowers.spawn(iframe, [], () => {
+ return content.wrappedJSObject.foo();
+ });
+ });
+ await waitForPaused(dbg);
+ ok(true, "debugger is paused");
+
+ let highlighterTestFront;
+ if (isFissionEnabled() || isEveryFrameTargetEnabled()) {
+ // We need to retrieve the highlighterTestFront for the frame target.
+ const iframeTarget = commands.targetCommand
+ .getAllTargets([commands.targetCommand.TYPES.FRAME])
+ .find(target => target.url.includes("example.org"));
+ highlighterTestFront = await iframeTarget.getFront("highlighterTest");
+ } else {
+ // When fission is disabled, we don't have a dedicated target for the remote frame.
+ // In this case, the overlay is displayed by the top-level target anyway, so we can
+ // get the corresponding highlighter test front.
+ highlighterTestFront = await getHighlighterTestFront(dbg.toolbox);
+ }
+
+ info("Check that the paused overlay is displayed");
+ await waitFor(() => highlighterTestFront.isPausedDebuggerOverlayVisible());
+ ok(true, "Paused debugger overlay is visible");
+
+ ok(
+ getSelectedSource().url.includes("simple2.js"),
+ "Selected source is simple2.js"
+ );
+ assertPausedAtSourceAndLine(dbg, findSource(dbg, "simple2.js").id, 5);
+
+ info("Test clicking the resume button");
+ await highlighterTestFront.clickPausedDebuggerOverlayButton(
+ "paused-dbg-resume-button"
+ );
+
+ await waitForResumed(dbg);
+ ok("The debugger isn't paused after clicking on the resume button");
+
+ await waitFor(async () => {
+ const visible = await highlighterTestFront.isPausedDebuggerOverlayVisible();
+ return !visible;
+ });
+
+ ok(true, "The overlay is now hidden");
+});