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)) |