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

Side by Side Diff: third_party/WebKit/LayoutTests/inspector-protocol/resources/inspector-protocol-test.js

Issue 2955943002: DevTools: migrate inspector-protocol/dom tests to a new test runner (Closed)
Patch Set: rebaseline 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 var TestRunner = class { 5 var TestRunner = class {
6 constructor(baseURL, log, completeTest, fetch) { 6 constructor(baseURL, log, completeTest, fetch) {
7 this._dumpInspectorProtocolMessages = false; 7 this._dumpInspectorProtocolMessages = false;
8 this._baseURL = baseURL; 8 this._baseURL = baseURL;
9 this._log = log; 9 this._log = log;
10 this._completeTest = completeTest; 10 this._completeTest = completeTest;
11 this._fetch = fetch; 11 this._fetch = fetch;
12 } 12 }
13 13
14 startDumpingProtocolMessages() { 14 startDumpingProtocolMessages() {
15 this._dumpInspectorProtocolMessages = true; 15 this._dumpInspectorProtocolMessages = true;
16 }; 16 };
17 17
18 completeTest() { 18 completeTest() {
19 this._completeTest.call(null); 19 this._completeTest.call(null);
20 } 20 }
21 21
22 log(text) { 22 log(text) {
23 this._log.call(null, text); 23 this._log.call(null, text);
24 } 24 }
25 25
26 logMessage(originalMessage) { 26 logMessage(originalMessage, title) {
27 var message = JSON.parse(JSON.stringify(originalMessage)); 27 var message = JSON.parse(JSON.stringify(originalMessage));
28 if (message.id) 28 if (message.id)
29 message.id = '<messageId>'; 29 message.id = '<messageId>';
30 const nonStableFields = new Set(['nodeId', 'objectId', 'scriptId', 'timestam p']); 30 const nonStableFields = new Set(['nodeId', 'objectId', 'scriptId', 'timestam p', 'backendNodeId', 'parentId', 'frameId', 'baseURL', 'documentURL']);
31 var objects = [message]; 31 var objects = [message];
32 while (objects.length) { 32 while (objects.length) {
33 var object = objects.shift(); 33 var object = objects.shift();
34 for (var key in object) { 34 for (var key in object) {
35 if (nonStableFields.has(key)) 35 if (nonStableFields.has(key))
36 object[key] = `<${key}>`; 36 object[key] = `<${key}>`;
37 else if (typeof object[key] === 'string' && object[key].match(/\d+:\d+:\ d+:debug/)) 37 else if (typeof object[key] === 'string' && object[key].match(/\d+:\d+:\ d+:debug/))
38 object[key] = object[key].replace(/\d+/, '<scriptId>'); 38 object[key] = object[key].replace(/\d+/, '<scriptId>');
39 else if (typeof object[key] === 'object') 39 else if (typeof object[key] === 'object')
40 objects.push(object[key]); 40 objects.push(object[key]);
41 } 41 }
42 } 42 }
43 this.logObject(message); 43 this.logObject(message, title);
44 return originalMessage; 44 return originalMessage;
45 } 45 }
46 46
47 logObject(object, title) { 47 logObject(object, title) {
48 var lines = []; 48 var lines = [];
49 49
50 function dumpValue(value, prefix, prefixWithName) { 50 function dumpValue(value, prefix, prefixWithName) {
51 if (typeof value === 'object' && value !== null) { 51 if (typeof value === 'object' && value !== null) {
52 if (value instanceof Array) 52 if (value instanceof Array)
53 dumpItems(value, prefix, prefixWithName); 53 dumpItems(value, prefix, prefixWithName);
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 var session = await this.createSession(); 184 var session = await this.createSession();
185 session.protocol.Page.enable(); 185 session.protocol.Page.enable();
186 session.protocol.Page.navigate({url: url}); 186 session.protocol.Page.navigate({url: url});
187 187
188 var callback; 188 var callback;
189 var promise = new Promise(f => callback = f); 189 var promise = new Promise(f => callback = f);
190 session.protocol.Page.onFrameNavigated(message => { 190 session.protocol.Page.onFrameNavigated(message => {
191 if (!message.params.frame.parentId) 191 if (!message.params.frame.parentId)
192 callback(); 192 callback();
193 }); 193 });
194 await promise; 194 await Promise.all([
195 promise,
196 session.protocol.Page.onceLoadEventFired()
197 ]);
195 198
196 await session.disconnect(); 199 await session.disconnect();
197 } 200 }
198 201
199 async loadHTML(html) { 202 async loadHTML(html) {
200 if (DevToolsAPI._sessions.get(this._targetId)) 203 if (DevToolsAPI._sessions.get(this._targetId))
201 this._testRunner.die('Cannot loadHTML with active session', new Error()); 204 this._testRunner.die('Cannot loadHTML with active session', new Error());
202 205
203 html = html.replace(/'/g, "\\'").replace(/\n/g, '\\n'); 206 html = html.replace(/'/g, "\\'").replace(/\n/g, '\\n');
204 var session = await this.createSession(); 207 var session = await this.createSession();
205 await session.protocol.Runtime.evaluate({expression: `document.body.innerHTM L='${html}'`}); 208 await session.protocol.Runtime.evaluate({expression: `document.write('${html }');document.close();`});
206 await session.disconnect(); 209 await session.disconnect();
207 } 210 }
208 }; 211 };
209 212
210 TestRunner.Session = class { 213 TestRunner.Session = class {
211 constructor(page) { 214 constructor(page) {
212 this._testRunner = page._testRunner; 215 this._testRunner = page._testRunner;
213 this._page = page; 216 this._page = page;
214 this._requestId = 0; 217 this._requestId = 0;
215 this._dispatchTable = new Map(); 218 this._dispatchTable = new Map();
(...skipping 13 matching lines...) Expand all
229 232
230 sendCommand(method, params) { 233 sendCommand(method, params) {
231 var requestId = ++this._requestId; 234 var requestId = ++this._requestId;
232 var messageObject = {'id': requestId, 'method': method, 'params': params}; 235 var messageObject = {'id': requestId, 'method': method, 'params': params};
233 if (this._testRunner._dumpInspectorProtocolMessages) 236 if (this._testRunner._dumpInspectorProtocolMessages)
234 this._testRunner.log(`frontend => backend: ${JSON.stringify(messageObject) }`); 237 this._testRunner.log(`frontend => backend: ${JSON.stringify(messageObject) }`);
235 return this.sendRawCommand(requestId, JSON.stringify(messageObject)); 238 return this.sendRawCommand(requestId, JSON.stringify(messageObject));
236 } 239 }
237 240
238 async evaluate(code) { 241 async evaluate(code) {
242 if (typeof code === 'function')
243 code = `(${code.toString()})()`;
239 var response = await this.protocol.Runtime.evaluate({expression: code, retur nByValue: true}); 244 var response = await this.protocol.Runtime.evaluate({expression: code, retur nByValue: true});
240 if (response.error) { 245 if (response.error) {
241 this._testRunner.log(`Error while evaluating '${code}': ${response.error}` ); 246 this._testRunner.log(`Error while evaluating '${code}': ${response.error}` );
242 this._testRunner.completeTest(); 247 this._testRunner.completeTest();
243 } else { 248 } else {
244 return response.result.result.value; 249 return response.result.result.value;
245 } 250 }
246 } 251 }
247 252
248 async evaluateAsync(code) { 253 async evaluateAsync(code) {
254 if (typeof code === 'function')
255 code = `(${code.toString()})()`;
249 var response = await this.protocol.Runtime.evaluate({expression: code, retur nByValue: true, awaitPromise: true}); 256 var response = await this.protocol.Runtime.evaluate({expression: code, retur nByValue: true, awaitPromise: true});
250 if (response.error) { 257 if (response.error) {
251 this._testRunner.log(`Error while evaluating async '${code}': ${response.e rror}`); 258 this._testRunner.log(`Error while evaluating async '${code}': ${response.e rror}`);
252 this._testRunner.completeTest(); 259 this._testRunner.completeTest();
253 } else { 260 } else {
254 return response.result.result.value; 261 return response.result.result.value;
255 } 262 }
256 } 263 }
257 264
258 _dispatchMessage(message) { 265 _dispatchMessage(message) {
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 450
444 window['onerror'] = (message, source, lineno, colno, error) => { 451 window['onerror'] = (message, source, lineno, colno, error) => {
445 DevToolsAPI._log(`${error}\n${error.stack}`); 452 DevToolsAPI._log(`${error}\n${error.stack}`);
446 DevToolsAPI._completeTest(); 453 DevToolsAPI._completeTest();
447 }; 454 };
448 455
449 window.addEventListener('unhandledrejection', e => { 456 window.addEventListener('unhandledrejection', e => {
450 DevToolsAPI._log(`Promise rejection: ${e.reason}\n${e.reason ? e.reason.stack : ''}`); 457 DevToolsAPI._log(`Promise rejection: ${e.reason}\n${e.reason ? e.reason.stack : ''}`);
451 DevToolsAPI._completeTest(); 458 DevToolsAPI._completeTest();
452 }, false); 459 }, false);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698