Exemplo n.º 1
0
 def check_playback_starts(self, video):
     with self.marionette.using_context("content"):
         self.logger.info(video.test_url)
         try:
             verbose_until(Wait(video, timeout=video.timeout), video, playback_started)
         except TimeoutException as e:
             raise self.failureException(e)
Exemplo n.º 2
0
 def process_ad(self):
     if self.attempt_ad_skip() or self.ad_inactive:
         return
     ad_timeout = (self.search_ad_duration() or 30) + 5
     wait = Wait(self, timeout=ad_timeout, interval=1)
     try:
         self.marionette.log('process_ad: waiting %s s for ad' % ad_timeout)
         verbose_until(wait, self, lambda y: y.ad_ended, "Check if ad ended")
     except TimeoutException:
         self.marionette.log('Waiting for ad to end timed out',
                             level='WARNING')
Exemplo n.º 3
0
 def run_playback(self, video):
     with self.marionette.using_context("content"):
         self.logger.info(video.test_url)
         try:
             verbose_until(
                 Wait(video, interval=video.interval, timeout=video.expected_duration * 1.3 + video.stall_wait_time),
                 video,
                 playback_done,
             )
         except VideoException as e:
             raise self.failureException(e)
Exemplo n.º 4
0
 def test_mse_is_enabled_by_default(self):
     with self.marionette.using_context('content'):
         youtube = YouTubePuppeteer(self.marionette, self.video_urls[0],
                                    timeout=60)
         wait = Wait(youtube,
                     timeout=min(300, youtube.expected_duration * 1.3),
                     interval=1)
         try:
             verbose_until(wait, youtube,
                           lambda y: y.video_src.startswith('mediasource'),
                           "Failed to find 'mediasource' in video src url.")
         except TimeoutException as e:
             raise self.failureException(e)
Exemplo n.º 5
0
    def check_src(self, src_type, url):
        # Why wait to check src until initial ad is done playing?
        # - src attribute in video element is sometimes null during ad playback
        # - many ads still don't use MSE even if main video does
        with self.marionette.using_context('content'):
            youtube = YouTubePuppeteer(self.marionette, url)
            youtube.attempt_ad_skip()
            wait = Wait(youtube,
                        timeout=min(self.max_timeout,
                                    youtube.player_duration * 1.3),
                        interval=1)

            def cond(y):
                return y.video_src.startswith(src_type)

            verbose_until(wait, youtube, cond)
Exemplo n.º 6
0
 def __init__(self, marionette, url, **kwargs):
     self.player = None
     super(YouTubePuppeteer,
           self).__init__(marionette, url,
                          video_selector='#movie_player video',
                          **kwargs)
     wait = Wait(self.marionette, timeout=30)
     with self.marionette.using_context('content'):
         verbose_until(wait, self,
                       expected.element_present(By.ID, 'movie_player'))
         self.player = self.marionette.find_element(By.ID, 'movie_player')
         self.marionette.execute_script("log('#movie_player "
                                        "element obtained');")
     # When an ad is playing, self.player_duration indicates the duration
     # of the spliced-in ad stream, not the duration of the main video, so
     # we attempt to skip the ad first.
     for attempt in range(5):
         sleep(1)
         self.process_ad()
         if (self.ad_inactive and self.duration and not
                 self.player_buffering):
             break
     self.update_expected_duration()
Exemplo n.º 7
0
 def __init__(
     self, marionette, url, video_selector="video", interval=1, set_duration=0, stall_wait_time=0, timeout=60
 ):
     self.marionette = marionette
     self.test_url = url
     self.interval = interval
     self.stall_wait_time = stall_wait_time
     self.timeout = timeout
     self._set_duration = set_duration
     self.video = None
     self.expected_duration = 0
     self._start_time = 0
     self._start_wall_time = 0
     wait = Wait(self.marionette, timeout=self.timeout)
     with self.marionette.using_context("content"):
         self.marionette.navigate(self.test_url)
         self.marionette.execute_script(
             """
             log('URL: {0}');""".format(
                 self.test_url
             )
         )
         verbose_until(wait, self, expected.element_present(By.TAG_NAME, "video"))
         videos_found = self.marionette.find_elements(By.CSS_SELECTOR, video_selector)
         if len(videos_found) > 1:
             self.marionette.log(type(self).__name__ + ": multiple video " "elements found. " "Using first.")
         if len(videos_found) <= 0:
             self.marionette.log(type(self).__name__ + ": no video " "elements found.")
             return
         self.video = videos_found[0]
         self.marionette.execute_script("log('video element obtained');")
         # To get an accurate expected_duration, playback must have started
         wait = Wait(self, timeout=self.timeout)
         verbose_until(wait, self, lambda v: v.current_time > 0, "Check if video current_time > 0")
         self._start_time = self.current_time
         self._start_wall_time = clock()
         self.update_expected_duration()
Exemplo n.º 8
0
    def test_video_playing_in_one_tab(self):
        with self.marionette.using_context('content'):
            for url in self.video_urls:
                self.logger.info(url)
                youtube = YouTubePuppeteer(self.marionette, url)
                self.logger.info('Expected duration: %s' %
                                 youtube.expected_duration)
                youtube.deactivate_autoplay()

                final_piece = 60
                try:
                    time_left = wait_for_almost_done(youtube,
                                                     final_piece=final_piece)
                except VideoException as e:
                    raise self.failureException(e)
                duration = abs(youtube.expected_duration) + 1
                if duration > 1:
                    self.logger.info('Almost done: %s - %s seconds left.' %
                                     (youtube.movie_id, time_left))
                    if time_left > final_piece:
                        self.marionette.log('time_left greater than '
                                            'final_piece - %s' % time_left,
                                            level='WARNING')
                        self.save_screenshot()
                else:
                    self.marionette.log('Duration close to 0 - %s' % youtube,
                                        level='WARNING')
                    self.save_screenshot()
                try:
                    verbose_until(Wait(youtube,
                                       timeout=max(100, time_left) * 1.3,
                                       interval=1),
                                  youtube,
                                  playback_done)
                except TimeoutException as e:
                    raise self.failureException(e)