| Index: tools/telemetry/telemetry/internal/actions/repeatable_scroll_unittest.py
|
| diff --git a/tools/telemetry/telemetry/internal/actions/repeatable_scroll_unittest.py b/tools/telemetry/telemetry/internal/actions/repeatable_scroll_unittest.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f5341e9897e1f072e7004c8b5bb832e80bb7a6a0
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/internal/actions/repeatable_scroll_unittest.py
|
| @@ -0,0 +1,64 @@
|
| +# Copyright 2015 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +from telemetry.internal.actions import repeatable_scroll
|
| +from telemetry.internal.browser import browser_info as browser_info_module
|
| +from telemetry.testing import tab_test_case
|
| +
|
| +
|
| +class RepeatableScrollActionTest(tab_test_case.TabTestCase):
|
| +
|
| + def setUp(self):
|
| + tab_test_case.TabTestCase.setUp(self)
|
| + self.Navigate('blank.html')
|
| +
|
| + # Make page bigger than window so it's scrollable.
|
| + self._tab.ExecuteJavaScript('document.body.style.height = '
|
| + ' (3 * window.innerHeight + 1) + "px";')
|
| +
|
| + self.assertEquals(
|
| + self._tab.EvaluateJavaScript('document.documentElement.scrollTop '
|
| + '|| document.body.scrollTop'), 0)
|
| +
|
| + self._browser_info = browser_info_module.BrowserInfo(self._tab.browser)
|
| + self._window_height = int(
|
| + self._tab.EvaluateJavaScript('window.innerHeight'))
|
| +
|
| + def testRepeatableScrollActionNoRepeats(self):
|
| + if not self._browser_info.HasRepeatableSynthesizeScrollGesture():
|
| + return
|
| +
|
| + expected_scroll = (self._window_height / 2) - 1
|
| +
|
| + i = repeatable_scroll.RepeatableScrollAction(y_scroll_distance_ratio=0.5)
|
| + i.WillRunAction(self._tab)
|
| +
|
| + i.RunAction(self._tab)
|
| +
|
| + scroll_position = self._tab.EvaluateJavaScript(
|
| + '(document.documentElement.scrollTop || document.body.scrollTop)')
|
| + # We can only expect the final scroll position to be approximatly equal.
|
| + self.assertTrue(abs(scroll_position - expected_scroll) < 20,
|
| + msg='scroll_position=%d;expected %d' % (scroll_position,
|
| + expected_scroll))
|
| +
|
| + def testRepeatableScrollActionTwoRepeats(self):
|
| + if not self._browser_info.HasRepeatableSynthesizeScrollGesture():
|
| + return
|
| +
|
| + expected_scroll = ((self._window_height / 2) - 1) * 3
|
| +
|
| + i = repeatable_scroll.RepeatableScrollAction(y_scroll_distance_ratio=0.5,
|
| + repeat_count=2,
|
| + repeat_delay_ms=1)
|
| + i.WillRunAction(self._tab)
|
| +
|
| + i.RunAction(self._tab)
|
| +
|
| + scroll_position = self._tab.EvaluateJavaScript(
|
| + '(document.documentElement.scrollTop || document.body.scrollTop)')
|
| + # We can only expect the final scroll position to be approximatly equal.
|
| + self.assertTrue(abs(scroll_position - expected_scroll) < 20,
|
| + msg='scroll_position=%d;expected %d' % (scroll_position,
|
| + expected_scroll))
|
|
|