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

Side by Side Diff: webkit/glue/devtools/js/tests.js

Issue 149178: DevTools: Console tests. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 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 | Annotate | Revision Log
« no previous file with comments | « webkit/glue/devtools/js/devtools_host_stub.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 5
6 /** 6 /**
7 * @fileoverview This file contains small testing framework along with the 7 * @fileoverview This file contains small testing framework along with the
8 * test suite for the frontend. These tests are a part of the continues build 8 * test suite for the frontend. These tests are a part of the continues build
9 * and are executed by the devtools_sanity_unittest.cc as a part of the 9 * and are executed by the devtools_sanity_unittest.cc as a part of the
10 * Interactive UI Test suite. 10 * Interactive UI Test suite.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 * True assertion tests that value == true. 46 * True assertion tests that value == true.
47 * @param {Object} expected Expected object. 47 * @param {Object} expected Expected object.
48 * @param {Object} value Actual object. 48 * @param {Object} value Actual object.
49 */ 49 */
50 TestSuite.prototype.assertTrue = function(value) { 50 TestSuite.prototype.assertTrue = function(value) {
51 this.assertEquals(true, value); 51 this.assertEquals(true, value);
52 }; 52 };
53 53
54 54
55 /** 55 /**
56 * Contains assertion tests that string contains substring.
57 * @param {string} string Outer.
58 * @param {string} substring Inner.
59 */
60 TestSuite.prototype.assertContains = function(string, substring) {
61 if (string.indexOf(substring) == -1) {
62 this.fail('Expected to: "' + string + '" to contain "' + substring + '"');
63 }
64 };
65
66
67 /**
56 * Runs all global functions starting with 'test' as unit tests. 68 * Runs all global functions starting with 'test' as unit tests.
57 */ 69 */
58 TestSuite.prototype.runAllTests = function() { 70 TestSuite.prototype.runAllTests = function() {
59 // For debugging purposes. 71 // For debugging purposes.
60 for (var name in this) { 72 for (var name in this) {
61 if (name.substring(0, 4) == 'test' && 73 if (name.substring(0, 4) == 'test' &&
62 typeof this[name] == 'function') { 74 typeof this[name] == 'function') {
63 this.runTest(name); 75 this.runTest(name);
64 } 76 }
65 } 77 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 this[testName](controller); 142 this[testName](controller);
131 if (!controller.controlTaken_) { 143 if (!controller.controlTaken_) {
132 controller.reportOk(); 144 controller.reportOk();
133 } 145 }
134 } catch (e) { 146 } catch (e) {
135 controller.reportFailure(e); 147 controller.reportFailure(e);
136 } 148 }
137 }; 149 };
138 150
139 151
152 /**
153 * @param {string} panelName Name of the panel to show.
154 */
155 TestSuite.prototype.showPanel = function(panelName) {
156 // Open Scripts panel.
157 var toolbar = document.getElementById('toolbar');
158 var button = toolbar.getElementsByClassName(panelName)[0];
159 button.click();
160 this.assertEquals(WebInspector.panels[panelName],
161 WebInspector.currentPanel);
162 };
163
140 // UI Tests 164 // UI Tests
141 165
142 166
143 /** 167 /**
144 * Tests that the real injected host is present in the context. 168 * Tests that the real injected host is present in the context.
145 */ 169 */
146 TestSuite.prototype.testHostIsPresent = function() { 170 TestSuite.prototype.testHostIsPresent = function() {
147 var domAgent = devtools.tools.getDomAgent(); 171 var domAgent = devtools.tools.getDomAgent();
148 var doc = domAgent.getDocument(); 172 var doc = domAgent.getDocument();
149 this.assertTrue(typeof DevToolsHost == 'object' && !DevToolsHost.isStub); 173 this.assertTrue(typeof DevToolsHost == 'object' && !DevToolsHost.isStub);
(...skipping 23 matching lines...) Expand all
173 tokens.push(resources[id].lastPathComponent); 197 tokens.push(resources[id].lastPathComponent);
174 } 198 }
175 this.assertEquals('simple_page.html', tokens.join(',')); 199 this.assertEquals('simple_page.html', tokens.join(','));
176 }; 200 };
177 201
178 202
179 /** 203 /**
180 * Tests that resources tab is enabled when corresponding item is selected. 204 * Tests that resources tab is enabled when corresponding item is selected.
181 */ 205 */
182 TestSuite.prototype.testEnableResourcesTab = function(controller) { 206 TestSuite.prototype.testEnableResourcesTab = function(controller) {
183 WebInspector.panels.elements.hide(); 207 this.showPanel('resources');
184 WebInspector.panels.resources.show();
185 208
186 var test = this; 209 var test = this;
187 var oldAddResource = WebInspector.addResource; 210 var oldAddResource = WebInspector.addResource;
188 WebInspector.addResource = function(identifier, payload) { 211 WebInspector.addResource = function(identifier, payload) {
189 WebInspector.addResource = oldAddResource; 212 WebInspector.addResource = oldAddResource;
190 oldAddResource.call(this, identifier, payload); 213 oldAddResource.call(this, identifier, payload);
191 test.assertEquals('simple_page.html', payload.lastPathComponent); 214 test.assertEquals('simple_page.html', payload.lastPathComponent);
192 WebInspector.panels.resources.refresh(); 215 WebInspector.panels.resources.refresh();
193 WebInspector.resources[identifier]._resourcesTreeElement.select(); 216 WebInspector.resources[identifier]._resourcesTreeElement.select();
194 217
195 controller.reportOk(); 218 controller.reportOk();
196 }; 219 };
197 220
198 // Following call should lead to reload that we capture in the 221 // Following call should lead to reload that we capture in the
199 // addResource override. 222 // addResource override.
200 WebInspector.panels.resources._enableResourceTracking(); 223 WebInspector.panels.resources._enableResourceTracking();
201 224
202 // We now have some time to report results to controller. 225 // We now have some time to report results to controller.
203 controller.takeControl(); 226 controller.takeControl();
204 }; 227 };
205 228
206 229
207 /** 230 /**
208 * Test that profiler works. 231 * Test that profiler works.
209 */ 232 */
210 TestSuite.prototype.testProfilerTab = function(controller) { 233 TestSuite.prototype.testProfilerTab = function(controller) {
211 var panel = WebInspector.panels.profiles; 234 this.showPanel('profiles');
212 WebInspector.panels.elements.hide();
213 panel.show();
214 235
215 var oldAddProfile = WebInspector.addProfile; 236 var oldAddProfile = WebInspector.addProfile;
216 WebInspector.addProfile = function(profile) { 237 WebInspector.addProfile = function(profile) {
217 WebInspector.addProfile = oldAddProfile; 238 WebInspector.addProfile = oldAddProfile;
218 oldAddProfile.call(this, profile); 239 oldAddProfile.call(this, profile);
219 240
241 var panel = WebInspector.panels.profiles;
220 panel.showProfile(profile); 242 panel.showProfile(profile);
221 var node = panel.visibleView.profileDataGridTree.children[0]; 243 var node = panel.visibleView.profileDataGridTree.children[0];
222 // Iterate over displayed functions and search for a function 244 // Iterate over displayed functions and search for a function
223 // that is called 'fib' or 'eternal_fib'. If found, it will mean 245 // that is called 'fib' or 'eternal_fib'. If found, it will mean
224 // that we actually have profiled page's code. 246 // that we actually have profiled page's code.
225 while (node) { 247 while (node) {
226 if (node.functionName.indexOf("fib") != -1) { 248 if (node.functionName.indexOf("fib") != -1) {
227 controller.reportOk(); 249 controller.reportOk();
228 } 250 }
229 node = node.traverseNextNode(true, null, true); 251 node = node.traverseNextNode(true, null, true);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 originalParsedScriptSource.apply(this, arguments); 291 originalParsedScriptSource.apply(this, arguments);
270 292
271 if (!WebInspector.panels.scripts.visibleView) { 293 if (!WebInspector.panels.scripts.visibleView) {
272 controller.reportFailure('No visible script view: ' + sourceURL); 294 controller.reportFailure('No visible script view: ' + sourceURL);
273 return; 295 return;
274 } 296 }
275 297
276 if (parsedDebuggerTestJs && parsedDebuggerTestPageHtml) { 298 if (parsedDebuggerTestJs && parsedDebuggerTestPageHtml) {
277 controller.reportOk(); 299 controller.reportOk();
278 } 300 }
301 controller.reportOk();
yurys 2009/07/03 11:07:05 remove this?
279 }; 302 };
280 303
281 // Open Scripts panel. 304 this.showPanel('scripts');
282 var toolbar = document.getElementById('toolbar');
283 var scriptsButton = toolbar.getElementsByClassName('scripts')[0];
284 scriptsButton.click();
285
286 this.assertEquals(WebInspector.panels.scripts, WebInspector.currentPanel);
287 305
288 // Wait until all scripts are added to the debugger. 306 // Wait until all scripts are added to the debugger.
289 controller.takeControl(); 307 controller.takeControl();
290 }; 308 };
291 309
292 310
293 var uiTests = new TestSuite(); 311 TestSuite.ConsoleEnter = {
yurys 2009/07/03 11:07:05 ConsoleEnterEvent would sound better
312 keyIdentifier : 'Enter',
313 preventDefault : function() {},
314 stopPropagation : function() {}
315 };
294 316
295 317
318 /**
319 * Tests console eval.
320 */
321 TestSuite.prototype.testConsoleEval = function(controller) {
322 var test = this;
323 var originalConsoleAddMessage = WebInspector.Console.prototype.addMessage;
324 WebInspector.Console.prototype.addMessage = function(commandResult) {
325 originalConsoleAddMessage.call(this, commandResult);
326 WebInspector.Console.prototype.addMessage = originalConsoleAddMessage;
327 test.assertEquals('123', commandResult.toMessageElement().textContent);
328 controller.reportOk();
329 };
330
331 WebInspector.console.visible = true;
332 WebInspector.console.prompt.text = '123';
333 WebInspector.console.promptElement.handleKeyEvent(TestSuite.ConsoleEnter);
334
335 controller.takeControl();
336 };
337
338
339 /**
340 * Tests console log.
341 */
342 TestSuite.prototype.testConsoleLog = function(controller) {
343 WebInspector.console.visible = true;
344 var messages = WebInspector.console.messages;
345 var index = 0;
346
347 var test = this;
348 var assertNext = function(line, message, opt_level, opt_count, opt_substr) {
349 var elem = messages[index++].toMessageElement();
350 var clazz = elem.getAttribute('class');
351 var expectation = (opt_count || '') + 'console_test_page.html:' +
352 line + message;
353 if (opt_substr) {
354 test.assertContains(elem.textContent, expectation);
355 } else {
356 test.assertEquals(expectation, elem.textContent);
357 }
358 if (opt_level) {
359 test.assertContains(clazz, 'console-' + opt_level + '-level');
360 }
361 };
362
363 assertNext('5', 'log', 'log');
364 assertNext('7', 'debug', 'log');
365 assertNext('9', 'info', 'log');
366 assertNext('11', 'warn', 'warning');
367 assertNext('13', 'error', 'error');
368 assertNext('15', 'Message format number 1, 2 and 3.5');
369 assertNext('17', 'Message format for string');
370 assertNext('19', 'Object Object');
371 assertNext('22', 'repeated', 'log', 5);
372 assertNext('26', 'count: 1');
373 assertNext('26', 'count: 2');
374 assertNext('29', 'group', 'group-title');
375 index++;
376 assertNext('33', 'timer:', 'log', '', true);
377 };
378
379
380 var uiTests = new TestSuite();
296 } 381 }
OLDNEW
« no previous file with comments | « webkit/glue/devtools/js/devtools_host_stub.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698