Index: third_party/WebKit/LayoutTests/http/tests/inspector/devtools-js/console/command-line-api.js |
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/devtools-js/console/command-line-api.js b/third_party/WebKit/LayoutTests/http/tests/inspector/devtools-js/console/command-line-api.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d1ce0590860fa8e191093fe38b281cc9140f6925 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/devtools-js/console/command-line-api.js |
@@ -0,0 +1,58 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+(async function() { |
+ TestRunner.addResult('Tests that command line api works.\n'); |
+ |
+ await TestRunner.loadModule("console_test_runner"); |
+ await TestRunner.loadModule("elements_test_runner"); |
+ await TestRunner.loadPanel("console"); |
caseq
2017/07/12 01:04:33
I wonder whether these need to be sequential. Woul
chenwilliam
2017/07/12 22:02:57
I a/b tested it (ran this test 100 times) and the
|
+ |
+ var expressions = [ |
+ "String($0)", |
+ "$3", |
+ "String(keys([3,4]))", |
+ "String(values([3,4]))", |
+ "String($('#foo'))", |
+ "String($('#foo', document.body))", |
+ "String($('#foo', 'non-node'))", |
+ "String($('#foo', $('#bar')))", |
+ "String($$('p'))", |
+ "String($$('p', document.body))", |
+ "String($('foo'))", |
+ "console.assert(keys(window).indexOf('__commandLineAPI') === -1)" |
+ ]; |
+ |
+ await TestRunner.loadHTML(` |
+ <p id="foo"> |
+ Tests that command line api works. |
+ </p><p id="bar"></p> |
+ `); |
+ |
+ ElementsTestRunner.selectNodeWithId("foo", step1); |
+ |
+ function step1(node) { |
+ var expression = expressions.shift(); |
+ if (!expression) { |
+ step2(); |
+ return; |
+ } |
+ Common.console.log(""); |
+ ConsoleTestRunner.evaluateInConsole(expression, step1); |
caseq
2017/07/12 01:04:33
Can we make it return a promise straight away? Als
chenwilliam
2017/07/12 22:02:58
Adding to @dgozman's comment, the plan is to keep
|
+ } |
+ |
+ function step2() { |
+ function assertNoBoundCommandLineAPI() { |
+ ["__commandLineAPI", "__scopeChainForEval"].forEach(function(name) { |
+ console.assert(!(name in window), "FAIL: Should be no " + name); |
+ }); |
+ } |
+ TestRunner.evaluateInPage(assertNoBoundCommandLineAPI, step3); |
+ } |
+ |
+ function step3() { |
+ ConsoleTestRunner.dumpConsoleMessages(); |
+ TestRunner.completeTest(); |
+ } |
+})(); |