browser_webconsole_longstring.js (1370B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 // Test that very long strings can be expanded and collapsed, and do not hang the browser. 5 6 "use strict"; 7 8 const TEST_URI = 9 "data:text/html,<!DOCTYPE html><meta charset=utf8>Test LongString hang"; 10 11 const LONGSTRING = `foobar${"a".repeat( 12 9000 13 )}foobaz${"abbababazomglolztest".repeat(100)}boom!`; 14 15 add_task(async function () { 16 const hud = await openNewTabAndConsole(TEST_URI); 17 18 info("Log a longString"); 19 const onMessage = waitForMessageByType( 20 hud, 21 LONGSTRING.slice(0, 50), 22 ".console-api" 23 ); 24 SpecialPowers.spawn(gBrowser.selectedBrowser, [LONGSTRING], str => { 25 content.console.log(str); 26 }); 27 28 const { node } = await onMessage; 29 const arrow = node.querySelector(".theme-twisty"); 30 ok(arrow, "longString expand arrow is shown"); 31 32 info("wait for long string expansion"); 33 const onLongStringFullTextDisplayed = waitFor(() => 34 findConsoleAPIMessage(hud, LONGSTRING) 35 ); 36 arrow.click(); 37 await onLongStringFullTextDisplayed; 38 39 ok(true, "The full text of the longString is displayed"); 40 41 info("wait for long string collapse"); 42 const onLongStringCollapsed = waitFor( 43 () => !findConsoleAPIMessage(hud, LONGSTRING) 44 ); 45 arrow.click(); 46 await onLongStringCollapsed; 47 48 ok(true, "The longString can be collapsed"); 49 });