Commit ec6ea40b by Ben Patterson

Flaky test fix.

Sadly, I introduce a time.sleep here. The hovering over the elements is
particularly brittle, and there is no obvious signal for when the page is
done rendering. I'm putting a sleep in here so we can more-quickly support
Firefox 45.
parent 0795e514
...@@ -629,14 +629,19 @@ class VideoPage(PageObject): ...@@ -629,14 +629,19 @@ class VideoPage(PageObject):
""" """
self.wait_for_ajax() self.wait_for_ajax()
# Yes, I feel unclean putting this in:
time.sleep(1)
# mouse over to transcript button # mouse over to transcript button
cc_button_selector = self.get_element_selector(VIDEO_BUTTONS["transcript"]) cc_button_selector = self.get_element_selector(VIDEO_BUTTONS["transcript_button"])
element_to_hover_over = self.q(css=cc_button_selector).results[0] element_to_hover_over = self.q(css=cc_button_selector).results[0]
ActionChains(self.browser).move_to_element(element_to_hover_over).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 = VIDEO_MENUS["language"] + ' li[data-lang-code="{code}"]'.format(code=code)
language_selector = self.get_element_selector(language_selector) language_selector = self.get_element_selector(language_selector)
self.wait_for_element_visibility(language_selector, 'language menu is visible') self.wait_for_element_visibility(language_selector, 'language menu is visible')
hover_target = self.q(css=language_selector).results[0]
ActionChains(self.browser).move_to_element(hover_target).perform()
self.q(css=language_selector).first.click() self.q(css=language_selector).first.click()
# Sometimes language is not clicked correctly. So, if the current language code # Sometimes language is not clicked correctly. So, if the current language code
...@@ -887,7 +892,7 @@ class VideoPage(PageObject): ...@@ -887,7 +892,7 @@ class VideoPage(PageObject):
Wait until captions rendered completely. Wait until captions rendered completely.
""" """
captions_rendered_selector = self.get_element_selector(CSS_CLASS_NAMES['captions_rendered']) captions_rendered_selector = self.get_element_selector(CSS_CLASS_NAMES['captions_rendered'])
self.wait_for_element_presence(captions_rendered_selector, 'Captions Rendered') self.wait_for_element_visibility(captions_rendered_selector, 'Captions Rendered')
def wait_for_closed_captions(self): def wait_for_closed_captions(self):
""" """
......
...@@ -1014,6 +1014,7 @@ class Html5VideoTest(VideoBaseTest): ...@@ -1014,6 +1014,7 @@ class Html5VideoTest(VideoBaseTest):
unicode_text = "好 各位同学".decode('utf-8') unicode_text = "好 各位同学".decode('utf-8')
self.assertTrue(self.video.downloaded_transcript_contains_text('srt', unicode_text)) self.assertTrue(self.video.downloaded_transcript_contains_text('srt', unicode_text))
@flaky(max_runs=10, min_passes=10)
def test_download_button_two_transcript_languages(self): def test_download_button_two_transcript_languages(self):
""" """
Scenario: Download button works correctly for multiple transcript languages in HTML5 mode Scenario: Download button works correctly for multiple transcript languages in HTML5 mode
...@@ -1030,11 +1031,14 @@ class Html5VideoTest(VideoBaseTest): ...@@ -1030,11 +1031,14 @@ class Html5VideoTest(VideoBaseTest):
self.metadata = self.metadata_for_mode('html5', additional_data=data) self.metadata = self.metadata_for_mode('html5', additional_data=data)
# go to video # go to video
# from nose.tools import set_trace; set_trace()
self.navigate_to_video() self.navigate_to_video()
# check if "Welcome to edX." text in the captions # check if "Welcome to edX." text in the captions
self.assertIn('Welcome to edX.', self.video.captions_text) self.assertIn('Welcome to edX.', self.video.captions_text)
self.video.wait_for_element_visibility('.transcript-end', 'Transcript has loaded')
# check if we can download transcript in "srt" format that has text "Welcome to edX." # check if we can download transcript in "srt" format that has text "Welcome to edX."
self.assertTrue(self.video.downloaded_transcript_contains_text('srt', 'Welcome to edX.')) self.assertTrue(self.video.downloaded_transcript_contains_text('srt', 'Welcome to edX.'))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment