Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(629)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/test_runner/TestRunner.js

Issue 2975523002: DevTools: add console test helpers to new test runner & migrate a console test (Closed)
Patch Set: type Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /* eslint-disable no-console */ 5 /* eslint-disable no-console */
6 6
7 /** @type {!{logToStderr: function(), notifyDone: function()}|undefined} */ 7 /** @type {!{logToStderr: function(), notifyDone: function()}|undefined} */
8 self.testRunner; 8 self.testRunner;
9 9
10 TestRunner.executeTestScript = function() { 10 TestRunner.executeTestScript = function() {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 if (!(testPromise instanceof Promise)) 84 if (!(testPromise instanceof Promise))
85 testPromise = Promise.resolve(); 85 testPromise = Promise.resolve();
86 testPromise.then(nextTest); 86 testPromise.then(nextTest);
87 } 87 }
88 }; 88 };
89 89
90 /** 90 /**
91 * @param {!Object} receiver 91 * @param {!Object} receiver
92 * @param {string} methodName 92 * @param {string} methodName
93 * @param {!Function} override 93 * @param {!Function} override
94 * @param {boolean} opt_sticky 94 * @param {boolean=} opt_sticky
95 */ 95 */
96 TestRunner.addSniffer = function(receiver, methodName, override, opt_sticky) { 96 TestRunner.addSniffer = function(receiver, methodName, override, opt_sticky) {
97 override = TestRunner.safeWrap(override); 97 override = TestRunner.safeWrap(override);
98 98
99 var original = receiver[methodName]; 99 var original = receiver[methodName];
100 if (typeof original !== 'function') 100 if (typeof original !== 'function')
101 throw new Error('Cannot find method to override: ' + methodName); 101 throw new Error('Cannot find method to override: ' + methodName);
102 102
103 receiver[methodName] = function(var_args) { 103 receiver[methodName] = function(var_args) {
104 try { 104 try {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 bubbles: true, 180 bubbles: true,
181 cancelable: true, 181 cancelable: true,
182 ctrlKey: !!ctrlKey, 182 ctrlKey: !!ctrlKey,
183 altKey: !!altKey, 183 altKey: !!altKey,
184 shiftKey: !!shiftKey, 184 shiftKey: !!shiftKey,
185 metaKey: !!metaKey 185 metaKey: !!metaKey
186 }); 186 });
187 }; 187 };
188 188
189 /** 189 /**
190 * @param {!Function} func 190 * @param {!Function=} func
191 * @param {!Function=} onexception 191 * @param {!Function=} onexception
192 * @return {!Function} 192 * @return {!Function}
193 */ 193 */
194 TestRunner.safeWrap = function(func, onexception) { 194 TestRunner.safeWrap = function(func, onexception) {
195 /** 195 /**
196 * @this {*} 196 * @this {*}
197 */ 197 */
198 function result() { 198 function result() {
199 if (!func) 199 if (!func)
200 return; 200 return;
201 var wrapThis = this; 201 var wrapThis = this;
202 try { 202 try {
203 return func.apply(wrapThis, arguments); 203 return func.apply(wrapThis, arguments);
204 } catch (e) { 204 } catch (e) {
205 TestRunner.addResult('Exception while running: ' + func + '\n' + (e.stack || e)); 205 TestRunner.addResult('Exception while running: ' + func + '\n' + (e.stack || e));
206 if (onexception) 206 if (onexception)
207 TestRunner.safeWrap(onexception)(); 207 TestRunner.safeWrap(onexception)();
208 else 208 else
209 TestRunner.completeTest(); 209 TestRunner.completeTest();
210 } 210 }
211 } 211 }
212 return result; 212 return result;
213 }; 213 };
214 214
215 /** 215 /**
216 * @param {!Element} node
217 * @return {string}
218 */
219 TestRunner.textContentWithLineBreaks = function(node) {
220 function padding(currentNode) {
221 var result = 0;
222 while (currentNode && currentNode !== node) {
223 if (currentNode.nodeName === 'OL' &&
224 !(currentNode.classList && currentNode.classList.contains('object-prop erties-section')))
225 ++result;
226 currentNode = currentNode.parentNode;
227 }
228 return Array(result * 4 + 1).join(' ');
229 }
230
231 var buffer = '';
232 var currentNode = node;
233 var ignoreFirst = false;
234 while (currentNode.traverseNextNode(node)) {
235 currentNode = currentNode.traverseNextNode(node);
236 if (currentNode.nodeType === Node.TEXT_NODE) {
237 buffer += currentNode.nodeValue;
238 } else if (currentNode.nodeName === 'LI' || currentNode.nodeName === 'TR') {
239 if (!ignoreFirst)
240 buffer += '\n' + padding(currentNode);
241 else
242 ignoreFirst = false;
243 } else if (currentNode.nodeName === 'STYLE') {
244 currentNode = currentNode.traverseNextNode(node);
245 continue;
246 } else if (currentNode.classList && currentNode.classList.contains('object-p roperties-section')) {
247 ignoreFirst = true;
248 }
249 }
250 return buffer;
251 };
252
253 /**
216 * @param {!Function} testFunction 254 * @param {!Function} testFunction
217 * @return {!Function} 255 * @return {!Function}
218 */ 256 */
219 function debugTest(testFunction) { 257 function debugTest(testFunction) {
220 self.test = testFunction; 258 self.test = testFunction;
221 TestRunner.addResult = console.log; 259 TestRunner.addResult = console.log;
222 TestRunner.completeTest = () => console.log('Test completed'); 260 TestRunner.completeTest = () => console.log('Test completed');
223 return () => {}; 261 return () => {};
224 } 262 }
225 263
226 (function() { 264 (function() {
227 /** 265 /**
228 * @param {string|!Event} message 266 * @param {string|!Event} message
229 * @param {string} source 267 * @param {string} source
230 * @param {number} lineno 268 * @param {number} lineno
231 * @param {number} colno 269 * @param {number} colno
232 * @param {!Error} error 270 * @param {!Error} error
233 */ 271 */
234 function completeTestOnError(message, source, lineno, colno, error) { 272 function completeTestOnError(message, source, lineno, colno, error) {
235 TestRunner.addResult('TEST ENDED IN ERROR: ' + error.stack); 273 TestRunner.addResult('TEST ENDED IN ERROR: ' + error.stack);
236 TestRunner.completeTest(); 274 TestRunner.completeTest();
237 } 275 }
238 276
239 self['onerror'] = completeTestOnError; 277 self['onerror'] = completeTestOnError;
240 })(); 278 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698