blob: 76c11947fe3fd1c129ce59ce465ba7624e3c10c4 [file] [edit]
<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script src="resources/script-for-breakpoint-actions.js"></script>
<script>
function runBreakpointActions()
{
breakpointActions(42, {x:1, y:2});
}
function test()
{
let suite = InspectorTest.createAsyncSuite("Debugger.BreakpointAction.Log.Object");
suite.addTestCase({
name: "LogObjectAsRichConsoleArgument",
description: "A `${object}` log message should be logged as a rich, inspectable console object instead of the string `[object Object]`.",
async test() {
let objectMessagePromise = new Promise((resolve) => {
let listener = WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, (event) => {
let message = event.data.message;
if (message.parameters && message.parameters.some((parameter) => parameter.type === "object")) {
WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, listener);
resolve(message);
}
});
});
let breakpointPromise = new Promise((resolve) => {
WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.ScriptAdded, (event) => {
let scriptObject = event.data.script;
if (!/script\-for\-breakpoint\-actions\.js$/.test(scriptObject.url))
return;
let location = scriptObject.createSourceCodeLocation(4, 0);
let breakpoint = new WI.JavaScriptBreakpoint(location);
breakpoint.autoContinue = true;
breakpoint.addAction(new WI.BreakpointAction(WI.BreakpointAction.Type.Log, {data: "${b}"}));
WI.debuggerManager.addBreakpoint(breakpoint);
resolve();
});
});
let reloadPromise = InspectorTest.awaitEvent(FrontendTestHarness.Event.TestPageDidLoad);
InspectorTest.reloadPage();
await Promise.all([reloadPromise, breakpointPromise]);
await InspectorTest.evaluateInPage("runBreakpointActions()");
let message = await objectMessagePromise;
InspectorTest.expectEqual(message.parameters.length, 1, "Should log exactly one console argument.");
InspectorTest.expectEqual(message.parameters[0].type, "object", "Logged argument should be a rich object, not a string.");
InspectorTest.expectEqual(message.parameters[0].description, "Object", "Logged argument should describe the original object.");
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Testing that a "Log" breakpoint action logs an object as a rich console argument.</p>
</body>
</html>