blob: 6c8abdb8c1b897fdfc2cecb8e05c2ac39114bf1e [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script src="../debugger/resources/log-active-stack-trace.js"></script>
<script src="resources/dom-breakpoint-utilities.js"></script>
<script>
function test()
{
let suite = InspectorTest.createAsyncSuite("DOMBreakpoint");
suite.addTestCase({
name: "DOMBreakpoint.Basic",
description: "Check that breakpoint is in a valid initial state.",
async test() {
let node = await InspectorTest.DOMBreakpoint.awaitQuerySelector("#basic-test");
let breakpoint = await InspectorTest.DOMBreakpoint.createBreakpoint(node, WI.DOMBreakpoint.Type.SubtreeModified);
InspectorTest.expectFalse(breakpoint.disabled, "Breakpoint should not be disabled.");
InspectorTest.expectEqual(breakpoint.domNode, node, "Breakpoint should have node identifier.");
InspectorTest.expectEqual(breakpoint.url, WI.networkManager.mainFrame.url, "Breakpoint URL should match document URL.");
},
teardown: InspectorTest.DOMBreakpoint.teardown,
});
suite.addTestCase({
name: "DOMBreakpoint.RemoveAllBreakpointsForNode",
description: "Check that debugger does not pause for removed breakpoints on node.",
async test() {
const types = Object.values(WI.DOMBreakpoint.Type);
let node = await InspectorTest.DOMBreakpoint.awaitQuerySelector("#remove-all-breakpoints-for-node-test");
let breakpointsBefore = await Promise.all(types.map((type) => InspectorTest.DOMBreakpoint.createBreakpoint(node, type)));
InspectorTest.expectEqual(breakpointsBefore.length, types.length, `Should have ${types.length} breakpoints.`);
InspectorTest.log("Removing all breakpoints for #multiple-breakpoints-test...");
WI.domDebuggerManager.removeDOMBreakpointsForNode(node);
let breakpointsAfter = WI.domDebuggerManager.domBreakpointsForNode(node);
InspectorTest.expectEqual(breakpointsAfter.length, 0, "Should remove all breakpoints.");
},
teardown: InspectorTest.DOMBreakpoint.teardown,
});
suite.addTestCase({
name: "DOMBreakpoint.SetBreakpointWithInvalidNodeId",
description: "Check that setting a breakpoint for a nonexistant node returns an error.",
async test() {
InspectorTest.log("Setting breakpoint...");
await InspectorTest.expectException(async () => {
await DOMDebuggerAgent.setDOMBreakpoint(0, WI.DOMBreakpoint.Type.SubtreeModified);
});
},
});
suite.addTestCase({
name: "DOMBreakpoint.SetBreakpointWithInvalidType",
description: "Check that setting a breakpoint with an invalid type returns an error.",
async test() {
let node = await InspectorTest.DOMBreakpoint.awaitQuerySelector("body");
InspectorTest.log("Setting breakpoint...");
await InspectorTest.expectException(async () => {
await DOMDebuggerAgent.setDOMBreakpoint(node.id, "custom-breakpoint-type");
});
},
});
suite.addTestCase({
name: "DOMBreakpoint.RemoveBreakpointWithInvalidNodeId",
description: "Check that removing a breakpoint for a nonexistant node returns an error.",
async test() {
InspectorTest.log("Removing breakpoint...");
await InspectorTest.expectException(async () => {
await DOMDebuggerAgent.removeDOMBreakpoint(0, WI.DOMBreakpoint.Type.SubtreeModified);
});
},
});
suite.addTestCase({
name: "DOMBreakpoint.RemoveBreakpointWithInvalidType",
description: "Check that removing a breakpoint with an invalid type returns an error.",
async test() {
let node = await InspectorTest.DOMBreakpoint.awaitQuerySelector("body");
InspectorTest.log("Removing breakpoint...");
await InspectorTest.expectException(async () => {
await DOMDebuggerAgent.removeDOMBreakpoint(node.id, "custom-breakpoint-type");
});
},
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Tests for DOM breakpoints.</p>
<div id="test-container" style="display: none">
<div id="basic-test"></div>
<div id="remove-all-breakpoints-for-node-test"></div>
</div>
</body>
</html>