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

Side by Side Diff: telemetry/telemetry/internal/browser/tab_unittest.py

Issue 2692763002: Revert of [Telemetry] Switch clients to new JavaScript API (batch 5) (Closed)
Patch Set: Created 3 years, 10 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
1 # Copyright 2012 The Chromium Authors. All rights reserved. 1 # Copyright 2012 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 import logging 5 import logging
6 import tempfile 6 import tempfile
7 import time 7 import time
8 8
9 from telemetry.core import exceptions 9 from telemetry.core import exceptions
10 from telemetry import decorators 10 from telemetry import decorators
11 from telemetry.internal.image_processing import video 11 from telemetry.internal.image_processing import video
12 from telemetry.testing import tab_test_case 12 from telemetry.testing import tab_test_case
13 from telemetry.timeline import model 13 from telemetry.timeline import model
14 from telemetry.timeline import tracing_config 14 from telemetry.timeline import tracing_config
15 from telemetry.util import image_util 15 from telemetry.util import image_util
16 from telemetry.util import rgba_color 16 from telemetry.util import rgba_color
17 17
18 import py_utils 18 import py_utils
19 19
20 20
21 def _IsDocumentVisible(tab): 21 def _IsDocumentVisible(tab):
22 return not tab.EvaluateJavaScript2('document.hidden || document.webkitHidden') 22 return not tab.EvaluateJavaScript('document.hidden || document.webkitHidden')
23 23
24 24
25 class FakePlatformBackend(object): 25 class FakePlatformBackend(object):
26 def __init__(self): 26 def __init__(self):
27 self.platform = FakePlatform() 27 self.platform = FakePlatform()
28 28
29 def DidStartBrowser(self, _, _2): 29 def DidStartBrowser(self, _, _2):
30 pass 30 pass
31 31
32 def WillCloseBrowser(self, _, _2): 32 def WillCloseBrowser(self, _, _2):
(...skipping 28 matching lines...) Expand all
61 61
62 def testTabBrowserIsRightBrowser(self): 62 def testTabBrowserIsRightBrowser(self):
63 self.assertEquals(self._tab.browser, self._browser) 63 self.assertEquals(self._tab.browser, self._browser)
64 64
65 def testRendererCrash(self): 65 def testRendererCrash(self):
66 self.assertRaises(exceptions.DevtoolsTargetCrashException, 66 self.assertRaises(exceptions.DevtoolsTargetCrashException,
67 lambda: self._tab.Navigate('chrome://crash', 67 lambda: self._tab.Navigate('chrome://crash',
68 timeout=30)) 68 timeout=30))
69 69
70 def testTimeoutExceptionIncludeConsoleMessage(self): 70 def testTimeoutExceptionIncludeConsoleMessage(self):
71 self._tab.EvaluateJavaScript2(""" 71 self._tab.EvaluateJavaScript("""
72 window.__set_timeout_called = false; 72 window.__set_timeout_called = false;
73 function buggyReference() { 73 function buggyReference() {
74 window.__set_timeout_called = true; 74 window.__set_timeout_called = true;
75 if (window.__one.not_defined === undefined) 75 if (window.__one.not_defined === undefined)
76 window.__one = 1; 76 window.__one = 1;
77 } 77 }
78 setTimeout(buggyReference, 200);""") 78 setTimeout(buggyReference, 200);""")
79 self._tab.WaitForJavaScriptCondition2( 79 self._tab.WaitForJavaScriptExpression(
80 'window.__set_timeout_called === true', timeout=5) 80 'window.__set_timeout_called === true', 5)
81 with self.assertRaises(py_utils.TimeoutException) as context: 81 with self.assertRaises(py_utils.TimeoutException) as context:
82 self._tab.WaitForJavaScriptCondition2( 82 self._tab.WaitForJavaScriptExpression(
83 'window.__one === 1', timeout=1) 83 'window.__one === 1', 1)
84 self.assertIn( 84 self.assertIn(
85 ("(error) :5: Uncaught TypeError: Cannot read property 'not_defined' " 85 ("(error) :5: Uncaught TypeError: Cannot read property 'not_defined' "
86 'of undefined\n'), 86 'of undefined\n'),
87 context.exception.message) 87 context.exception.message)
88 88
89 @decorators.Enabled('has tabs') 89 @decorators.Enabled('has tabs')
90 def testActivateTab(self): 90 def testActivateTab(self):
91 py_utils.WaitFor(lambda: _IsDocumentVisible(self._tab), timeout=5) 91 py_utils.WaitFor(lambda: _IsDocumentVisible(self._tab), timeout=5)
92 new_tab = self._browser.tabs.New() 92 new_tab = self._browser.tabs.New()
93 new_tab.Navigate('about:blank') 93 new_tab.Navigate('about:blank')
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 second_tab.Navigate('about:blank') 149 second_tab.Navigate('about:blank')
150 second_tab.WaitForDocumentReadyStateToBeInteractiveOrBetter() 150 second_tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
151 third_tab = self._browser.tabs.New() 151 third_tab = self._browser.tabs.New()
152 third_tab.Navigate('about:blank') 152 third_tab.Navigate('about:blank')
153 third_tab.WaitForDocumentReadyStateToBeInteractiveOrBetter() 153 third_tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
154 third_tab.Close() 154 third_tab.Close()
155 config = tracing_config.TracingConfig() 155 config = tracing_config.TracingConfig()
156 config.chrome_trace_config.SetLowOverheadFilter() 156 config.chrome_trace_config.SetLowOverheadFilter()
157 config.enable_chrome_trace = True 157 config.enable_chrome_trace = True
158 self._browser.platform.tracing_controller.StartTracing(config) 158 self._browser.platform.tracing_controller.StartTracing(config)
159 first_tab.ExecuteJavaScript2('console.time("first-tab-marker");') 159 first_tab.ExecuteJavaScript('console.time("first-tab-marker");')
160 first_tab.ExecuteJavaScript2('console.timeEnd("first-tab-marker");') 160 first_tab.ExecuteJavaScript('console.timeEnd("first-tab-marker");')
161 second_tab.ExecuteJavaScript2('console.time("second-tab-marker");') 161 second_tab.ExecuteJavaScript('console.time("second-tab-marker");')
162 second_tab.ExecuteJavaScript2('console.timeEnd("second-tab-marker");') 162 second_tab.ExecuteJavaScript('console.timeEnd("second-tab-marker");')
163 trace_data = self._browser.platform.tracing_controller.StopTracing() 163 trace_data = self._browser.platform.tracing_controller.StopTracing()
164 timeline_model = model.TimelineModel(trace_data) 164 timeline_model = model.TimelineModel(trace_data)
165 165
166 # Assert that the renderer_thread of the first tab contains 166 # Assert that the renderer_thread of the first tab contains
167 # 'first-tab-marker'. 167 # 'first-tab-marker'.
168 renderer_thread = timeline_model.GetRendererThreadFromTabId( 168 renderer_thread = timeline_model.GetRendererThreadFromTabId(
169 first_tab.id) 169 first_tab.id)
170 first_tab_markers = [ 170 first_tab_markers = [
171 renderer_thread.IterAllSlicesOfName('first-tab-marker')] 171 renderer_thread.IterAllSlicesOfName('first-tab-marker')]
172 self.assertEquals(1, len(first_tab_markers)) 172 self.assertEquals(1, len(first_tab_markers))
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 204
205 # Test flaky on mac: crbug.com/358664, chromeos: crbug.com/483212. 205 # Test flaky on mac: crbug.com/358664, chromeos: crbug.com/483212.
206 @decorators.Disabled('android', 'mac', 'chromeos') 206 @decorators.Disabled('android', 'mac', 'chromeos')
207 @decorators.Disabled('win') # catapult/issues/2282 207 @decorators.Disabled('win') # catapult/issues/2282
208 def testScreenshot(self): 208 def testScreenshot(self):
209 if not self._tab.screenshot_supported: 209 if not self._tab.screenshot_supported:
210 logging.warning('Browser does not support screenshots, skipping test.') 210 logging.warning('Browser does not support screenshots, skipping test.')
211 return 211 return
212 212
213 self.Navigate('green_rect.html') 213 self.Navigate('green_rect.html')
214 pixel_ratio = self._tab.EvaluateJavaScript2('window.devicePixelRatio || 1') 214 pixel_ratio = self._tab.EvaluateJavaScript('window.devicePixelRatio || 1')
215 215
216 screenshot = self._tab.Screenshot(5) 216 screenshot = self._tab.Screenshot(5)
217 assert screenshot is not None 217 assert screenshot is not None
218 image_util.GetPixelColor( 218 image_util.GetPixelColor(
219 screenshot, 0 * pixel_ratio, 0 * pixel_ratio).AssertIsRGB( 219 screenshot, 0 * pixel_ratio, 0 * pixel_ratio).AssertIsRGB(
220 0, 255, 0, tolerance=2) 220 0, 255, 0, tolerance=2)
221 image_util.GetPixelColor( 221 image_util.GetPixelColor(
222 screenshot, 31 * pixel_ratio, 31 * pixel_ratio).AssertIsRGB( 222 screenshot, 31 * pixel_ratio, 31 * pixel_ratio).AssertIsRGB(
223 0, 255, 0, tolerance=2) 223 0, 255, 0, tolerance=2)
224 image_util.GetPixelColor( 224 image_util.GetPixelColor(
(...skipping 14 matching lines...) Expand all
239 self._tab.Navigate(self.UrlOfUnittestFile('cast.html')) 239 self._tab.Navigate(self.UrlOfUnittestFile('cast.html'))
240 self._tab.WaitForDocumentReadyStateToBeComplete() 240 self._tab.WaitForDocumentReadyStateToBeComplete()
241 self._tab.action_runner.TapElement(selector='#start_session_button') 241 self._tab.action_runner.TapElement(selector='#start_session_button')
242 # Wait for media router dialog 242 # Wait for media router dialog
243 start_time = time.time() 243 start_time = time.time()
244 while (time.time() - start_time < 5 and 244 while (time.time() - start_time < 5 and
245 len(self.tabs) != 2): 245 len(self.tabs) != 2):
246 time.sleep(1) 246 time.sleep(1)
247 self.assertEquals(len(self.tabs), 2) 247 self.assertEquals(len(self.tabs), 2)
248 self.assertEquals(self.tabs[1].url, 'chrome://media-router/') 248 self.assertEquals(self.tabs[1].url, 'chrome://media-router/')
OLDNEW
« no previous file with comments | « telemetry/telemetry/internal/browser/tab.py ('k') | telemetry/telemetry/internal/browser/user_agent_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698