Index: chrome/test/chromedriver/test/run_py_tests.py |
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py |
index 71b225a8b60b2bd336165cc2d2132ec836cc90e7..d8434411ca207c8e5d3c83b8c65d6f8800224ce4 100755 |
--- a/chrome/test/chromedriver/test/run_py_tests.py |
+++ b/chrome/test/chromedriver/test/run_py_tests.py |
@@ -895,6 +895,45 @@ class ChromeDriverLogTest(unittest.TestCase): |
self.assertTrue(self.LOG_MESSAGE in f.read()) |
+class PerformanceLoggerTest(ChromeDriverBaseTest): |
+ """Tests chromedriver tracing support and Inspector event collection.""" |
+ |
+ def testPerformanceLogger(self): |
+ driver = self.CreateDriver( |
+ experimental_options={'perfLoggingPrefs': { |
+ 'enableTimeline': True, |
+ 'traceCategories': 'webkit.console,blink.console' |
+ }}, performance_log_level='ALL') |
+ driver.Load( |
+ ChromeDriverTest._http_server.GetUrl() + '/chromedriver/empty.html') |
+ # Mark the timeline; later we will verify the marks appear in the trace. |
+ driver.ExecuteScript('console.time("foobar")') |
+ driver.ExecuteScript('console.timeEnd("foobar")') |
+ logs = driver.GetLog('performance') |
+ driver.Quit() |
+ |
+ marked_timeline_events = [] |
+ seen_log_domains = {} |
+ for entry in logs: |
+ devtools_message = json.loads(entry['message'])['message'] |
+ method = devtools_message['method'] |
+ domain = method[:method.find('.')] |
+ seen_log_domains[domain] = True |
+ if method != 'Tracing.dataCollected': |
+ continue |
+ self.assertTrue('params' in devtools_message) |
+ self.assertTrue(isinstance(devtools_message['params'], dict)) |
+ cat = devtools_message['params'].get('cat', '') |
+ # Depending on Chrome version, the events may occur for the webkit.console |
+ # or blink.console category. They will only occur for one of them. |
+ if (cat == 'blink.console' or cat == 'webkit.console'): |
+ self.assertTrue(devtools_message['params']['name'] == 'foobar') |
+ marked_timeline_events.append(devtools_message) |
+ self.assertEquals(2, len(marked_timeline_events)) |
+ self.assertEquals({'Network', 'Page', 'Timeline', 'Tracing'}, |
+ set(seen_log_domains.keys())) |
+ |
+ |
class SessionHandlingTest(ChromeDriverBaseTest): |
"""Tests for session operations.""" |
def testQuitASessionMoreThanOnce(self): |