OLD | NEW |
---|---|
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 import mock | 4 import mock |
5 import unittest | 5 import unittest |
6 | 6 |
7 from telemetry.core import exceptions | 7 from telemetry.core import exceptions |
8 from telemetry import decorators | 8 from telemetry import decorators |
9 from telemetry.internal.actions import action_runner as action_runner_module | 9 from telemetry.internal.actions import action_runner as action_runner_module |
10 from telemetry.internal.actions import page_action | 10 from telemetry.internal.actions import page_action |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
253 | 253 |
254 action_runner.ExecuteJavaScript('valueSettableByTest = 3;') | 254 action_runner.ExecuteJavaScript('valueSettableByTest = 3;') |
255 action_runner.TapElement( | 255 action_runner.TapElement( |
256 element_function='document.body.firstElementChild') | 256 element_function='document.body.firstElementChild') |
257 self.assertEqual(3, action_runner.EvaluateJavaScript('valueToTest')) | 257 self.assertEqual(3, action_runner.EvaluateJavaScript('valueToTest')) |
258 | 258 |
259 def WillFail(): | 259 def WillFail(): |
260 action_runner.TapElement('#notfound') | 260 action_runner.TapElement('#notfound') |
261 self.assertRaises(exceptions.EvaluateException, WillFail) | 261 self.assertRaises(exceptions.EvaluateException, WillFail) |
262 | 262 |
263 | |
264 def testScrollToElement(self): | |
265 if not page_action.IsGestureSourceTypeSupported( | |
nednguyen
2016/10/14 18:05:59
I think we don't need this. When I patch your CL &
rnephew (Reviews Here)
2016/10/14 18:08:56
Done.
| |
266 self._tab, 'touch'): | |
267 return | |
268 | |
269 self.Navigate('page_with_swipeables.html') | |
270 action_runner = action_runner_module.ActionRunner(self._tab, | |
271 skip_waits=True) | |
272 | |
273 off_screen_element = 'document.querySelectorAll("#off-screen")[0]' | |
274 top_bottom_element = 'document.querySelector("#top-bottom")' | |
275 viewport_comparator_js_template = ''' | |
276 (function(elem) { | |
277 var rect = elem.getBoundingClientRect(); | |
278 | |
279 if (rect.bottom < 0) { | |
280 // The bottom of the element is above the viewport. | |
281 return -1; | |
282 } | |
283 if (rect.top - window.innerHeight > 0) { | |
284 // rect.top provides the pixel offset of the element from the | |
285 // top of the page. Because that exceeds the viewport's height, | |
286 // we know that the element is below the viewport. | |
287 return 1; | |
288 } | |
289 return 0; | |
290 })( | |
291 ''' | |
292 viewport_comparator_off_screen_js = ( | |
293 viewport_comparator_js_template + '%s);' % off_screen_element) | |
294 viewport_comparator_top_bottom_js = ( | |
295 viewport_comparator_js_template + '%s);' % top_bottom_element) | |
296 | |
297 self.assertEqual( | |
298 action_runner.EvaluateJavaScript(viewport_comparator_off_screen_js), 1) | |
299 action_runner.ScrollPageToElement(selector='#off-screen', | |
300 speed_in_pixels_per_second=5000) | |
301 self.assertEqual( | |
302 action_runner.EvaluateJavaScript(viewport_comparator_off_screen_js), 0) | |
303 | |
304 self.assertEqual( | |
305 action_runner.EvaluateJavaScript(viewport_comparator_top_bottom_js), -1) | |
306 action_runner.ScrollPageToElement(selector='#top-bottom', | |
307 speed_in_pixels_per_second=5000) | |
308 self.assertEqual( | |
309 action_runner.EvaluateJavaScript(viewport_comparator_top_bottom_js), 0) | |
310 | |
311 | |
263 @decorators.Disabled('android', # crbug.com/437065. | 312 @decorators.Disabled('android', # crbug.com/437065. |
264 'chromeos') # crbug.com/483212. | 313 'chromeos') # crbug.com/483212. |
265 def testScroll(self): | 314 def testScroll(self): |
266 if not page_action.IsGestureSourceTypeSupported( | 315 if not page_action.IsGestureSourceTypeSupported( |
267 self._tab, 'touch'): | 316 self._tab, 'touch'): |
268 return | 317 return |
269 | 318 |
270 self.Navigate('page_with_swipeables.html') | 319 self.Navigate('page_with_swipeables.html') |
271 action_runner = action_runner_module.ActionRunner(self._tab, | 320 action_runner = action_runner_module.ActionRunner(self._tab, |
272 skip_waits=True) | 321 skip_waits=True) |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
359 with self.assertRaises(FooException): | 408 with self.assertRaises(FooException): |
360 with action_runner_module.Interaction( | 409 with action_runner_module.Interaction( |
361 self.mock_action_runner, label='ABC', flags=[]): | 410 self.mock_action_runner, label='ABC', flags=[]): |
362 raise FooException() | 411 raise FooException() |
363 | 412 |
364 # Test that the end console.timeEnd(...) isn't called because exception was | 413 # Test that the end console.timeEnd(...) isn't called because exception was |
365 # raised. | 414 # raised. |
366 expected_calls = [ | 415 expected_calls = [ |
367 mock.call.ExecuteJavaScript('console.time("Interaction.ABC");')] | 416 mock.call.ExecuteJavaScript('console.time("Interaction.ABC");')] |
368 self.assertEqual(expected_calls, self.mock_action_runner.mock_calls) | 417 self.assertEqual(expected_calls, self.mock_action_runner.mock_calls) |
OLD | NEW |