Index: tools/telemetry/telemetry/internal/actions/action_runner_unittest.py |
diff --git a/tools/telemetry/telemetry/internal/actions/action_runner_unittest.py b/tools/telemetry/telemetry/internal/actions/action_runner_unittest.py |
deleted file mode 100644 |
index d17c4a7df3d772d0346bf565bbb844a42f539116..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/internal/actions/action_runner_unittest.py |
+++ /dev/null |
@@ -1,287 +0,0 @@ |
-# Copyright 2014 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. |
-import unittest |
- |
-from telemetry.core import exceptions |
-from telemetry import decorators |
-from telemetry.internal.actions import page_action |
-from telemetry.page import action_runner as action_runner_module |
-from telemetry.testing import tab_test_case |
-import mock |
-from telemetry.timeline import model |
-from telemetry.timeline import tracing_config |
-from telemetry.web_perf import timeline_interaction_record as tir_module |
- |
- |
-class ActionRunnerInteractionTest(tab_test_case.TabTestCase): |
- |
- def GetInteractionRecords(self, trace_data): |
- timeline_model = model.TimelineModel(trace_data) |
- renderer_thread = timeline_model.GetRendererThreadFromTabId(self._tab.id) |
- return [ |
- tir_module.TimelineInteractionRecord.FromAsyncEvent(e) |
- for e in renderer_thread.async_slices |
- if tir_module.IsTimelineInteractionRecord(e.name) |
- ] |
- |
- def VerifyIssuingInteractionRecords(self, **interaction_kwargs): |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- self.Navigate('interaction_enabled_page.html') |
- action_runner.Wait(1) |
- config = tracing_config.TracingConfig() |
- config.SetNoOverheadFilter() |
- config.enable_chrome_trace = True |
- self._browser.platform.tracing_controller.StartTracing(config) |
- with action_runner.CreateInteraction('InteractionName', |
- **interaction_kwargs): |
- pass |
- trace_data = self._browser.platform.tracing_controller.StopTracing() |
- |
- records = self.GetInteractionRecords(trace_data) |
- self.assertEqual( |
- 1, len(records), |
- 'Failed to issue the interaction record on the tracing timeline.' |
- ' Trace data:\n%s' % repr(trace_data._raw_data)) |
- self.assertEqual('InteractionName', records[0].label) |
- for attribute_name in interaction_kwargs: |
- self.assertTrue(getattr(records[0], attribute_name)) |
- |
- # Test disabled for android: crbug.com/437057 |
- # Test disabled for linux: crbug.com/513874 |
- @decorators.Disabled('android', 'chromeos', 'linux') |
- @decorators.Disabled('win') # crbug.com/570955 |
- def testIssuingMultipleMeasurementInteractionRecords(self): |
- self.VerifyIssuingInteractionRecords(repeatable=True) |
- |
- |
-class ActionRunnerTest(tab_test_case.TabTestCase): |
- def testExecuteJavaScript(self): |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- self.Navigate('blank.html') |
- action_runner.ExecuteJavaScript('var testing = 42;') |
- self.assertEqual(42, self._tab.EvaluateJavaScript('testing')) |
- |
- def testWaitForNavigate(self): |
- self.Navigate('page_with_link.html') |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- action_runner.ClickElement('#clickme') |
- action_runner.WaitForNavigate() |
- |
- self.assertTrue(self._tab.EvaluateJavaScript( |
- 'document.readyState == "interactive" || ' |
- 'document.readyState == "complete"')) |
- self.assertEqual( |
- 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; }, 50);') |
- action_runner.Wait(0.1) |
- self.assertEqual(101, self._tab.EvaluateJavaScript('window.testing')) |
- |
- action_runner.ExecuteJavaScript( |
- 'window.setTimeout(function() { window.testing = 102; }, 100);') |
- action_runner.Wait(0.2) |
- self.assertEqual(102, self._tab.EvaluateJavaScript('window.testing')) |
- |
- def testWaitForJavaScriptCondition(self): |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- self.Navigate('blank.html') |
- |
- action_runner.ExecuteJavaScript('window.testing = 219;') |
- action_runner.WaitForJavaScriptCondition( |
- 'window.testing == 219', timeout_in_seconds=0.1) |
- action_runner.ExecuteJavaScript( |
- 'window.setTimeout(function() { window.testing = 220; }, 50);') |
- action_runner.WaitForJavaScriptCondition( |
- 'window.testing == 220', timeout_in_seconds=0.1) |
- self.assertEqual(220, self._tab.EvaluateJavaScript('window.testing')) |
- |
- def testWaitForElement(self): |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- 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_in_seconds=0.1) |
- action_runner.WaitForElement(text='foo', timeout_in_seconds=0.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);' |
- '}, 50)') |
- action_runner.WaitForElement('#test2', timeout_in_seconds=0.1) |
- action_runner.ExecuteJavaScript( |
- 'window.setTimeout(function() {' |
- ' document.getElementById("test2").textContent = "bar";' |
- '}, 50)') |
- action_runner.WaitForElement(text='bar', timeout_in_seconds=0.1) |
- action_runner.ExecuteJavaScript( |
- 'window.setTimeout(function() {' |
- ' var el = document.createElement("div");' |
- ' el.id = "test3";' |
- ' document.body.appendChild(el);' |
- '}, 50)') |
- action_runner.WaitForElement( |
- element_function='document.getElementById("test3")') |
- |
- def testWaitForElementWithWrongText(self): |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- 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_in_seconds=0.2) |
- def WaitForElement(): |
- action_runner.WaitForElement(text='oo', timeout_in_seconds=0.2) |
- self.assertRaises(exceptions.TimeoutException, WaitForElement) |
- |
- def testClickElement(self): |
- self.Navigate('page_with_clickables.html') |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- |
- action_runner.ExecuteJavaScript('valueSettableByTest = 1;') |
- action_runner.ClickElement('#test') |
- self.assertEqual(1, action_runner.EvaluateJavaScript('valueToTest')) |
- |
- action_runner.ExecuteJavaScript('valueSettableByTest = 2;') |
- action_runner.ClickElement(text='Click/tap me') |
- self.assertEqual(2, action_runner.EvaluateJavaScript('valueToTest')) |
- |
- action_runner.ExecuteJavaScript('valueSettableByTest = 3;') |
- action_runner.ClickElement( |
- element_function='document.body.firstElementChild;') |
- self.assertEqual(3, action_runner.EvaluateJavaScript('valueToTest')) |
- |
- def WillFail(): |
- action_runner.ClickElement('#notfound') |
- self.assertRaises(exceptions.EvaluateException, WillFail) |
- |
- @decorators.Disabled('android', 'debug', # crbug.com/437068 |
- 'chromeos') # crbug.com/483212 |
- def testTapElement(self): |
- self.Navigate('page_with_clickables.html') |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- |
- action_runner.ExecuteJavaScript('valueSettableByTest = 1;') |
- action_runner.TapElement('#test') |
- self.assertEqual(1, action_runner.EvaluateJavaScript('valueToTest')) |
- |
- action_runner.ExecuteJavaScript('valueSettableByTest = 2;') |
- action_runner.TapElement(text='Click/tap me') |
- self.assertEqual(2, action_runner.EvaluateJavaScript('valueToTest')) |
- |
- action_runner.ExecuteJavaScript('valueSettableByTest = 3;') |
- action_runner.TapElement( |
- element_function='document.body.firstElementChild') |
- self.assertEqual(3, action_runner.EvaluateJavaScript('valueToTest')) |
- |
- def WillFail(): |
- action_runner.TapElement('#notfound') |
- self.assertRaises(exceptions.EvaluateException, WillFail) |
- |
- @decorators.Disabled('android', # crbug.com/437065. |
- 'chromeos') # crbug.com/483212. |
- def testScroll(self): |
- if not page_action.IsGestureSourceTypeSupported( |
- self._tab, 'touch'): |
- return |
- |
- self.Navigate('page_with_swipeables.html') |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- |
- action_runner.ScrollElement( |
- selector='#left-right', direction='right', left_start_ratio=0.9) |
- self.assertTrue(action_runner.EvaluateJavaScript( |
- 'document.querySelector("#left-right").scrollLeft') > 75) |
- action_runner.ScrollElement( |
- selector='#top-bottom', direction='down', top_start_ratio=0.9) |
- self.assertTrue(action_runner.EvaluateJavaScript( |
- 'document.querySelector("#top-bottom").scrollTop') > 75) |
- |
- action_runner.ScrollPage(direction='right', left_start_ratio=0.9, |
- distance=100) |
- self.assertTrue(action_runner.EvaluateJavaScript( |
- '(document.scrollingElement || document.body).scrollLeft') > 75) |
- |
- @decorators.Disabled('android', # crbug.com/437065. |
- 'chromeos') # crbug.com/483212. |
- def testSwipe(self): |
- if not page_action.IsGestureSourceTypeSupported( |
- self._tab, 'touch'): |
- return |
- |
- self.Navigate('page_with_swipeables.html') |
- action_runner = action_runner_module.ActionRunner(self._tab, |
- skip_waits=True) |
- |
- action_runner.SwipeElement( |
- selector='#left-right', direction='left', left_start_ratio=0.9) |
- self.assertTrue(action_runner.EvaluateJavaScript( |
- 'document.querySelector("#left-right").scrollLeft') > 75) |
- action_runner.SwipeElement( |
- selector='#top-bottom', direction='up', top_start_ratio=0.9) |
- self.assertTrue(action_runner.EvaluateJavaScript( |
- 'document.querySelector("#top-bottom").scrollTop') > 75) |
- |
- action_runner.SwipePage(direction='left', left_start_ratio=0.9) |
- self.assertTrue(action_runner.EvaluateJavaScript( |
- '(document.scrollingElement || document.body).scrollLeft') > 75) |
- |
- |
-class InteractionTest(unittest.TestCase): |
- |
- def setUp(self): |
- self.mock_action_runner = mock.Mock(action_runner_module.ActionRunner) |
- |
- def testIssuingInteractionRecordCommand(self): |
- with action_runner_module.Interaction( |
- self.mock_action_runner, label='ABC', flags=[]): |
- pass |
- expected_calls = [ |
- mock.call.ExecuteJavaScript('console.time("Interaction.ABC");'), |
- mock.call.ExecuteJavaScript('console.timeEnd("Interaction.ABC");')] |
- self.assertEqual(expected_calls, self.mock_action_runner.mock_calls) |
- |
- def testExceptionRaisedInWithInteraction(self): |
- class FooException(Exception): |
- pass |
- # Test that the Foo exception raised in the with block is propagated to the |
- # caller. |
- with self.assertRaises(FooException): |
- with action_runner_module.Interaction( |
- self.mock_action_runner, label='ABC', flags=[]): |
- raise FooException() |
- |
- # Test that the end console.timeEnd(...) isn't called because exception was |
- # raised. |
- expected_calls = [ |
- mock.call.ExecuteJavaScript('console.time("Interaction.ABC");')] |
- self.assertEqual(expected_calls, self.mock_action_runner.mock_calls) |