diff --git a/common/test/acceptance/pages/lms/video/video.py b/common/test/acceptance/pages/lms/video/video.py index 464e74bff0..39e3063322 100644 --- a/common/test/acceptance/pages/lms/video/video.py +++ b/common/test/acceptance/pages/lms/video/video.py @@ -573,6 +573,10 @@ class VideoPage(PageObject): return True + def current_language(self, video_display_name=None): + selector = self.get_element_selector(video_display_name, VIDEO_MENUS["language"] + ' li.is-active') + return self.q(css=selector).first.attrs('data-lang-code')[0] + def select_language(self, code, video_display_name=None): """ Select captions for language `code`. @@ -587,13 +591,18 @@ class VideoPage(PageObject): # mouse over to CC button cc_button_selector = self.get_element_selector(video_display_name, VIDEO_BUTTONS["CC"]) element_to_hover_over = self.q(css=cc_button_selector).results[0] - hover = ActionChains(self.browser).move_to_element(element_to_hover_over) - hover.perform() + ActionChains(self.browser).move_to_element(element_to_hover_over).perform() language_selector = VIDEO_MENUS["language"] + ' li[data-lang-code="{code}"]'.format(code=code) language_selector = self.get_element_selector(video_display_name, language_selector) + self._wait_for_element_visibility(language_selector, 'language menu is visible') self.q(css=language_selector).first.click() + # Sometimes language is not clicked correctly. So, if the current language code + # differs form the expected, we try to change it again. + if self.current_language(video_display_name) != code: + self.select_language(code, video_display_name) + if 'is-active' != self.q(css=language_selector).attrs('class')[0]: return False diff --git a/common/test/acceptance/tests/video/test_video_module.py b/common/test/acceptance/tests/video/test_video_module.py index 0ed91365d6..b098f39db9 100644 --- a/common/test/acceptance/tests/video/test_video_module.py +++ b/common/test/acceptance/tests/video/test_video_module.py @@ -18,7 +18,6 @@ from ...fixtures.course import CourseFixture, XBlockFixtureDesc from ..helpers import skip_if_browser - VIDEO_SOURCE_PORT = 8777 YOUTUBE_STUB_PORT = 9080 YOUTUBE_STUB_URL = 'http://127.0.0.1:{}/'.format(YOUTUBE_STUB_PORT) @@ -498,7 +497,13 @@ class YouTubeVideoTest(VideoBaseTest): # menu "download_transcript" doesn't exist self.assertFalse(self.video.is_menu_exist('download_transcript')) - @skip("Consistently failing on master BLD-1190 Disabled 11 July 2014") + def _verify_caption_text(self, text): + self.video._wait_for( + lambda: (text in self.video.captions_text()), + u'Captions contain "{}" text'.format(text), + timeout=5 + ) + def test_video_language_menu_working(self): """ Scenario: Language menu works correctly in Video component @@ -526,10 +531,10 @@ class YouTubeVideoTest(VideoBaseTest): self.video.select_language('zh') unicode_text = "好 各位同学".decode('utf-8') - self.assertIn(unicode_text, self.video.captions_text()) + self._verify_caption_text(unicode_text) self.video.select_language('en') - self.assertIn('Hi, welcome to Edx.', self.video.captions_text()) + self._verify_caption_text('Hi, welcome to Edx.') def test_multiple_videos_in_sequentials_load_and_work(self): """