diff options
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_jsterm_inspect_panels.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_jsterm_inspect_panels.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_inspect_panels.js b/devtools/client/webconsole/test/browser/browser_jsterm_inspect_panels.js new file mode 100644 index 0000000000..a3520e05d0 --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_jsterm_inspect_panels.js @@ -0,0 +1,101 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Check that the inspect() jsterm helper function works. + +"use strict"; + +const TEST_URI = + "https://example.com/browser/devtools/client/webconsole/test/browser/" + + "test-simple-function.html"; + +add_task(async function () { + const hud = await openNewTabAndConsole(TEST_URI); + + await testInspectingElement(hud); + await testInspectingFunction(hud); +}); + +async function testInspectingElement(hud) { + info("Test `inspect(el)`"); + execute(hud, "inspect(document.querySelector('p'))"); + await waitForSelectedElementInInspector(hud.toolbox, "p"); + ok(true, "inspected element is now selected in the inspector"); + + info( + "Test that inspect selects the node in the inspector in the split console as well" + ); + const onSplitConsoleReady = hud.toolbox.once("split-console"); + EventUtils.sendKey("ESCAPE", hud.toolbox.win); + await onSplitConsoleReady; + + execute(hud, "inspect(document.querySelector('body'))"); + await waitForSelectedElementInInspector(hud.toolbox, "body"); + ok(true, "the inspected element is selected in the inspector"); +} + +async function testInspectingFunction(hud) { + info("Test `inspect(test)`"); + execute(hud, "inspect(test)"); + await waitFor(expectedSourceSelected("test-simple-function.js", 3)); + ok(true, "inspected function is now selected in the debugger"); + + info("Test `inspect(test_mangled)`"); + execute(hud, "inspect(test_mangled)"); + await waitFor(expectedSourceSelected("test-mangled-function.js", 3, true)); + ok(true, "inspected source-mapped function is now selected in the debugger"); + + info("Test `inspect(test_bound)`"); + execute(hud, "inspect(test_bound)"); + await waitFor(expectedSourceSelected("test-simple-function.js", 7)); + ok(true, "inspected bound target function is now selected in the debugger"); + + function expectedSourceSelected( + sourceFilename, + sourceLine, + isOriginalSource + ) { + return () => { + const dbg = hud.toolbox.getPanel("jsdebugger"); + if (!dbg) { + return false; + } + + const selectedLocation = dbg._selectors.getSelectedLocation( + dbg._getState() + ); + + if (!selectedLocation) { + return false; + } + + if ( + isOriginalSource && + !selectedLocation.sourceId.includes("/originalSource-") + ) { + return false; + } + + return ( + selectedLocation.sourceId.includes(sourceFilename) && + selectedLocation.line == sourceLine + ); + }; + } +} + +async function waitForSelectedElementInInspector(toolbox, displayName) { + return waitFor(() => { + const inspector = toolbox.getPanel("inspector"); + if (!inspector) { + return false; + } + + const selection = inspector.selection; + return ( + selection && + selection.nodeFront && + selection.nodeFront.displayName == displayName + ); + }); +} |