1 var initialize_ConsoleTest = function() {
4 InspectorTest.showConsolePanel = function()
6 WebInspector.inspectorView.showPanel("console");
9 InspectorTest.prepareConsoleMessageText = function(messageElement, consoleMessage)
11 var messageText = messageElement.textContent.replace(/\u200b/g, "");
12 // Replace scriptIds with generic scriptId string to avoid flakiness.
13 messageText = messageText.replace(/\bVM\d+/g, "VM");
14 // Strip out InjectedScript from stack traces to avoid rebaselining each time InjectedScriptSource is edited.
15 messageText = messageText.replace(/InjectedScript[\.a-zA-Z_]+ VM:\d+/g, "");
16 // Strip out InjectedScript line numbers from console message anchor.
17 var functionName = consoleMessage && consoleMessage.stackTrace && consoleMessage.stackTrace[0] && consoleMessage.stackTrace[0].functionName || "";
18 if (functionName.indexOf("InjectedScript") !== -1)
19 messageText = messageText.replace(/\bVM:\d+/, ""); // Only first replace.
20 // The message might be extremely long in case of dumping stack overflow message.
21 messageText = messageText.substring(0, 1024);
25 InspectorTest.disableConsoleViewport = function()
27 InspectorTest.fixConsoleViewportDimensions(600, 2000);
30 InspectorTest.fixConsoleViewportDimensions = function(width, height)
32 var viewport = WebInspector.ConsolePanel._view()._viewport;
33 viewport.element.style.width = width + "px";
34 viewport.element.style.height = height + "px";
35 viewport.element.style.position = "absolute";
36 viewport.invalidate();
39 InspectorTest.dumpConsoleMessages = function(printOriginatingCommand, dumpClassNames, formatter)
41 WebInspector.inspectorView.panel("console");
42 formatter = formatter || InspectorTest.prepareConsoleMessageText;
44 InspectorTest.disableConsoleViewport();
45 var viewMessages = WebInspector.ConsolePanel._view()._visibleViewMessages;
46 for (var i = 0; i < viewMessages.length; ++i) {
47 var uiMessage = viewMessages[i];
48 var message = uiMessage.consoleMessage();
49 var element = uiMessage.contentElement();
53 for (var node = element.firstChild; node; node = node.traverseNextNode(element)) {
54 if (node.nodeType === Node.ELEMENT_NODE && node.className)
55 classNames.push(node.className);
59 if (InspectorTest.dumpConsoleTableMessage(uiMessage, false)) {
61 InspectorTest.addResult(classNames.join(" > "));
63 var messageText = formatter(element, message);
64 InspectorTest.addResult(messageText + (dumpClassNames ? " " + classNames.join(" > ") : ""));
67 if (printOriginatingCommand && uiMessage.consoleMessage().originatingMessage())
68 InspectorTest.addResult("Originating from: " + uiMessage.consoleMessage().originatingMessage().messageText);
73 InspectorTest.dumpConsoleTableMessage = function(viewMessage, forceInvalidate)
76 WebInspector.ConsolePanel._view()._viewport.invalidate();
77 var table = viewMessage.contentElement();
78 var headers = table.querySelectorAll("th div");
83 for (var i = 0; i < headers.length; i++)
84 headerLine += headers[i].textContent + " | ";
86 InspectorTest.addResult("HEADER " + headerLine);
88 var rows = table.querySelectorAll(".data-container tr");
90 for (var i = 0; i < rows.length; i++) {
93 var items = row.querySelectorAll("td > span");
94 for (var j = 0; j < items.length; j++)
95 rowLine += items[j].textContent + " | ";
98 InspectorTest.addResult("ROW " + rowLine);
103 InspectorTest.dumpConsoleMessagesWithStyles = function(sortMessages)
105 WebInspector.inspectorView.panel("console");
107 var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
108 for (var i = 0; i < messageViews.length; ++i) {
109 var element = messageViews[i].contentElement();
110 var messageText = InspectorTest.prepareConsoleMessageText(element)
111 InspectorTest.addResult(messageText);
112 var spans = element.querySelectorAll(".console-message-text > span > span");
113 for (var j = 0; j < spans.length; j++)
114 InspectorTest.addResult("Styled text #" + j + ": " + (spans[j].style.cssText || "NO STYLES DEFINED"));
118 InspectorTest.dumpConsoleMessagesWithClasses = function(sortMessages) {
119 WebInspector.inspectorView.panel("console");
121 var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
122 for (var i = 0; i < messageViews.length; ++i) {
123 var element = messageViews[i].contentElement();
124 var messageText = InspectorTest.prepareConsoleMessageText(element);
125 result.push(messageText + " " + element.getAttribute("class"));
129 for (var i = 0; i < result.length; ++i)
130 InspectorTest.addResult(result[i]);
133 InspectorTest.expandConsoleMessages = function(callback)
135 WebInspector.inspectorView.panel("console");
136 var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
137 for (var i = 0; i < messageViews.length; ++i) {
138 var message = messageViews[i].consoleMessage();
139 var element = messageViews[i].contentElement();
142 if (node.treeElementForTest)
143 node.treeElementForTest.expand();
145 message.section = node._section;
146 node._section.expanded = true;
148 node = node.traverseNextNode(element);
152 InspectorTest.runAfterPendingDispatches(callback);
155 InspectorTest.waitForRemoteObjectsConsoleMessages = function(callback)
157 var messages = WebInspector.ConsolePanel._view()._visibleViewMessages;
158 for (var i = 0; i < messages.length; ++i)
159 messages[i].toMessageElement();
160 InspectorTest.runAfterPendingDispatches(callback);
163 InspectorTest.checkConsoleMessagesDontHaveParameters = function()
165 WebInspector.inspectorView.panel("console");
166 var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
167 for (var i = 0; i < messageViews.length; ++i) {
168 var m = messageViews[i].consoleMessage();
169 InspectorTest.addResult("Message[" + i + "]:");
170 InspectorTest.addResult("Message: " + WebInspector.displayNameForURL(m.url) + ":" + m.line + " " + m.message);
171 if ("_parameters" in m) {
173 InspectorTest.addResult("FAILED: message parameters list is not empty: " + m.parameters);
175 InspectorTest.addResult("SUCCESS: message parameters list is empty. ");
177 InspectorTest.addResult("FAILED: didn't find _parameters field in the message.");
182 InspectorTest.waitUntilMessageReceived = function(callback)
184 InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", callback, false);
187 InspectorTest.waitUntilNthMessageReceived = function(count, callback)
192 InspectorTest.safeWrap(callback)();
194 InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", override, false);
196 InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", override, false);
199 InspectorTest.changeExecutionContext = function(namePrefix)
201 WebInspector.inspectorView.panel("console");
202 var selector = WebInspector.ConsolePanel._view()._executionContextSelector._selectElement;
203 var option = selector.firstChild;
205 if (option.textContent && option.textContent.startsWith(namePrefix))
207 option = option.nextSibling;
210 InspectorTest.addResult("FAILED: context with prefix: " + namePrefix + " not found in the context list");
213 option.selected = true;
214 WebInspector.ConsolePanel._view()._executionContextChanged();