| OLD | NEW |
| 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 22 matching lines...) Expand all Loading... |
| 33 } else { | 33 } else { |
| 34 throw message; | 34 throw message; |
| 35 } | 35 } |
| 36 }; | 36 }; |
| 37 | 37 |
| 38 | 38 |
| 39 /** | 39 /** |
| 40 * Equals assertion tests that expected == actual. | 40 * Equals assertion tests that expected == actual. |
| 41 * @param {Object} expected Expected object. | 41 * @param {Object} expected Expected object. |
| 42 * @param {Object} actual Actual object. | 42 * @param {Object} actual Actual object. |
| 43 * @param {string} opt_message User message to print if the test fails. |
| 43 */ | 44 */ |
| 44 TestSuite.prototype.assertEquals = function(expected, actual) { | 45 TestSuite.prototype.assertEquals = function(expected, actual, opt_message) { |
| 45 if (expected != actual) { | 46 if (expected != actual) { |
| 46 this.fail('Expected: "' + expected + '", but was "' + actual + '"'); | 47 var message = 'Expected: "' + expected + '", but was "' + actual + '"'; |
| 48 if (opt_message) { |
| 49 message = opt_message + '(' + message + ')'; |
| 50 } |
| 51 this.fail(message); |
| 47 } | 52 } |
| 48 }; | 53 }; |
| 49 | 54 |
| 50 | 55 |
| 51 /** | 56 /** |
| 52 * True assertion tests that value == true. | 57 * True assertion tests that value == true. |
| 53 * @param {Object} expected Expected object. | |
| 54 * @param {Object} value Actual object. | 58 * @param {Object} value Actual object. |
| 59 * @param {string} opt_message User message to print if the test fails. |
| 55 */ | 60 */ |
| 56 TestSuite.prototype.assertTrue = function(value) { | 61 TestSuite.prototype.assertTrue = function(value, opt_message) { |
| 57 this.assertEquals(true, value); | 62 this.assertEquals(true, value, opt_message); |
| 58 }; | 63 }; |
| 59 | 64 |
| 60 | 65 |
| 61 /** | 66 /** |
| 62 * Contains assertion tests that string contains substring. | 67 * Contains assertion tests that string contains substring. |
| 63 * @param {string} string Outer. | 68 * @param {string} string Outer. |
| 64 * @param {string} substring Inner. | 69 * @param {string} substring Inner. |
| 65 */ | 70 */ |
| 66 TestSuite.prototype.assertContains = function(string, substring) { | 71 TestSuite.prototype.assertContains = function(string, substring) { |
| 67 if (string.indexOf(substring) == -1) { | 72 if (string.indexOf(substring) == -1) { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 */ | 140 */ |
| 136 TestSuite.prototype.showPanel = function(panelName) { | 141 TestSuite.prototype.showPanel = function(panelName) { |
| 137 // Open Scripts panel. | 142 // Open Scripts panel. |
| 138 var toolbar = document.getElementById('toolbar'); | 143 var toolbar = document.getElementById('toolbar'); |
| 139 var button = toolbar.getElementsByClassName(panelName)[0]; | 144 var button = toolbar.getElementsByClassName(panelName)[0]; |
| 140 button.click(); | 145 button.click(); |
| 141 this.assertEquals(WebInspector.panels[panelName], | 146 this.assertEquals(WebInspector.panels[panelName], |
| 142 WebInspector.currentPanel); | 147 WebInspector.currentPanel); |
| 143 }; | 148 }; |
| 144 | 149 |
| 150 |
| 151 /** |
| 152 * Overrides the method with specified name until it's called first time. |
| 153 * @param {Object} receiver An object whose method to override. |
| 154 * @param {string} methodName Name of the method to override. |
| 155 * @param {Function} override A function that should be called right after the |
| 156 * overriden method returns. |
| 157 * @param {boolean} opt_sticky Whether restore original method after first run |
| 158 * or not. |
| 159 */ |
| 160 TestSuite.prototype.addSniffer = function(receiver, methodName, override, |
| 161 opt_sticky) { |
| 162 var orig = receiver[methodName]; |
| 163 if (typeof orig != 'function') { |
| 164 this.fail('Cannot find method to override: ' + methodName); |
| 165 } |
| 166 var test = this; |
| 167 receiver[methodName] = function(var_args) { |
| 168 try { |
| 169 var result = orig.apply(this, arguments); |
| 170 } finally { |
| 171 if (!opt_sticky) { |
| 172 receiver[methodName] = orig; |
| 173 } |
| 174 } |
| 175 // In case of exception the override won't be called. |
| 176 try { |
| 177 override.apply(this, arguments); |
| 178 } catch (e) { |
| 179 test.fail('Exception in overriden method "' + methodName + '": ' + e); |
| 180 } |
| 181 return result; |
| 182 }; |
| 183 }; |
| 184 |
| 185 |
| 145 // UI Tests | 186 // UI Tests |
| 146 | 187 |
| 147 | 188 |
| 148 /** | 189 /** |
| 149 * Tests that the real injected host is present in the context. | 190 * Tests that the real injected host is present in the context. |
| 150 */ | 191 */ |
| 151 TestSuite.prototype.testHostIsPresent = function() { | 192 TestSuite.prototype.testHostIsPresent = function() { |
| 152 var domAgent = devtools.tools.getDomAgent(); | 193 var domAgent = devtools.tools.getDomAgent(); |
| 153 var doc = domAgent.getDocument(); | 194 var doc = domAgent.getDocument(); |
| 154 this.assertTrue(typeof DevToolsHost == 'object' && !DevToolsHost.isStub); | 195 this.assertTrue(typeof DevToolsHost == 'object' && !DevToolsHost.isStub); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 181 }; | 222 }; |
| 182 | 223 |
| 183 | 224 |
| 184 /** | 225 /** |
| 185 * Tests that resources tab is enabled when corresponding item is selected. | 226 * Tests that resources tab is enabled when corresponding item is selected. |
| 186 */ | 227 */ |
| 187 TestSuite.prototype.testEnableResourcesTab = function() { | 228 TestSuite.prototype.testEnableResourcesTab = function() { |
| 188 this.showPanel('resources'); | 229 this.showPanel('resources'); |
| 189 | 230 |
| 190 var test = this; | 231 var test = this; |
| 191 var oldAddResource = WebInspector.addResource; | 232 this.addSniffer(WebInspector, 'addResource', |
| 192 WebInspector.addResource = function(identifier, payload) { | 233 function(identifier, payload) { |
| 193 WebInspector.addResource = oldAddResource; | 234 test.assertEquals('simple_page.html', payload.lastPathComponent); |
| 194 oldAddResource.call(this, identifier, payload); | 235 WebInspector.panels.resources.refresh(); |
| 195 test.assertEquals('simple_page.html', payload.lastPathComponent); | 236 WebInspector.resources[identifier]._resourcesTreeElement.select(); |
| 196 WebInspector.panels.resources.refresh(); | |
| 197 WebInspector.resources[identifier]._resourcesTreeElement.select(); | |
| 198 | 237 |
| 199 test.releaseControl(); | 238 test.releaseControl(); |
| 200 }; | 239 }); |
| 201 | 240 |
| 202 // Following call should lead to reload that we capture in the | 241 // Following call should lead to reload that we capture in the |
| 203 // addResource override. | 242 // addResource override. |
| 204 WebInspector.panels.resources._enableResourceTracking(); | 243 WebInspector.panels.resources._enableResourceTracking(); |
| 205 | 244 |
| 206 // We now have some time to report results to controller. | 245 // We now have some time to report results to controller. |
| 207 this.takeControl(); | 246 this.takeControl(); |
| 208 }; | 247 }; |
| 209 | 248 |
| 210 | 249 |
| 211 /** | 250 /** |
| 212 * Tests resource headers. | 251 * Tests resource headers. |
| 213 */ | 252 */ |
| 214 TestSuite.prototype.testResourceHeaders = function() { | 253 TestSuite.prototype.testResourceHeaders = function() { |
| 215 this.showPanel('resources'); | 254 this.showPanel('resources'); |
| 216 | 255 |
| 217 var test = this; | 256 var test = this; |
| 218 var oldAddResource = WebInspector.addResource; | |
| 219 var oldUpdateResource = WebInspector.updateResource; | |
| 220 | 257 |
| 221 var requestOk = false; | 258 var requestOk = false; |
| 222 var responseOk = false; | 259 var responseOk = false; |
| 223 var timingOk = false; | 260 var timingOk = false; |
| 224 | 261 |
| 225 WebInspector.addResource = function(identifier, payload) { | 262 this.addSniffer(WebInspector, 'addResource', |
| 226 oldAddResource.call(this, identifier, payload); | 263 function(identifier, payload) { |
| 227 var resource = this.resources[identifier]; | 264 var resource = this.resources[identifier]; |
| 228 if (resource.mainResource) { | 265 if (resource.mainResource) { |
| 229 // We are only interested in secondary resources in this test. | 266 // We are only interested in secondary resources in this test. |
| 230 return; | 267 return; |
| 231 } | 268 } |
| 232 | 269 |
| 233 var requestHeaders = JSON.stringify(resource.requestHeaders); | 270 var requestHeaders = JSON.stringify(resource.requestHeaders); |
| 234 test.assertContains(requestHeaders, 'Accept'); | 271 test.assertContains(requestHeaders, 'Accept'); |
| 235 requestOk = true; | 272 requestOk = true; |
| 236 }; | 273 }, true); |
| 237 | 274 |
| 238 WebInspector.updateResource = function(identifier, payload) { | 275 this.addSniffer(WebInspector, 'updateResource', |
| 239 oldUpdateResource.call(this, identifier, payload); | 276 function(identifier, payload) { |
| 240 var resource = this.resources[identifier]; | 277 var resource = this.resources[identifier]; |
| 241 if (resource.mainResource) { | 278 if (resource.mainResource) { |
| 242 // We are only interested in secondary resources in this test. | 279 // We are only interested in secondary resources in this test. |
| 243 return; | 280 return; |
| 244 } | 281 } |
| 245 | 282 |
| 246 if (payload.didResponseChange) { | 283 if (payload.didResponseChange) { |
| 247 var responseHeaders = JSON.stringify(resource.responseHeaders); | 284 var responseHeaders = JSON.stringify(resource.responseHeaders); |
| 248 test.assertContains(responseHeaders, 'Content-type'); | 285 test.assertContains(responseHeaders, 'Content-type'); |
| 249 test.assertContains(responseHeaders, 'Content-Length'); | 286 test.assertContains(responseHeaders, 'Content-Length'); |
| 250 test.assertTrue(typeof resource.responseReceivedTime != 'undefnied'); | 287 test.assertTrue(typeof resource.responseReceivedTime != 'undefnied'); |
| 251 responseOk = true; | 288 responseOk = true; |
| 252 } | 289 } |
| 253 | 290 |
| 254 if (payload.didTimingChange) { | 291 if (payload.didTimingChange) { |
| 255 test.assertTrue(typeof resource.startTime != 'undefnied'); | 292 test.assertTrue(typeof resource.startTime != 'undefnied'); |
| 256 timingOk = true; | 293 timingOk = true; |
| 257 } | 294 } |
| 258 | 295 |
| 259 if (payload.didCompletionChange) { | 296 if (payload.didCompletionChange) { |
| 260 test.assertTrue(requestOk); | 297 test.assertTrue(requestOk); |
| 261 test.assertTrue(responseOk); | 298 test.assertTrue(responseOk); |
| 262 test.assertTrue(timingOk); | 299 test.assertTrue(timingOk); |
| 263 test.assertTrue(typeof resource.endTime != 'undefnied'); | 300 test.assertTrue(typeof resource.endTime != 'undefnied'); |
| 264 test.releaseControl(); | 301 test.releaseControl(); |
| 265 } | 302 } |
| 266 }; | 303 }, true); |
| 267 | 304 |
| 268 WebInspector.panels.resources._enableResourceTracking(); | 305 WebInspector.panels.resources._enableResourceTracking(); |
| 269 this.takeControl(); | 306 this.takeControl(); |
| 270 }; | 307 }; |
| 271 | 308 |
| 272 | 309 |
| 273 /** | 310 /** |
| 274 * Test that profiler works. | 311 * Test that profiler works. |
| 275 */ | 312 */ |
| 276 TestSuite.prototype.testProfilerTab = function() { | 313 TestSuite.prototype.testProfilerTab = function() { |
| 277 this.showPanel('profiles'); | 314 this.showPanel('profiles'); |
| 278 | 315 |
| 279 var test = this; | 316 var test = this; |
| 280 var oldAddProfile = WebInspector.addProfile; | 317 this.addSniffer(WebInspector, 'addProfile', |
| 281 WebInspector.addProfile = function(profile) { | 318 function(profile) { |
| 282 WebInspector.addProfile = oldAddProfile; | 319 var panel = WebInspector.panels.profiles; |
| 283 oldAddProfile.call(this, profile); | 320 panel.showProfile(profile); |
| 321 var node = panel.visibleView.profileDataGridTree.children[0]; |
| 322 // Iterate over displayed functions and search for a function |
| 323 // that is called 'fib' or 'eternal_fib'. If found, it will mean |
| 324 // that we actually have profiled page's code. |
| 325 while (node) { |
| 326 if (node.functionName.indexOf("fib") != -1) { |
| 327 test.releaseControl(); |
| 328 } |
| 329 node = node.traverseNextNode(true, null, true); |
| 330 } |
| 284 | 331 |
| 285 var panel = WebInspector.panels.profiles; | 332 test.fail(); |
| 286 panel.showProfile(profile); | 333 }); |
| 287 var node = panel.visibleView.profileDataGridTree.children[0]; | |
| 288 // Iterate over displayed functions and search for a function | |
| 289 // that is called 'fib' or 'eternal_fib'. If found, it will mean | |
| 290 // that we actually have profiled page's code. | |
| 291 while (node) { | |
| 292 if (node.functionName.indexOf("fib") != -1) { | |
| 293 test.releaseControl(); | |
| 294 } | |
| 295 node = node.traverseNextNode(true, null, true); | |
| 296 } | |
| 297 | |
| 298 test.fail(); | |
| 299 }; | |
| 300 | 334 |
| 301 InspectorController.startProfiling(); | 335 InspectorController.startProfiling(); |
| 302 window.setTimeout('InspectorController.stopProfiling();', 1000); | 336 window.setTimeout('InspectorController.stopProfiling();', 1000); |
| 303 this.takeControl(); | 337 this.takeControl(); |
| 304 }; | 338 }; |
| 305 | 339 |
| 306 | 340 |
| 307 /** | 341 /** |
| 308 * Tests that scripts tab can be open and populated with inspected scripts. | 342 * Tests that scripts tab can be open and populated with inspected scripts. |
| 309 */ | 343 */ |
| 310 TestSuite.prototype.testShowScriptsTab = function() { | 344 TestSuite.prototype.testShowScriptsTab = function() { |
| 311 var parsedDebuggerTestPageHtml = false; | 345 var parsedDebuggerTestPageHtml = false; |
| 312 var parsedDebuggerTestJs = false; | 346 var parsedDebuggerTestJs = false; |
| 313 | 347 |
| 314 // Intercept parsedScriptSource calls to check that all expected scripts are | 348 // Intercept parsedScriptSource calls to check that all expected scripts are |
| 315 // added to the debugger. | 349 // added to the debugger. |
| 316 var test = this; | 350 var test = this; |
| 317 var originalParsedScriptSource = WebInspector.parsedScriptSource; | 351 this.addSniffer(WebInspector, 'parsedScriptSource', |
| 318 WebInspector.parsedScriptSource = function(sourceID, sourceURL, source, | 352 function(sourceID, sourceURL, source, startingLine) { |
| 319 startingLine) { | 353 if (sourceURL.search(/debugger_test_page.html$/) != -1) { |
| 320 if (sourceURL.search(/debugger_test_page.html$/) != -1) { | 354 if (parsedDebuggerTestPageHtml) { |
| 321 if (parsedDebuggerTestPageHtml) { | 355 test.fail('Unexpected parse event: ' + sourceURL); |
| 322 test.fail('Unexpected parse event: ' + sourceURL); | 356 } |
| 323 } | 357 parsedDebuggerTestPageHtml = true; |
| 324 parsedDebuggerTestPageHtml = true; | 358 } else if (sourceURL.search(/debugger_test.js$/) != -1) { |
| 325 } else if (sourceURL.search(/debugger_test.js$/) != -1) { | 359 if (parsedDebuggerTestJs) { |
| 326 if (parsedDebuggerTestJs) { | 360 test.fail('Unexpected parse event: ' + sourceURL); |
| 327 test.fail('Unexpected parse event: ' + sourceURL); | 361 } |
| 328 } | 362 parsedDebuggerTestJs = true; |
| 329 parsedDebuggerTestJs = true; | 363 } else { |
| 330 } else { | 364 test.fail('Unexpected script URL: ' + sourceURL); |
| 331 test.fail('Unexpected script URL: ' + sourceURL); | 365 } |
| 332 } | |
| 333 originalParsedScriptSource.apply(this, arguments); | |
| 334 | 366 |
| 335 if (!WebInspector.panels.scripts.visibleView) { | 367 if (!WebInspector.panels.scripts.visibleView) { |
| 336 test.fail('No visible script view: ' + sourceURL); | 368 test.fail('No visible script view: ' + sourceURL); |
| 337 } | 369 } |
| 338 | 370 |
| 339 if (parsedDebuggerTestJs && parsedDebuggerTestPageHtml) { | 371 if (parsedDebuggerTestJs && parsedDebuggerTestPageHtml) { |
| 340 test.releaseControl(); | 372 test.releaseControl(); |
| 341 } | 373 } |
| 342 }; | 374 }, true /* sticky */); |
| 343 | 375 |
| 344 this.showPanel('scripts'); | 376 this.showPanel('scripts'); |
| 345 | 377 |
| 346 // Wait until all scripts are added to the debugger. | 378 // Wait until all scripts are added to the debugger. |
| 347 this.takeControl(); | 379 this.takeControl(); |
| 348 }; | 380 }; |
| 349 | 381 |
| 350 | 382 |
| 351 /** | 383 /** |
| 384 * Tests that a breakpoint can be set. |
| 385 */ |
| 386 TestSuite.prototype.testSetBreakpoint = function() { |
| 387 var parsedDebuggerTestPageHtml = false; |
| 388 var parsedDebuggerTestJs = false; |
| 389 |
| 390 this.showPanel('scripts'); |
| 391 |
| 392 var scriptUrl = null; |
| 393 var breakpointLine = 12; |
| 394 |
| 395 var test = this; |
| 396 var orig = devtools.DebuggerAgent.prototype.handleScriptsResponse_; |
| 397 this.addSniffer(devtools.DebuggerAgent.prototype, 'handleScriptsResponse_', |
| 398 function(msg) { |
| 399 var scriptSelect = document.getElementById('scripts-files'); |
| 400 var scriptResource = |
| 401 scriptSelect.options[scriptSelect.selectedIndex].representedObject; |
| 402 |
| 403 test.assertTrue(scriptResource instanceof WebInspector.Resource); |
| 404 test.assertTrue(!!scriptResource.url); |
| 405 test.assertTrue( |
| 406 scriptResource.url.search(/debugger_test_page.html$/) != -1, |
| 407 'Main HTML resource should be selected.'); |
| 408 |
| 409 // Store for access from setbreakpoint handler. |
| 410 scriptUrl = scriptResource.url; |
| 411 |
| 412 var scriptsPanel = WebInspector.panels.scripts; |
| 413 |
| 414 var view = scriptsPanel.visibleView; |
| 415 test.assertTrue(view instanceof WebInspector.SourceView); |
| 416 |
| 417 if (!view.sourceFrame._isContentLoaded()) { |
| 418 test.addSniffer(view, '_sourceFrameSetupFinished', function(event) { |
| 419 view._addBreakpoint(breakpointLine); |
| 420 // Force v8 execution. |
| 421 devtools.tools.evaluateJavaScript('javascript:void(0)'); |
| 422 }); |
| 423 } else { |
| 424 view._addBreakpoint(breakpointLine); |
| 425 // Force v8 execution. |
| 426 devtools.tools.evaluateJavaScript('javascript:void(0)'); |
| 427 } |
| 428 }); |
| 429 |
| 430 this.addSniffer( |
| 431 devtools.DebuggerAgent.prototype, |
| 432 'handleSetBreakpointResponse_', |
| 433 function(msg) { |
| 434 var bps = this.urlToBreakpoints_[scriptUrl]; |
| 435 test.assertTrue(!!bps, 'No breakpoints for line ' + breakpointLine); |
| 436 var line = devtools.DebuggerAgent.webkitToV8LineNumber_(breakpointLine); |
| 437 test.assertTrue(!!bps[line].getV8Id(), |
| 438 'Breakpoint id was not assigned.'); |
| 439 test.releaseControl(); |
| 440 }); |
| 441 |
| 442 this.takeControl(); |
| 443 }; |
| 444 |
| 445 |
| 446 /** |
| 352 * Key event with given key identifier. | 447 * Key event with given key identifier. |
| 353 */ | 448 */ |
| 354 TestSuite.KeyEvent = function(key) { | 449 TestSuite.KeyEvent = function(key) { |
| 355 this.keyIdentifier = key; | 450 this.keyIdentifier = key; |
| 356 }; | 451 }; |
| 357 TestSuite.KeyEvent.prototype.preventDefault = function() {}; | 452 TestSuite.KeyEvent.prototype.preventDefault = function() {}; |
| 358 TestSuite.KeyEvent.prototype.stopPropagation = function() {}; | 453 TestSuite.KeyEvent.prototype.stopPropagation = function() {}; |
| 359 | 454 |
| 360 | 455 |
| 361 /** | 456 /** |
| 362 * Tests console eval. | 457 * Tests console eval. |
| 363 */ | 458 */ |
| 364 TestSuite.prototype.testConsoleEval = function() { | 459 TestSuite.prototype.testConsoleEval = function() { |
| 365 WebInspector.console.visible = true; | 460 WebInspector.console.visible = true; |
| 366 WebInspector.console.prompt.text = '123'; | 461 WebInspector.console.prompt.text = '123'; |
| 367 WebInspector.console.promptElement.handleKeyEvent( | 462 WebInspector.console.promptElement.handleKeyEvent( |
| 368 new TestSuite.KeyEvent('Enter')); | 463 new TestSuite.KeyEvent('Enter')); |
| 369 | 464 |
| 370 var test = this; | 465 var test = this; |
| 371 var originalConsoleAddMessage = WebInspector.Console.prototype.addMessage; | 466 this.addSniffer(WebInspector.Console.prototype, 'addMessage', |
| 372 WebInspector.Console.prototype.addMessage = function(commandResult) { | 467 function(commandResult) { |
| 373 originalConsoleAddMessage.call(this, commandResult); | 468 test.assertEquals('123', commandResult.toMessageElement().textContent); |
| 374 WebInspector.Console.prototype.addMessage = originalConsoleAddMessage; | 469 test.releaseControl(); |
| 375 test.assertEquals('123', commandResult.toMessageElement().textContent); | 470 }); |
| 376 test.releaseControl(); | |
| 377 }; | |
| 378 | 471 |
| 379 this.takeControl(); | 472 this.takeControl(); |
| 380 }; | 473 }; |
| 381 | 474 |
| 382 | 475 |
| 383 /** | 476 /** |
| 384 * Tests console log. | 477 * Tests console log. |
| 385 */ | 478 */ |
| 386 TestSuite.prototype.testConsoleLog = function() { | 479 TestSuite.prototype.testConsoleLog = function() { |
| 387 WebInspector.console.visible = true; | 480 WebInspector.console.visible = true; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 /** | 517 /** |
| 425 * Tests eval of global objects. | 518 * Tests eval of global objects. |
| 426 */ | 519 */ |
| 427 TestSuite.prototype.testEvalGlobal = function() { | 520 TestSuite.prototype.testEvalGlobal = function() { |
| 428 WebInspector.console.visible = true; | 521 WebInspector.console.visible = true; |
| 429 WebInspector.console.prompt.text = 'foo'; | 522 WebInspector.console.prompt.text = 'foo'; |
| 430 WebInspector.console.promptElement.handleKeyEvent( | 523 WebInspector.console.promptElement.handleKeyEvent( |
| 431 new TestSuite.KeyEvent('Enter')); | 524 new TestSuite.KeyEvent('Enter')); |
| 432 | 525 |
| 433 var test = this; | 526 var test = this; |
| 434 var originalConsoleAddMessage = WebInspector.Console.prototype.addMessage; | 527 this.addSniffer(WebInspector.Console.prototype, 'addMessage', |
| 435 WebInspector.Console.prototype.addMessage = function(commandResult) { | 528 function(commandResult) { |
| 436 originalConsoleAddMessage.call(this, commandResult); | 529 test.assertEquals('fooValue', |
| 437 test.assertEquals('fooValue', commandResult.toMessageElement().textContent); | 530 commandResult.toMessageElement().textContent); |
| 438 test.releaseControl(); | 531 test.releaseControl(); |
| 439 }; | 532 }); |
| 440 | 533 |
| 441 this.takeControl(); | 534 this.takeControl(); |
| 442 }; | 535 }; |
| 443 | 536 |
| 444 | 537 |
| 445 /** | 538 /** |
| 446 * Tests eval on call frame. | 539 * Tests eval on call frame. |
| 447 */ | 540 */ |
| 448 TestSuite.prototype.testEvalCallFrame = function() { | 541 TestSuite.prototype.testEvalCallFrame = function() { |
| 449 }; | 542 }; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 472 /** | 565 /** |
| 473 * Run specified test on a fresh instance of the test suite. | 566 * Run specified test on a fresh instance of the test suite. |
| 474 * @param {string} name Name of a test method from TestSuite class. | 567 * @param {string} name Name of a test method from TestSuite class. |
| 475 */ | 568 */ |
| 476 uiTests.runTest = function(name) { | 569 uiTests.runTest = function(name) { |
| 477 new TestSuite().runTest(name); | 570 new TestSuite().runTest(name); |
| 478 }; | 571 }; |
| 479 | 572 |
| 480 | 573 |
| 481 } | 574 } |
| OLD | NEW |