| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 """Basic playback test. Checks playback, seek, and replay based on events. | |
| 7 | |
| 8 This test uses the bear videos from the test matrix in h264, vp8, and theora | |
| 9 formats. | |
| 10 """ | |
| 11 import logging | |
| 12 import os | |
| 13 | |
| 14 import pyauto_media | |
| 15 import pyauto | |
| 16 | |
| 17 | |
| 18 # HTML test path; relative to src/chrome/test/data. | |
| 19 _TEST_HTML_PATH = os.path.join('media', 'html', 'media_basic_playback.html') | |
| 20 | |
| 21 # Test videos to play. TODO(dalecurtis): Convert to text matrix parser when we | |
| 22 # have more test videos in the matrix. Code already written, see patch here: | |
| 23 # https://chromiumcodereview.appspot.com/9290008/#ps12 | |
| 24 _TEST_VIDEOS = [ | |
| 25 pyauto.PyUITest.GetFileURLForContentDataPath('media', name) | |
| 26 for name in ['bear.mp4', 'bear.ogv', 'bear.webm', 'bear_silent.mp4', | |
| 27 'bear_silent.ogv', 'bear_silent.webm']] | |
| 28 | |
| 29 # Expected events for the first iteration and every iteration thereafter. | |
| 30 _EXPECTED_EVENTS_0 = [('ended', 2), ('playing', 2), ('seeked', 1), | |
| 31 ('suspend', 1)] | |
| 32 _EXPECTED_EVENTS_n = [('abort', 1), ('emptied', 1)] + _EXPECTED_EVENTS_0 | |
| 33 | |
| 34 | |
| 35 class MediaBasicPlaybackTest(pyauto.PyUITest): | |
| 36 """PyAuto test container. See file doc string for more information.""" | |
| 37 | |
| 38 def testBasicPlaybackMatrix(self): | |
| 39 """Launches HTML test which plays each video until end, seeks, and replays. | |
| 40 | |
| 41 Specifically ensures that after the above sequence of events, the following | |
| 42 are true: | |
| 43 | |
| 44 1. The first video has only 2x playing, 2x ended, and 1x seeked events. | |
| 45 2. Each subsequent video additionally has 1x abort and 1x emptied due to | |
| 46 switching of the src attribute. | |
| 47 3. video.currentTime == video.duration for each video. | |
| 48 | |
| 49 See the HTML file at _TEST_HTML_PATH for more information. | |
| 50 """ | |
| 51 self.NavigateToURL(self.GetFileURLForDataPath(_TEST_HTML_PATH)) | |
| 52 | |
| 53 for i, media in enumerate(_TEST_VIDEOS): | |
| 54 logging.debug('Running basic playback test for %s', media) | |
| 55 | |
| 56 # Block until the test finishes and notifies us. Upon return the value of | |
| 57 # video.currentTime == video.duration is provided. | |
| 58 try: | |
| 59 self.assertTrue(self.ExecuteJavascript("startTest('%s');" % media)) | |
| 60 | |
| 61 # PyAuto has trouble with arrays, so convert to string prior to request. | |
| 62 events = self.GetDOMValue("events.join(',')").split(',') | |
| 63 counts = [(item, events.count(item)) for item in sorted(set(events))] | |
| 64 | |
| 65 # The first loop will not have the abort and emptied events triggered by | |
| 66 # changing the video src. | |
| 67 if (i == 0): | |
| 68 self.assertEqual(counts, _EXPECTED_EVENTS_0) | |
| 69 else: | |
| 70 self.assertEqual(counts, _EXPECTED_EVENTS_n) | |
| 71 except: | |
| 72 logging.debug( | |
| 73 'Test failed with events: %s', self.GetDOMValue("events.join(',')")) | |
| 74 raise | |
| 75 | |
| 76 | |
| 77 if __name__ == '__main__': | |
| 78 pyauto_media.Main() | |
| OLD | NEW |