summaryrefslogtreecommitdiffstats
path: root/devtools/client/webconsole/test/browser/browser_webconsole_console_group_open_no_scroll.js
blob: c60a7a63038f9a1f62904bbeecdc029da06a9d36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

// Check that opening a group does not scroll the console output.

const TEST_URI = `data:text/html,<!DOCTYPE html><meta charset=utf8><script>
  Array.from({length: 100}, (_, i) => console.log("log-"+i));
  console.groupCollapsed("GROUP");
  console.log("in group");
</script>`;

add_task(async function () {
  const hud = await openNewTabAndConsole(TEST_URI);
  const outputScroller = hud.ui.outputScroller;

  // Let's wait until the first message and the group are displayed.
  await waitFor(() => findConsoleAPIMessage(hud, "log-0"));
  const groupMessage = await waitFor(() => findConsoleAPIMessage(hud, "GROUP"));

  is(hasVerticalOverflow(outputScroller), true, "output node overflows");
  is(
    isScrolledToBottom(outputScroller),
    true,
    "output node is scrolled to the bottom"
  );

  info("Expand the group");
  groupMessage.querySelector(".arrow").click();
  await waitFor(() => findConsoleAPIMessage(hud, "in group"));

  is(hasVerticalOverflow(outputScroller), true, "output node overflows");
  is(
    isScrolledToBottom(outputScroller),
    false,
    "output node isn't scrolled to the bottom anymore"
  );

  info("Scroll to bottom");
  outputScroller.scrollTop = outputScroller.scrollHeight;
  await new Promise(r =>
    window.requestAnimationFrame(() => TestUtils.executeSoon(r))
  );

  is(
    isScrolledToBottom(outputScroller),
    true,
    "output node is scrolled to the bottom"
  );

  info(
    "Check that adding a message on an open group when scrolled to bottom scrolls " +
      "to bottom"
  );
  const onNewMessage = waitForMessageByType(hud, "new-message", ".console-api");
  SpecialPowers.spawn(gBrowser.selectedBrowser, [], function () {
    content.console.group("GROUP-2");
    content.console.log("new-message");
  });
  await onNewMessage;
  is(
    isScrolledToBottom(outputScroller),
    true,
    "output node is scrolled to the bottom after adding message in group"
  );
});