blob: 4238cb2097ad4b230c2dc8e432c28736b4f07eec (
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
68
69
70
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Test that makes sure web console eval works while the js debugger paused the
// page, and while the inspector is active. See bug 886137.
"use strict";
const TEST_URI =
"https://example.com/browser/devtools/client/webconsole/" +
"test/browser/test-eval-in-stackframe.html";
add_task(async function () {
// TODO: Remove this pref change when middleware for terminating requests
// when closing a panel is implemented
await pushPref("devtools.debugger.features.inline-preview", false);
const hud = await openNewTabAndConsole(TEST_URI);
const tab = gBrowser.selectedTab;
info("Switch to the debugger");
await openDebugger();
info("Switch to the inspector");
const toolbox = await gDevTools.showToolboxForTab(tab, {
toolId: "inspector",
});
info("Call firstCall() and wait for the debugger statement to be reached.");
const dbg = createDebuggerContext(toolbox);
await pauseDebugger(dbg);
info("Switch back to the console");
await gDevTools.showToolboxForTab(tab, { toolId: "webconsole" });
info("Test logging and inspecting objects while on a breakpoint.");
const message = await executeAndWaitForResultMessage(
hud,
"fooObj",
'{ testProp2: "testValue2" }'
);
const objectInspectors = [...message.node.querySelectorAll(".tree")];
is(objectInspectors.length, 1, "There should be one object inspector");
info("Expanding the array object inspector");
const [oi] = objectInspectors;
const onOiExpanded = waitFor(() => {
return oi.querySelectorAll(".node").length === 3;
});
oi.querySelector(".arrow").click();
await onOiExpanded;
ok(
oi.querySelector(".arrow").classList.contains("expanded"),
"Object inspector expanded"
);
// The object inspector now looks like:
// Object { testProp2: "testValue2" }
// | testProp2: "testValue2"
// | <prototype>: Object { ... }
const oiNodes = oi.querySelectorAll(".node");
is(oiNodes.length, 3, "There is the expected number of nodes in the tree");
ok(oiNodes[0].textContent.includes(`Object { testProp2: "testValue2" }`));
ok(oiNodes[1].textContent.includes(`testProp2: "testValue2"`));
ok(oiNodes[2].textContent.includes(`<prototype>: Object { \u2026 }`));
});
|