loop_unittest.py revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
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 5from telemetry import decorators 6from telemetry.core import util 7from telemetry.page.actions import loop 8from telemetry.unittest import tab_test_case 9 10 11AUDIO_1_LOOP_CHECK = 'window.__hasEventCompleted("#audio_1", "loop");' 12VIDEO_1_LOOP_CHECK = 'window.__hasEventCompleted("#video_1", "loop");' 13 14 15class LoopActionTest(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') 22 def testLoopWithNoSelector(self): 23 """Tests that with no selector Loop action loops first media element.""" 24 data = {'selector': '#video_1', 'loop_count': 2} 25 action = loop.LoopAction(data) 26 action.WillRunAction(None, self._tab) 27 action.RunAction(None, self._tab) 28 # Assert only first video has played. 29 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_LOOP_CHECK)) 30 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_LOOP_CHECK)) 31 32 @decorators.Disabled('android') 33 def testLoopWithAllSelector(self): 34 """Tests that Loop action loops all video elements with selector='all'.""" 35 data = {'selector': 'all', 'loop_count': 2} 36 action = loop.LoopAction(data) 37 action.WillRunAction(None, self._tab) 38 # Both videos not playing before running action. 39 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_LOOP_CHECK)) 40 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_LOOP_CHECK)) 41 action.RunAction(None, self._tab) 42 # Assert all media elements played. 43 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_LOOP_CHECK)) 44 self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_LOOP_CHECK)) 45 46 @decorators.Disabled('android') 47 def testLoopWaitForLoopTimeout(self): 48 """Tests that wait_for_loop timeouts if video does not loop.""" 49 data = {'selector': '#video_1', 50 'wait_timeout': 1, 51 'loop_count': 2} 52 action = loop.LoopAction(data) 53 action.WillRunAction(None, self._tab) 54 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_LOOP_CHECK)) 55 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab) 56 57 @decorators.Disabled('android') 58 def testLoopWithoutLoopCount(self): 59 """Tests that loop action fails with no loop count.""" 60 data = {} 61 action = loop.LoopAction(data) 62 action.WillRunAction(None, self._tab) 63 self.assertRaises(AssertionError, action.RunAction, None, self._tab) 64