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

Side by Side Diff: tools/telemetry/telemetry/page/actions/play_unittest.py

Issue 16854013: Telemetry media_measurement plus play action and tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove media files (submitted separately) 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import os
6
7 from telemetry.core import util
8 from telemetry.page.actions import play
9 from telemetry.unittest import tab_test_case
10
11 AUDIO_1_PLAYING_CHECK = "window.__hasEventCompleted('#audio_1', 'playing');"
12 VIDEO_1_PLAYING_CHECK = "window.__hasEventCompleted('#video_1', 'playing');"
13 VIDEO_1_ENDED_CHECK = "window.__hasEventCompleted('#video_1', 'ended');"
14
15
16 class PlayActionTest(tab_test_case.TabTestCase):
17
18 def setUp(self):
19 tab_test_case.TabTestCase.setUp(self)
20 unittest_data_dir = os.path.join(os.path.dirname(__file__),
21 '..', '..', '..', 'unittest_data')
22 self._browser.SetHTTPServerDirectories(unittest_data_dir)
23 self._tab.Navigate(self._browser.http_server.UrlOf('video_test.html'))
24 self._tab.WaitForDocumentReadyStateToBeComplete()
25
26 def testPlayWithNoSelector(self):
27 """Tests that with no selector Play action plays first video element."""
28 data = {'wait_for_playing': True}
29 action = play.PlayAction(data)
30 action.WillRunAction(None, self._tab)
31 # Both videos not playing before running action.
32 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
33 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
34 action.RunAction(None, self._tab, None)
35 # Assert only first video has played.
36 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
37 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
38
39 def testPlayWithVideoSelector(self):
40 """Tests that Play action plays video element matching selector."""
41 data = {'selector': '#video_1', 'wait_for_playing': True}
42 action = play.PlayAction(data)
43 action.WillRunAction(None, self._tab)
44 # Both videos not playing before running action.
45 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
46 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
47 action.RunAction(None, self._tab, None)
48 # Assert only video matching selector has played.
49 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
50 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
51
52 def testPlayWithAllSelector(self):
53 """Tests that Play action plays all video elements with selector='all'."""
54 data = {'selector': 'all', 'wait_for_playing': True}
55 action = play.PlayAction(data)
56 action.WillRunAction(None, self._tab)
57 # Both videos not playing before running action.
58 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
59 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
60 action.RunAction(None, self._tab, None)
61 # Assert all media elements played.
62 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
63 self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
64
65 def testPlayWaitForPlayTimeout(self):
66 """Tests that wait_for_playing timeouts if video does not play."""
67 data = {'selector': '#video_1',
68 'wait_for_playing': True,
69 'wait_timeout': 1}
70 action = play.PlayAction(data)
71 action.WillRunAction(None, self._tab)
72 self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""')
73 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
74 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab,
75 None)
76
77 def testPlayWaitForEnded(self):
78 """Tests that wait_for_ended waits for video to end."""
79 data = {'selector': '#video_1', 'wait_for_ended': True}
80 action = play.PlayAction(data)
81 action.WillRunAction(None, self._tab)
82 # Assert video not playing before running action.
83 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
84 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
85 action.RunAction(None, self._tab, None)
86 # Assert video ended.
87 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
88
89 def testPlayWithoutWaitForEnded(self):
90 """Tests that wait_for_ended waits for video to end."""
91 data = {'selector': '#video_1', 'wait_for_ended': False}
92 action = play.PlayAction(data)
93 action.WillRunAction(None, self._tab)
94 # Assert video not playing before running action.
95 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
96 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
97 action.RunAction(None, self._tab, None)
98 # Assert video did not end.
99 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
100
101 def testPlayWaitForEndedTimeout(self):
102 """Tests that action raises exception if timeout is reached."""
103 data = {'selector': '#video_1', 'wait_for_ended': True, 'wait_timeout': 1}
104 action = play.PlayAction(data)
105 action.WillRunAction(None, self._tab)
106 # Assert video not playing before running action.
107 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
108 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
109 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab,
110 None)
111 # Assert video did not end.
112 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/page/actions/play.py ('k') | tools/telemetry/unittest_data/video_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698