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

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

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

Powered by Google App Engine
This is Rietveld 408576698