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

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

Issue 19482009: Telemetry media Seek action and metrics. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add base media action class and JS code. Created 7 years, 5 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
« no previous file with comments | « tools/telemetry/telemetry/page/actions/seek.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/page/actions/seek_unittest.py
diff --git a/tools/telemetry/telemetry/page/actions/seek_unittest.py b/tools/telemetry/telemetry/page/actions/seek_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b27baf17a050121a531d55481269e201de23e20
--- /dev/null
+++ b/tools/telemetry/telemetry/page/actions/seek_unittest.py
@@ -0,0 +1,76 @@
+# Copyright (c) 2013 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.core import util
+from telemetry.page.actions import seek
+from telemetry.unittest import tab_test_case
+
+AUDIO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#audio_1", "seeked");'
+VIDEO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#video_1", "seeked");'
+
+
+class SeekActionTest(tab_test_case.TabTestCase):
+
+ def setUp(self):
+ tab_test_case.TabTestCase.setUp(self)
+ self._browser.SetHTTPServerDirectories(util.GetUnittestDataDir())
+ self._tab.Navigate(self._browser.http_server.UrlOf('video_test.html'))
+ self._tab.WaitForDocumentReadyStateToBeComplete()
+
+ def testSeekWithNoSelector(self):
+ """Tests that with no selector Seek action seeks first media element."""
+ data = {'wait_for_seeked': True, 'seek_time': 1}
+ action = seek.SeekAction(data)
+ action.WillRunAction(None, self._tab)
+ action.RunAction(None, self._tab, None)
+ # Assert only first video has played.
+ self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK))
+ self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK))
+
+ def testSeekWithVideoSelector(self):
+ """Tests that Seek action seeks video element matching selector."""
+ data = {'selector': '#video_1', 'wait_for_seeked': True, 'seek_time': 1}
+ action = seek.SeekAction(data)
+ action.WillRunAction(None, self._tab)
+ # Both videos not playing before running action.
+ self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK))
+ self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK))
+ action.RunAction(None, self._tab, None)
+ # Assert only video matching selector has played.
+ self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK))
+ self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK))
+
+ def testSeekWithAllSelector(self):
+ """Tests that Seek action seeks all video elements with selector='all'."""
+ data = {'selector': 'all', 'wait_for_seeked': True, 'seek_time': 1}
+ action = seek.SeekAction(data)
+ action.WillRunAction(None, self._tab)
+ # Both videos not playing before running action.
+ self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK))
+ self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK))
+ action.RunAction(None, self._tab, None)
+ # Assert all media elements played.
+ self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK))
+ self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK))
+
+ def testSeekWaitForSeekTimeout(self):
+ """Tests that wait_for_seeked timeouts if video does not seek."""
+ data = {'selector': '#video_1',
+ 'wait_for_seeked': True,
+ 'wait_timeout': 1,
+ 'seek_time': 1}
+ action = seek.SeekAction(data)
+ action.WillRunAction(None, self._tab)
+ self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""')
+ self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK))
+ self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab,
+ None)
+
+ def testSeekWithoutSeekTime(self):
+ """Tests that seek action fails with no seek time."""
+ data = {'wait_for_seeked': True}
+ action = seek.SeekAction(data)
+ action.WillRunAction(None, self._tab)
+ self.assertRaises(AssertionError, action.RunAction, None, self._tab,
+ None)
« no previous file with comments | « tools/telemetry/telemetry/page/actions/seek.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698