Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / page / actions / play_unittest.py
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
3 # found in the LICENSE file.
4
5 from telemetry import decorators
6 from telemetry.core import util
7 from telemetry.page.actions import play
8 from telemetry.unittest import tab_test_case
9
10 AUDIO_1_PLAYING_CHECK = 'window.__hasEventCompleted("#audio_1", "playing");'
11 VIDEO_1_PLAYING_CHECK = 'window.__hasEventCompleted("#video_1", "playing");'
12 VIDEO_1_ENDED_CHECK = 'window.__hasEventCompleted("#video_1", "ended");'
13
14
15 class PlayActionTest(tab_test_case.TabTestCase):
16
17   def setUp(self):
18     tab_test_case.TabTestCase.setUp(self)
19     self.Navigate('video_test.html')
20
21   @decorators.Disabled('android', 'linux')  # crbug.com/418577
22   def testPlayWithNoSelector(self):
23     """Tests that with no selector Play action plays first video element."""
24     action = play.PlayAction(playing_event_timeout_in_seconds=5)
25     action.WillRunAction(self._tab)
26     # Both videos not playing before running action.
27     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
28     self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
29     action.RunAction(self._tab)
30     # Assert only first video has played.
31     self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
32     self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
33
34   @decorators.Disabled('android', 'linux')  # crbug.com/418577
35   def testPlayWithVideoSelector(self):
36     """Tests that Play action plays video element matching selector."""
37     action = play.PlayAction(selector='#video_1',
38                              playing_event_timeout_in_seconds=5)
39     action.WillRunAction(self._tab)
40     # Both videos not playing before running action.
41     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
42     self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
43     action.RunAction(self._tab)
44     # Assert only video matching selector has played.
45     self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
46     self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
47
48   @decorators.Disabled('android', 'linux')  # crbug.com/418577
49   def testPlayWithAllSelector(self):
50     """Tests that Play action plays all video elements with selector='all'."""
51     action = play.PlayAction(selector='all',
52                              playing_event_timeout_in_seconds=5)
53     action.WillRunAction(self._tab)
54     # Both videos not playing before running action.
55     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
56     self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
57     action.RunAction(self._tab)
58     # Assert all media elements played.
59     self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
60     self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_PLAYING_CHECK))
61
62   # http://crbug.com/273887
63   @decorators.Disabled('linux')  # crbug.com/418577
64   def testPlayWaitForPlayTimeout(self):
65     """Tests that wait_for_playing timeouts if video does not play."""
66     action = play.PlayAction(selector='#video_1',
67                              playing_event_timeout_in_seconds=5)
68     action.WillRunAction(self._tab)
69     self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""')
70     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
71     self.assertRaises(util.TimeoutException, action.RunAction, self._tab)
72
73   @decorators.Disabled('android', 'linux')  # crbug.com/418577
74   def testPlayWaitForEnded(self):
75     """Tests that wait_for_ended waits for video to end."""
76     action = play.PlayAction(selector='#video_1',
77                              ended_event_timeout_in_seconds=5)
78     action.WillRunAction(self._tab)
79     # Assert video not playing before running action.
80     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
81     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
82     action.RunAction(self._tab)
83     # Assert video ended.
84     self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
85
86   @decorators.Disabled('linux')  # crbug.com/418577
87   def testPlayWithoutWaitForEnded(self):
88     """Tests that wait_for_ended waits for video to end."""
89     action = play.PlayAction(selector='#video_1',
90                              ended_event_timeout_in_seconds=0)
91     action.WillRunAction(self._tab)
92     # Assert video not playing before running action.
93     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
94     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
95     action.RunAction(self._tab)
96     # Assert video did not end.
97     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
98
99   @decorators.Disabled('linux')  # crbug.com/418577
100   def testPlayWaitForEndedTimeout(self):
101     """Tests that action raises exception if timeout is reached."""
102     action = play.PlayAction(selector='#video_1',
103                              ended_event_timeout_in_seconds=0.1)
104     action.WillRunAction(self._tab)
105     # Assert video not playing before running action.
106     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_PLAYING_CHECK))
107     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))
108     self.assertRaises(util.TimeoutException, action.RunAction, self._tab)
109     # Assert video did not end.
110     self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_ENDED_CHECK))