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

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

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

Powered by Google App Engine
This is Rietveld 408576698