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 seek | 6 from telemetry.page.actions import seek |
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 | 9 |
11 AUDIO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#audio_1", "seeked");' | 10 AUDIO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#audio_1", "seeked");' |
12 VIDEO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#video_1", "seeked");' | 11 VIDEO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#video_1", "seeked");' |
13 | 12 |
14 | 13 |
15 class SeekActionTest(tab_test_case.TabTestCase): | 14 class SeekActionTest(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 testSeekWithNoSelector(self): | 20 def testSeekWithNoSelector(self): |
25 """Tests that with no selector Seek action seeks first media element.""" | 21 """Tests that with no selector Seek action seeks first media element.""" |
26 data = {'wait_for_seeked': True, 'seek_time': 1} | 22 data = {'wait_for_seeked': True, 'seek_time': 1} |
27 action = seek.SeekAction(data) | 23 action = seek.SeekAction(data) |
28 action.WillRunAction(None, self._tab) | 24 action.WillRunAction(None, self._tab) |
29 action.RunAction(None, self._tab, None) | 25 action.RunAction(None, self._tab, None) |
30 # Assert only first video has played. | 26 # Assert only first video has played. |
31 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 27 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
32 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 28 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
33 | 29 |
34 @test.Disabled('chromeos') | |
35 def testSeekWithVideoSelector(self): | 30 def testSeekWithVideoSelector(self): |
36 """Tests that Seek action seeks video element matching selector.""" | 31 """Tests that Seek action seeks video element matching selector.""" |
37 data = {'selector': '#video_1', 'wait_for_seeked': True, 'seek_time': 1} | 32 data = {'selector': '#video_1', 'wait_for_seeked': True, 'seek_time': 1} |
38 action = seek.SeekAction(data) | 33 action = seek.SeekAction(data) |
39 action.WillRunAction(None, self._tab) | 34 action.WillRunAction(None, self._tab) |
40 # Both videos not playing before running action. | 35 # Both videos not playing before running action. |
41 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 36 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
42 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 37 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
43 action.RunAction(None, self._tab, None) | 38 action.RunAction(None, self._tab, None) |
44 # Assert only video matching selector has played. | 39 # Assert only video matching selector has played. |
45 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 40 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
46 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 41 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
47 | 42 |
48 @test.Disabled('chromeos') | |
49 def testSeekWithAllSelector(self): | 43 def testSeekWithAllSelector(self): |
50 """Tests that Seek action seeks all video elements with selector='all'.""" | 44 """Tests that Seek action seeks all video elements with selector='all'.""" |
51 data = {'selector': 'all', 'wait_for_seeked': True, 'seek_time': 1} | 45 data = {'selector': 'all', 'wait_for_seeked': True, 'seek_time': 1} |
52 action = seek.SeekAction(data) | 46 action = seek.SeekAction(data) |
53 action.WillRunAction(None, self._tab) | 47 action.WillRunAction(None, self._tab) |
54 # Both videos not playing before running action. | 48 # Both videos not playing before running action. |
55 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 49 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
56 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 50 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
57 action.RunAction(None, self._tab, None) | 51 action.RunAction(None, self._tab, None) |
58 # Assert all media elements played. | 52 # Assert all media elements played. |
59 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 53 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
60 self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 54 self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
61 | 55 |
62 @test.Disabled('chromeos') # http://crbug.com/273887 | |
63 def testSeekWaitForSeekTimeout(self): | 56 def testSeekWaitForSeekTimeout(self): |
64 """Tests that wait_for_seeked timeouts if video does not seek.""" | 57 """Tests that wait_for_seeked timeouts if video does not seek.""" |
65 data = {'selector': '#video_1', | 58 data = {'selector': '#video_1', |
66 'wait_for_seeked': True, | 59 'wait_for_seeked': True, |
67 'wait_timeout': 1, | 60 'wait_timeout': 1, |
68 'seek_time': 1} | 61 'seek_time': 1} |
69 action = seek.SeekAction(data) | 62 action = seek.SeekAction(data) |
70 action.WillRunAction(None, self._tab) | 63 action.WillRunAction(None, self._tab) |
71 self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""') | 64 self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""') |
72 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 65 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
73 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab, | 66 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab, |
74 None) | 67 None) |
75 | 68 |
76 def testSeekWithoutSeekTime(self): | 69 def testSeekWithoutSeekTime(self): |
77 """Tests that seek action fails with no seek time.""" | 70 """Tests that seek action fails with no seek time.""" |
78 data = {'wait_for_seeked': True} | 71 data = {'wait_for_seeked': True} |
79 action = seek.SeekAction(data) | 72 action = seek.SeekAction(data) |
80 action.WillRunAction(None, self._tab) | 73 action.WillRunAction(None, self._tab) |
81 self.assertRaises(AssertionError, action.RunAction, None, self._tab, | 74 self.assertRaises(AssertionError, action.RunAction, None, self._tab, |
82 None) | 75 None) |
OLD | NEW |