| <!doctype html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script> |
| function test() |
| { |
| // Each input is wrapped in the String constructor to force stringification. |
| let testInputs = [ |
| { |
| title: "ArrayKeys", |
| input: "keys([3,4])", |
| }, |
| { |
| title: "ArrayValues", |
| input: "values([3,4])", |
| }, |
| { |
| title: "DollarZero", |
| input: "$0", |
| setup: selectElementForDollarZero, |
| }, |
| { |
| title: "InvalidSelector", |
| input: "$('foo')", |
| setup: listenForConsoleWarning, |
| }, |
| { |
| title: "IdSelector", |
| input: "$('#foo')", |
| }, |
| { |
| title: "IdSelectorWithContext", |
| input: "$('#foo', document.body)", |
| }, |
| { |
| title: "IdSelectorWithInvalidContext", |
| input: "$('#foo', 'non-node')", |
| }, |
| { |
| title: "IdSelectorDynamicContext", |
| input: "$('#foo', $('#bar'))", |
| }, |
| { |
| title: "ElementSelectorAll", |
| input: "$$('p')", |
| }, |
| { |
| title: "ElementSelectorAllWithContext", |
| input: "$$('p', document.body)", |
| }, |
| ]; |
| |
| let suite = InspectorTest.createAsyncSuite("Console.TestCommandLineAPI"); |
| |
| function addAPITestCase({title, input, setup}) { |
| suite.addTestCase({ |
| name: `Evaluate${title}`, |
| setup, |
| test(resolve, reject) { |
| InspectorTest.log(`Input: ${input}`); |
| |
| function callback(result, wasThrown) { |
| if (result) { |
| InspectorTest.log(`Output: ${result.description}`); |
| resolve(); |
| } else |
| reject(); |
| } |
| |
| WI.runtimeManager.evaluateInInspectedWindow(`String(${input})`, {objectGroup: "test", includeCommandLineAPI: true}, callback); |
| } |
| }) |
| } |
| |
| for (let input of testInputs) |
| addAPITestCase(input); |
| |
| suite.runTestCasesAndFinish(); |
| |
| function listenForConsoleWarning(resolve, reject) { |
| // Detect console warning for $('foo'). |
| WI.logManager.singleFireEventListener(WI.LogManager.Event.MessageAdded, (event) => { |
| let message = event.data.message; |
| InspectorTest.assert(message instanceof WI.ConsoleMessage); |
| InspectorTest.log(`CONSOLE: ${message.messageText}`); |
| }); |
| |
| resolve(); |
| } |
| |
| function selectElementForDollarZero(resolve, reject) { |
| WI.domTreeManager.requestDocument((documentNode) => { |
| if (!documentNode) { |
| InspectorTest.log("FAIL: DOM node not found."); |
| return reject(); |
| } |
| |
| // Select div#foo for $0. |
| WI.domTreeManager.querySelector(documentNode.id, "#foo", (contentNodeId) => { |
| if (!contentNodeId) { |
| InspectorTest.log("FAIL: DOM node not found."); |
| return reject(); |
| } |
| |
| DOMAgent.setInspectedNode(contentNodeId); |
| resolve(); |
| }); |
| }); |
| } |
| } |
| </script> |
| </head> |
| <body onload="runTest();"> |
| <p id="foo">Tests that command line api works.</p> |
| <p id="bar"></p> |
| </body> |
| </html> |