tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });