diff options
Diffstat (limited to 'catapult/telemetry/telemetry/internal/actions/load_media_unittest.py')
-rw-r--r-- | catapult/telemetry/telemetry/internal/actions/load_media_unittest.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/catapult/telemetry/telemetry/internal/actions/load_media_unittest.py b/catapult/telemetry/telemetry/internal/actions/load_media_unittest.py new file mode 100644 index 00000000..cdb7719e --- /dev/null +++ b/catapult/telemetry/telemetry/internal/actions/load_media_unittest.py @@ -0,0 +1,69 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from telemetry import decorators +from telemetry.internal.actions.load_media import LoadMediaAction +from telemetry.testing import tab_test_case +from telemetry.util import js_template + +import py_utils + + +class LoadMediaActionTest(tab_test_case.TabTestCase): + + def setUp(self): + tab_test_case.TabTestCase.setUp(self) + self.Navigate('video_test.html') + + def eventFired(self, selector, event): + # TODO(catapult:#3028): Render in JavaScript method when supported by API. + code = js_template.Render( + 'window.__hasEventCompleted({{ selector }}, {{ event }});', + selector=selector, event=event) + return self._tab.EvaluateJavaScript(code) + + @decorators.Disabled('linux', # crbug.com/418577 + 'chromeos') # crbug.com/632802 + def testAwaitedEventIsConfigurable(self): + """It's possible to wait for different events.""" + action = LoadMediaAction(selector='#video_1', timeout_in_seconds=0.1, + event_to_await='loadedmetadata') + action.WillRunAction(self._tab) + action.RunAction(self._tab) + self.assertTrue(self.eventFired('#video_1', 'loadedmetadata')) + + @decorators.Disabled('linux') # crbug.com/418577 + def testLoadWithNoSelector(self): + """With no selector the first media element is loaded.""" + action = LoadMediaAction(timeout_in_seconds=5) + action.WillRunAction(self._tab) + action.RunAction(self._tab) + self.assertTrue(self.eventFired('#video_1', 'canplaythrough')) + self.assertFalse(self.eventFired('#audio_1', 'canplaythrough')) + + @decorators.Disabled('linux') # crbug.com/418577 + def testLoadWithSelector(self): + """Only the element matching the selector is loaded.""" + action = LoadMediaAction(selector='#audio_1', timeout_in_seconds=5) + action.WillRunAction(self._tab) + action.RunAction(self._tab) + self.assertFalse(self.eventFired('#video_1', 'canplaythrough')) + self.assertTrue(self.eventFired('#audio_1', 'canplaythrough')) + + @decorators.Disabled('linux') # crbug.com/418577 + def testLoadWithAllSelector(self): + """Both elements are loaded with selector='all'.""" + action = LoadMediaAction(selector='all', timeout_in_seconds=5) + action.WillRunAction(self._tab) + action.RunAction(self._tab) + self.assertTrue(self.eventFired('#video_1', 'canplaythrough')) + self.assertTrue(self.eventFired('#audio_1', 'canplaythrough')) + + @decorators.Disabled('linux') # crbug.com/418577 + def testLoadRaisesAnExceptionOnTimeout(self): + """The load action times out if the event does not fire.""" + action = LoadMediaAction(selector='#video_1', timeout_in_seconds=0.1, + event_to_await='a_nonexistent_event') + action.WillRunAction(self._tab) + self.assertRaises(py_utils.TimeoutException, action.RunAction, self._tab) |