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

Unified Diff: telemetry/telemetry/internal/actions/action_runner_unittest.py

Issue 2421433003: Add ScrollPageToElement to action_runner. (Closed)
Patch Set: scroll element to center instead of top Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: telemetry/telemetry/internal/actions/action_runner_unittest.py
diff --git a/telemetry/telemetry/internal/actions/action_runner_unittest.py b/telemetry/telemetry/internal/actions/action_runner_unittest.py
index 8e89bce7663a0cd33bf1edd15d7470368460e49b..b8d562cc8415b8f84de1e1a255cd0e15920d1274 100644
--- a/telemetry/telemetry/internal/actions/action_runner_unittest.py
+++ b/telemetry/telemetry/internal/actions/action_runner_unittest.py
@@ -285,6 +285,32 @@ class ActionRunnerTest(tab_test_case.TabTestCase):
self.assertTrue(action_runner.EvaluateJavaScript(
'(document.scrollingElement || document.body).scrollLeft') > 75)
+ off_screen_element = 'document.querySelectorAll("#off-screen")[0]'
nednguyen 2016/10/14 00:19:01 Can you move this to a separate test case, s.t lik
charliea (OOO until 10-5) 2016/10/14 03:34:28 +1
rnephew (Reviews Here) 2016/10/14 17:57:18 Done.
+ determine_if_on_screen = '''
charliea (OOO until 10-5) 2016/10/14 03:34:28 I think this variable is a little misleadingly nam
rnephew (Reviews Here) 2016/10/14 17:57:18 Done.
+ function getOnScreen(elem) {
charliea (OOO until 10-5) 2016/10/14 03:34:28 nit: similar comment to before, where I think it m
rnephew (Reviews Here) 2016/10/14 17:57:17 Done.
+ var rect = elem.getBoundingClientRect();
+
+ if (rect.bottom < 0) {
+ // The bottom of the element is above the viewport.
+ return 2
charliea (OOO until 10-5) 2016/10/14 03:34:28 nit: all JS lines should end in semicolons
charliea (OOO until 10-5) 2016/10/14 03:34:28 I might go with -1 (above the viewport), 0 (in the
rnephew (Reviews Here) 2016/10/14 17:57:18 Done.
rnephew (Reviews Here) 2016/10/14 17:57:18 Done.
+ }
+ if (rect.top - window.innerHeight > 0) {
+ // rect.top provides the pixel offset of the element from the
+ // top of the page. Because that exceeds the viewport's height,
+ // we know that the element is below the viewport.
+ return 1
charliea (OOO until 10-5) 2016/10/14 03:34:28 nit: need semicolon
rnephew (Reviews Here) 2016/10/14 17:57:18 Done.
+ }
+ return 0
charliea (OOO until 10-5) 2016/10/14 03:34:28 nit: need semicolon
rnephew (Reviews Here) 2016/10/14 17:57:17 Done.
+ }
+ getOnScreen(%s)
+ ''' % off_screen_element
+
+ self.assertEqual(
+ action_runner.EvaluateJavaScript(determine_if_on_screen), 1)
+ action_runner.ScrollPageToElement(selector='#off-screen')
+ self.assertEqual(
+ action_runner.EvaluateJavaScript(determine_if_on_screen), 0)
+
@decorators.Disabled('android', # crbug.com/437065.
'chromeos') # crbug.com/483212.
def testSwipe(self):

Powered by Google App Engine
This is Rietveld 408576698