diff options
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg-pretty-print-breakpoints.js')
-rw-r--r-- | devtools/client/debugger/test/mochitest/browser_dbg-pretty-print-breakpoints.js | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg-pretty-print-breakpoints.js b/devtools/client/debugger/test/mochitest/browser_dbg-pretty-print-breakpoints.js new file mode 100644 index 0000000000..19f2ef1213 --- /dev/null +++ b/devtools/client/debugger/test/mochitest/browser_dbg-pretty-print-breakpoints.js @@ -0,0 +1,117 @@ +/* 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 that breakpoints set in the pretty printed files display and paused +// correctly. + +"use strict"; + +add_task(async function() { + const dbg = await initDebugger("doc-pretty.html", "pretty.js"); + + await selectSource(dbg, "pretty.js"); + await prettyPrint(dbg); + + await addBreakpoint(dbg, "pretty.js:formatted", 5); + + is(dbg.selectors.getBreakpointCount(), 1, "Only one breakpoint is created"); + + invokeInTab("stuff"); + await waitForPaused(dbg); + + await assertBreakpointsInNonPrettyAndPrettySources(dbg); + + is( + dbg.selectors.getBreakpointCount(), + 1, + "Only one breakpoint still exists after pause " + ); + + await resume(dbg); +}); + +// Tests that breakpoints appear and work when you reload a page +// with pretty-printed files. +add_task(async function() { + const dbg = await initDebugger("doc-pretty.html", "pretty.js"); + + await selectSource(dbg, "pretty.js"); + await prettyPrint(dbg); + + await addBreakpoint(dbg, "pretty.js:formatted", 5); + + info("Check that equivalent breakpoint to pretty.js (generated source)"); + await selectSource(dbg, "pretty.js"); + await assertBreakpoint(dbg, 4); + + await selectSource(dbg, "pretty.js:formatted"); + + is(dbg.selectors.getBreakpointCount(), 1, "Only one breakpoint exists"); + + await reload(dbg, "pretty.js", "pretty.js:formatted"); + + await waitForSelectedSource(dbg, "pretty.js:formatted"); + + invokeInTab("stuff"); + await waitForPaused(dbg); + + await assertBreakpointsInNonPrettyAndPrettySources(dbg); + + is( + dbg.selectors.getBreakpointCount(), + 1, + "Only one breakpoint still exists after reload and pause " + ); +}); + +// Test that breakpoints appear and work when set in the minified source +add_task(async function() { + const dbg = await initDebugger("doc-pretty.html", "pretty.js"); + + await selectSource(dbg, "pretty.js"); + + info("Add breakpoint to pretty.js (generated source)"); + await addBreakpoint(dbg, "pretty.js", 4, 7); + + await prettyPrint(dbg); + + info( + "Check that equivalent breakpoint is added to pretty.js:formatted (original source)" + ); + await selectSource(dbg, "pretty.js:formatted"); + await assertBreakpoint(dbg, 5); + + is(dbg.selectors.getBreakpointCount(), 1, "Only one breakpoint created"); + + await reload(dbg, "pretty.js", "pretty.js:formatted"); + + await waitForSelectedSource(dbg, "pretty.js:formatted"); + + invokeInTab("stuff"); + await waitForPaused(dbg); + + await assertBreakpointsInNonPrettyAndPrettySources(dbg); + + is( + dbg.selectors.getBreakpointCount(), + 1, + "Only one breakpoint still exists after reload and pause " + ); +}); + +async function assertBreakpointsInNonPrettyAndPrettySources(dbg) { + info( + "Asserts breakpoint pause and display on the correct line in the pretty printed source" + ); + const prettyPrintedSource = findSource(dbg, "pretty.js:formatted"); + await assertPausedAtSourceAndLine(dbg, prettyPrintedSource.id, 5); + await assertBreakpoint(dbg, 5); + + await selectSource(dbg, "pretty.js"); + + info("Assert pause and display on the correct line in the minified source"); + const minifiedSource = findSource(dbg, "pretty.js"); + await assertPausedAtSourceAndLine(dbg, minifiedSource.id, 4, 7); + await assertBreakpoint(dbg, 4); +} |