diff options
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_webconsole_longstring.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_webconsole_longstring.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_webconsole_longstring.js b/devtools/client/webconsole/test/browser/browser_webconsole_longstring.js new file mode 100644 index 0000000000..9009e86641 --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_webconsole_longstring.js @@ -0,0 +1,49 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Test that very long strings can be expanded and collapsed, and do not hang the browser. + +"use strict"; + +const TEST_URI = + "data:text/html,<!DOCTYPE html><meta charset=utf8>Test LongString hang"; + +const LONGSTRING = `foobar${"a".repeat( + 9000 +)}foobaz${"abbababazomglolztest".repeat(100)}boom!`; + +add_task(async function () { + const hud = await openNewTabAndConsole(TEST_URI); + + info("Log a longString"); + const onMessage = waitForMessageByType( + hud, + LONGSTRING.slice(0, 50), + ".console-api" + ); + SpecialPowers.spawn(gBrowser.selectedBrowser, [LONGSTRING], str => { + content.console.log(str); + }); + + const { node } = await onMessage; + const arrow = node.querySelector(".arrow"); + ok(arrow, "longString expand arrow is shown"); + + info("wait for long string expansion"); + const onLongStringFullTextDisplayed = waitFor(() => + findConsoleAPIMessage(hud, LONGSTRING) + ); + arrow.click(); + await onLongStringFullTextDisplayed; + + ok(true, "The full text of the longString is displayed"); + + info("wait for long string collapse"); + const onLongStringCollapsed = waitFor( + () => !findConsoleAPIMessage(hud, LONGSTRING) + ); + arrow.click(); + await onLongStringCollapsed; + + ok(true, "The longString can be collapsed"); +}); |