| <!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> |