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

Unified Diff: tools/telemetry/telemetry/page/actions/action_runner_unittest.py

Issue 321563003: Add Wait* API to ActionRunner to wrap over WaitAction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing to head. Created 6 years, 6 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: tools/telemetry/telemetry/page/actions/action_runner_unittest.py
diff --git a/tools/telemetry/telemetry/page/actions/action_runner_unittest.py b/tools/telemetry/telemetry/page/actions/action_runner_unittest.py
index 882ba7c0fb30d23562ccd44249244cab39c75aea..55ada24a86a2fdc9084b956f7318beccb72fd784 100644
--- a/tools/telemetry/telemetry/page/actions/action_runner_unittest.py
+++ b/tools/telemetry/telemetry/page/actions/action_runner_unittest.py
@@ -2,12 +2,15 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+from telemetry.core import util
from telemetry.core.backends.chrome import tracing_backend
from telemetry.core.timeline import model
from telemetry.page.actions import action_runner as action_runner_module
+from telemetry.page.actions import page_action
# pylint: disable=W0401,W0614
from telemetry.page.actions.all_page_actions import *
from telemetry.unittest import tab_test_case
+from telemetry.unittest import tab_test_case
from telemetry.web_perf import timeline_interaction_record as tir_module
@@ -15,7 +18,7 @@ class ActionRunnerTest(tab_test_case.TabTestCase):
def testIssuingInteractionRecord(self):
action_runner = action_runner_module.ActionRunner(self._tab)
self.Navigate('interaction_enabled_page.html')
- action_runner.RunAction(WaitAction({'seconds': 1}))
+ action_runner.Wait(1)
self._browser.StartTracing(tracing_backend.DEFAULT_TRACE_CATEGORIES)
interaction = action_runner.BeginInteraction(
'TestInteraction', is_smooth=True)
@@ -53,3 +56,97 @@ class ActionRunnerTest(tab_test_case.TabTestCase):
self.assertEquals(
self._tab.EvaluateJavaScript('document.location.pathname;'),
'/blank.html')
+
+ def testWait(self):
+ action_runner = action_runner_module.ActionRunner(self._tab)
+ self.Navigate('blank.html')
+
+ action_runner.ExecuteJavaScript(
+ 'window.setTimeout(function() { window.testing = 101; }, 1000);')
+ action_runner.Wait(2)
+ self.assertEqual(101, self._tab.EvaluateJavaScript('window.testing'))
+
+ action_runner.ExecuteJavaScript(
+ 'window.setTimeout(function() { window.testing = 102; }, 2000);')
+ action_runner.Wait(3)
+ self.assertEqual(102, self._tab.EvaluateJavaScript('window.testing'))
+
+ def testWaitForJavaScriptCondition(self):
+ action_runner = action_runner_module.ActionRunner(self._tab)
+ self.Navigate('blank.html')
+
+ action_runner.ExecuteJavaScript('window.testing = 219;')
+ action_runner.WaitForJavaScriptCondition(
+ 'window.testing == 219', timeout=1)
+ action_runner.ExecuteJavaScript(
+ 'window.setTimeout(function() { window.testing = 220; }, 1000);')
+ action_runner.WaitForJavaScriptCondition(
+ 'window.testing == 220', timeout=2)
+ self.assertEqual(220, self._tab.EvaluateJavaScript('window.testing'))
+
+ def testWaitForElement(self):
+ action_runner = action_runner_module.ActionRunner(self._tab)
+ self.Navigate('blank.html')
+
+ action_runner.ExecuteJavaScript(
+ '(function() {'
+ ' var el = document.createElement("div");'
+ ' el.id = "test1";'
+ ' el.textContent = "foo";'
+ ' document.body.appendChild(el);'
+ '})()')
+ action_runner.WaitForElement('#test1', timeout=1)
+ action_runner.WaitForElement(text='foo', timeout=1)
+ action_runner.WaitForElement(
+ element_function='document.getElementById("test1")')
+ action_runner.ExecuteJavaScript(
+ 'window.setTimeout(function() {'
+ ' var el = document.createElement("div");'
+ ' el.id = "test2";'
+ ' document.body.appendChild(el);'
+ '}, 500)')
+ action_runner.WaitForElement('#test2', timeout=2)
+ action_runner.ExecuteJavaScript(
+ 'window.setTimeout(function() {'
+ ' document.getElementById("test2").textContent = "bar";'
+ '}, 500)')
+ action_runner.WaitForElement(text='bar', timeout=2)
+ action_runner.ExecuteJavaScript(
+ 'window.setTimeout(function() {'
+ ' var el = document.createElement("div");'
+ ' el.id = "test3";'
+ ' document.body.appendChild(el);'
+ '}, 500)')
+ action_runner.WaitForElement(
+ element_function='document.getElementById("test3")')
+
+ def testWaitForElementWithWrongText(self):
+ action_runner = action_runner_module.ActionRunner(self._tab)
+ self.Navigate('blank.html')
+
+ action_runner.ExecuteJavaScript(
+ '(function() {'
+ ' var el = document.createElement("div");'
+ ' el.id = "test1";'
+ ' el.textContent = "foo";'
+ ' document.body.appendChild(el);'
+ '})()')
+ action_runner.WaitForElement('#test1', timeout=1)
+ def WaitForElement():
+ action_runner.WaitForElement(text='oo', timeout=1)
+ self.assertRaises(util.TimeoutException, WaitForElement)
+
+ def testWaitForElementWithConflictingParams(self):
+ action_runner = action_runner_module.ActionRunner(self._tab)
+ def WaitForElement1():
+ action_runner.WaitForElement(selector='div', text='foo', timeout=1)
+ self.assertRaises(page_action.PageActionFailed, WaitForElement1)
+
+ def WaitForElement2():
+ action_runner.WaitForElement(selector='div', element_function='foo',
+ timeout=1)
+ self.assertRaises(page_action.PageActionFailed, WaitForElement2)
+
+ def WaitForElement3():
+ action_runner.WaitForElement(text='foo', element_function='', timeout=1)
+ self.assertRaises(page_action.PageActionFailed, WaitForElement3)
« no previous file with comments | « tools/telemetry/telemetry/page/actions/action_runner.py ('k') | tools/telemetry/telemetry/page/actions/wait.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698