OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 from telemetry.core import util | 5 from telemetry.core import util |
6 from telemetry.page.actions import play | 6 from telemetry.page.actions import play |
7 from telemetry.unittest import tab_test_case | 7 from telemetry.unittest import tab_test_case |
8 from telemetry.unittest import test | |
9 | 8 |
10 AUDIO_1_PLAYING_CHECK = 'window.__hasEventCompleted("#audio_1", "playing");' | 9 AUDIO_1_PLAYING_CHECK = 'window.__hasEventCompleted("#audio_1", "playing");' |
11 VIDEO_1_PLAYING_CHECK = 'window.__hasEventCompleted("#video_1", "playing");' | 10 VIDEO_1_PLAYING_CHECK = 'window.__hasEventCompleted("#video_1", "playing");' |
12 VIDEO_1_ENDED_CHECK = 'window.__hasEventCompleted("#video_1", "ended");' | 11 VIDEO_1_ENDED_CHECK = 'window.__hasEventCompleted("#video_1", "ended");' |
13 | 12 |
14 | 13 |
15 class PlayActionTest(tab_test_case.TabTestCase): | 14 class PlayActionTest(tab_test_case.TabTestCase): |
16 | 15 |
17 def setUp(self): | 16 def setUp(self): |
18 tab_test_case.TabTestCase.setUp(self) | 17 tab_test_case.TabTestCase.setUp(self) |
19 self._browser.SetHTTPServerDirectories(util.GetUnittestDataDir()) | 18 self.Navigate('video_test.html') |
20 self._tab.Navigate(self._browser.http_server.UrlOf('video_test.html')) | |
21 self._tab.WaitForDocumentReadyStateToBeComplete() | |
22 | 19 |
23 @test.Disabled('chromeos') | |
24 def testPlayWithNoSelector(self): | 20 def testPlayWithNoSelector(self): |
25 """Tests that with no selector Play action plays first video element.""" | 21 """Tests that with no selector Play action plays first video element.""" |
26 data = {'wait_for_playing': True} | 22 data = {'wait_for_playing': True} |
27 action = play.PlayAction(data) | 23 action = play.PlayAction(data) |
28 action.WillRunAction(None, self._tab) | 24 action.WillRunAction(None, self._tab) |
29 # Both videos not playing before running action. | 25 # Both videos not playing before running action. |
30 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 26 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
31 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) | 27 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) |
32 action.RunAction(None, self._tab, None) | 28 action.RunAction(None, self._tab, None) |
33 # Assert only first video has played. | 29 # Assert only first video has played. |
34 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 30 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
35 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) | 31 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) |
36 | 32 |
37 @test.Disabled('chromeos') | |
38 def testPlayWithVideoSelector(self): | 33 def testPlayWithVideoSelector(self): |
39 """Tests that Play action plays video element matching selector.""" | 34 """Tests that Play action plays video element matching selector.""" |
40 data = {'selector': '#video_1', 'wait_for_playing': True} | 35 data = {'selector': '#video_1', 'wait_for_playing': True} |
41 action = play.PlayAction(data) | 36 action = play.PlayAction(data) |
42 action.WillRunAction(None, self._tab) | 37 action.WillRunAction(None, self._tab) |
43 # Both videos not playing before running action. | 38 # Both videos not playing before running action. |
44 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 39 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
45 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) | 40 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) |
46 action.RunAction(None, self._tab, None) | 41 action.RunAction(None, self._tab, None) |
47 # Assert only video matching selector has played. | 42 # Assert only video matching selector has played. |
48 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 43 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
49 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) | 44 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) |
50 | 45 |
51 @test.Disabled('chromeos') | |
52 def testPlayWithAllSelector(self): | 46 def testPlayWithAllSelector(self): |
53 """Tests that Play action plays all video elements with selector='all'.""" | 47 """Tests that Play action plays all video elements with selector='all'.""" |
54 data = {'selector': 'all', 'wait_for_playing': True} | 48 data = {'selector': 'all', 'wait_for_playing': True} |
55 action = play.PlayAction(data) | 49 action = play.PlayAction(data) |
56 action.WillRunAction(None, self._tab) | 50 action.WillRunAction(None, self._tab) |
57 # Both videos not playing before running action. | 51 # Both videos not playing before running action. |
58 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 52 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
59 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) | 53 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) |
60 action.RunAction(None, self._tab, None) | 54 action.RunAction(None, self._tab, None) |
61 # Assert all media elements played. | 55 # Assert all media elements played. |
62 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 56 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
63 self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) | 57 self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK)) |
64 | 58 |
65 # http://crbug.com/273887 | 59 # http://crbug.com/273887 |
66 @test.Disabled('chromeos') | |
67 def testPlayWaitForPlayTimeout(self): | 60 def testPlayWaitForPlayTimeout(self): |
68 """Tests that wait_for_playing timeouts if video does not play.""" | 61 """Tests that wait_for_playing timeouts if video does not play.""" |
69 data = {'selector': '#video_1', | 62 data = {'selector': '#video_1', |
70 'wait_for_playing': True, | 63 'wait_for_playing': True, |
71 'wait_timeout': 1} | 64 'wait_timeout': 1} |
72 action = play.PlayAction(data) | 65 action = play.PlayAction(data) |
73 action.WillRunAction(None, self._tab) | 66 action.WillRunAction(None, self._tab) |
74 self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""') | 67 self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""') |
75 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 68 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
76 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab, | 69 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab, |
77 None) | 70 None) |
78 | 71 |
79 @test.Disabled('chromeos') | |
80 def testPlayWaitForEnded(self): | 72 def testPlayWaitForEnded(self): |
81 """Tests that wait_for_ended waits for video to end.""" | 73 """Tests that wait_for_ended waits for video to end.""" |
82 data = {'selector': '#video_1', 'wait_for_ended': True} | 74 data = {'selector': '#video_1', 'wait_for_ended': True} |
83 action = play.PlayAction(data) | 75 action = play.PlayAction(data) |
84 action.WillRunAction(None, self._tab) | 76 action.WillRunAction(None, self._tab) |
85 # Assert video not playing before running action. | 77 # Assert video not playing before running action. |
86 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 78 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
87 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) | 79 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) |
88 action.RunAction(None, self._tab, None) | 80 action.RunAction(None, self._tab, None) |
89 # Assert video ended. | 81 # Assert video ended. |
90 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) | 82 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) |
91 | 83 |
92 @test.Disabled('chromeos') | |
93 def testPlayWithoutWaitForEnded(self): | 84 def testPlayWithoutWaitForEnded(self): |
94 """Tests that wait_for_ended waits for video to end.""" | 85 """Tests that wait_for_ended waits for video to end.""" |
95 data = {'selector': '#video_1', 'wait_for_ended': False} | 86 data = {'selector': '#video_1', 'wait_for_ended': False} |
96 action = play.PlayAction(data) | 87 action = play.PlayAction(data) |
97 action.WillRunAction(None, self._tab) | 88 action.WillRunAction(None, self._tab) |
98 # Assert video not playing before running action. | 89 # Assert video not playing before running action. |
99 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 90 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
100 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) | 91 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) |
101 action.RunAction(None, self._tab, None) | 92 action.RunAction(None, self._tab, None) |
102 # Assert video did not end. | 93 # Assert video did not end. |
103 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) | 94 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) |
104 | 95 |
105 @test.Disabled('chromeos') | |
106 def testPlayWaitForEndedTimeout(self): | 96 def testPlayWaitForEndedTimeout(self): |
107 """Tests that action raises exception if timeout is reached.""" | 97 """Tests that action raises exception if timeout is reached.""" |
108 data = {'selector': '#video_1', 'wait_for_ended': True, 'wait_timeout': 1} | 98 data = {'selector': '#video_1', 'wait_for_ended': True, 'wait_timeout': 1} |
109 action = play.PlayAction(data) | 99 action = play.PlayAction(data) |
110 action.WillRunAction(None, self._tab) | 100 action.WillRunAction(None, self._tab) |
111 # Assert video not playing before running action. | 101 # Assert video not playing before running action. |
112 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) | 102 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK)) |
113 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) | 103 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) |
114 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab, | 104 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab, |
115 None) | 105 None) |
116 # Assert video did not end. | 106 # Assert video did not end. |
117 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) | 107 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK)) |
OLD | NEW |