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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/integration_test_runner/ConsoleTestRunner.js

Issue 2742623002: DevTools: improve test infrastructure w/ devtools driving the test (Closed)
Patch Set: fixup Created 3 years, 9 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
(Empty)
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
3 // found in the LICENSE file.
4
5 /**
6 * @param {boolean} printOriginatingCommand
7 * @param {boolean} dumpClassNames
8 * @param {function(!Element, !SDK.ConsoleMessage):string=} formatter
9 */
10 TestRunner.dumpConsoleMessages = function(printOriginatingCommand, dumpClassName s, formatter) {
11 TestRunner.addResults(TestRunner.dumpConsoleMessagesIntoArray(printOriginating Command, dumpClassNames, formatter));
12 };
13
14 /**
15 * @param {boolean} printOriginatingCommand
16 * @param {boolean} dumpClassNames
17 * @param {function(!Element, !SDK.ConsoleMessage):string=} formatter
18 * @return {!Array<string>}
19 */
20 TestRunner.dumpConsoleMessagesIntoArray = function(printOriginatingCommand, dump ClassNames, formatter) {
21 // Common.settingForTest('messageLevelFilters2').set(SDK.ConsoleMessage.Messag eLevel.Verbose);
22 formatter = formatter || TestRunner.prepareConsoleMessageText;
23 var result = [];
24 TestRunner.disableConsoleViewport();
25 var consoleView = Console.ConsoleView.instance();
26 if (consoleView._needsFullUpdate)
27 consoleView._updateMessageList();
28 var viewMessages = consoleView._visibleViewMessages;
29 for (var i = 0; i < viewMessages.length; ++i) {
30 var uiMessage = viewMessages[i];
31 var message = uiMessage.consoleMessage();
32 var element = uiMessage.element();
33
34 if (dumpClassNames) {
35 var classNames = [];
36 for (var node = element.firstChild; node; node = node.traverseNextNode(ele ment)) {
37 if (node.nodeType === Node.ELEMENT_NODE && node.className) {
38 classNames.push(node.className.replace('platform-linux', 'platform-*')
39 .replace('platform-mac', 'platform-*')
40 .replace('platform-windows', 'platform-*'));
41 }
42 }
43 }
44
45 if (TestRunner.dumpConsoleTableMessage(uiMessage, false, result)) {
46 if (dumpClassNames)
47 result.push(classNames.join(' > '));
48 } else {
49 var messageText = formatter(element, message);
50 messageText = messageText.replace(/VM\d+/g, 'VM');
51 result.push(messageText + (dumpClassNames ? ' ' + classNames.join(' > ') : ''));
52 }
53
54 if (printOriginatingCommand && uiMessage.consoleMessage().originatingMessage ())
55 result.push('Originating from: ' + uiMessage.consoleMessage().originatingM essage().messageText);
56 }
57 return result;
58 };
59
60 /**
61 * @param {!Element} messageElement
62 * @param {!SDK.ConsoleMessage} consoleMessage
63 * @return {string}
64 */
65 TestRunner.prepareConsoleMessageText = function(messageElement, consoleMessage) {
66 var messageText = messageElement.deepTextContent().replace(/\u200b/g, '');
67 // Replace scriptIds with generic scriptId string to avoid flakiness.
68 messageText = messageText.replace(/VM\d+/g, 'VM');
69 // Remove line and column of evaluate method.
70 messageText = messageText.replace(/(at eval \(eval at evaluate) \(:\d+:\d+\)/, '$1');
71
72 if (messageText.startsWith('Navigated to')) {
73 var fileName = messageText.split(' ').pop().split('/').pop();
74 messageText = 'Navigated to ' + fileName;
75 }
76 // The message might be extremely long in case of dumping stack overflow messa ge.
77 messageText = messageText.substring(0, 1024);
78 return messageText;
79 };
80
81 /**
82 * @param {!Console.ConsoleViewMessage} viewMessage
83 * @param {boolean} forceInvalidate
84 * @param {!Array<string>} results
85 * @return {boolean}
86 */
87 TestRunner.dumpConsoleTableMessage = function(viewMessage, forceInvalidate, resu lts) {
88 if (forceInvalidate)
89 Console.ConsoleView.instance()._viewport.invalidate();
90 var table = viewMessage.element();
91 var headers = table.querySelectorAll('th > div:first-child');
92 if (!headers.length)
93 return false;
94
95 var headerLine = '';
96 for (var i = 0; i < headers.length; i++)
97 headerLine += headers[i].textContent + ' | ';
98
99 addResult('HEADER ' + headerLine);
100
101 var rows = table.querySelectorAll('.data-container tr');
102
103 for (var i = 0; i < rows.length; i++) {
104 var row = rows[i];
105 var rowLine = '';
106 var items = row.querySelectorAll('td > span');
107 for (var j = 0; j < items.length; j++)
108 rowLine += items[j].textContent + ' | ';
109
110 if (rowLine.trim())
111 addResult('ROW ' + rowLine);
112 }
113
114 /**
115 * @param {string} x
116 */
117 function addResult(x) {
118 if (results)
119 results.push(x);
120 else
121 TestRunner.addResult(x);
122 }
123
124 return true;
125 };
126
127 TestRunner.disableConsoleViewport = function() {
128 TestRunner.fixConsoleViewportDimensions(600, 2000);
129 };
130
131 /**
132 * @param {number} width
133 * @param {number} height
134 */
135 TestRunner.fixConsoleViewportDimensions = function(width, height) {
136 var viewport = Console.ConsoleView.instance()._viewport;
137 viewport.element.style.width = width + 'px';
138 viewport.element.style.height = height + 'px';
139 viewport.element.style.position = 'absolute';
140 viewport.invalidate();
141 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698