Commit 51c7ca67 by Adam Palay

address flaky tests by adding time.sleep

parent 13222adf
...@@ -6,7 +6,7 @@ Teams pages. ...@@ -6,7 +6,7 @@ Teams pages.
from common.test.acceptance.pages.lms.course_page import CoursePage from common.test.acceptance.pages.lms.course_page import CoursePage
from common.test.acceptance.pages.lms.discussion import InlineDiscussionPage from common.test.acceptance.pages.lms.discussion import InlineDiscussionPage
from common.test.acceptance.pages.common.paging import PaginatedUIMixin from common.test.acceptance.pages.common.paging import PaginatedUIMixin
from common.test.acceptance.pages.common.utils import confirm_prompt from common.test.acceptance.pages.common.utils import confirm_prompt, click_css
from common.test.acceptance.pages.lms.fields import FieldsMixin from common.test.acceptance.pages.lms.fields import FieldsMixin
...@@ -502,11 +502,7 @@ class TeamPage(CoursePage, PaginatedUIMixin, BreadcrumbsMixin): ...@@ -502,11 +502,7 @@ class TeamPage(CoursePage, PaginatedUIMixin, BreadcrumbsMixin):
def click_leave_team_link(self, remaining_members=0, cancel=False): def click_leave_team_link(self, remaining_members=0, cancel=False):
""" Click on Leave Team link""" """ Click on Leave Team link"""
self.wait_for( click_css(self, '.leave-team-link', require_notification=False)
lambda: self.team_leave_link_present,
description="Leave Team button did not become present"
)
self.q(css='.leave-team-link').first.click()
confirm_prompt(self, cancel, require_notification=False) confirm_prompt(self, cancel, require_notification=False)
if cancel is False: if cancel is False:
......
...@@ -1042,8 +1042,21 @@ class CreateTeamTest(TeamFormActions): ...@@ -1042,8 +1042,21 @@ class CreateTeamTest(TeamFormActions):
Then I should see the error message and highlighted fields. Then I should see the error message and highlighted fields.
""" """
self.verify_and_navigate_to_create_team_page() self.verify_and_navigate_to_create_team_page()
self.team_management_page.submit_form()
# `submit_form` clicks on a button, but that button doesn't always
# have the click event handler registered on it in time. That's why
# this test is flaky. Unfortunately, I don't know of a straightforward
# way to write something that waits for that event handler to be bound
# to the button element. So I used time.sleep as well, even though
# the bok choy docs explicitly ask us not to:
# http://bok-choy.readthedocs.io/en/latest/guidelines.html
# Sorry! For the story to address this anti-pattern, see TNL-5820
time.sleep(0.5)
self.team_management_page.submit_form()
self.team_management_page.wait_for(
lambda: self.team_management_page.validation_message_text,
"Validation message text never loaded."
)
self.assertEqual( self.assertEqual(
self.team_management_page.validation_message_text, self.team_management_page.validation_message_text,
'Check the highlighted fields below and try again.' 'Check the highlighted fields below and try again.'
...@@ -1150,6 +1163,13 @@ class CreateTeamTest(TeamFormActions): ...@@ -1150,6 +1163,13 @@ class CreateTeamTest(TeamFormActions):
self.assertTrue(self.browse_teams_page.get_pagination_header_text().startswith('Showing 0 out of 0 total')) self.assertTrue(self.browse_teams_page.get_pagination_header_text().startswith('Showing 0 out of 0 total'))
self.verify_and_navigate_to_create_team_page() self.verify_and_navigate_to_create_team_page()
# We add a sleep here to allow time for the click event handler to bind
# to the cancel button. Using time.sleep in bok-choy tests is,
# generally, an anti-pattern. So don't copy this :).
# For the story to address this anti-pattern, see TNL-5820
time.sleep(0.5)
self.team_management_page.cancel_team() self.team_management_page.cancel_team()
self.assertTrue(self.browse_teams_page.is_browser_on_page()) self.assertTrue(self.browse_teams_page.is_browser_on_page())
...@@ -1941,6 +1961,13 @@ class TeamPageTest(TeamsTabBase): ...@@ -1941,6 +1961,13 @@ class TeamPageTest(TeamsTabBase):
} }
] ]
with self.assert_events_match_during(event_filter=self.only_team_events, expected_events=expected_events): with self.assert_events_match_during(event_filter=self.only_team_events, expected_events=expected_events):
# I think we're seeing the same problem that we're seeing in
# CreateTeamTest.test_user_can_see_error_message_for_missing_data.
# We click on the "leave team" link after it's loaded, but before
# its JavaScript event handler is added. Adding this sleep gives
# enough time for that event handler to bind to the link. Sorry!
# For the story to address this anti-pattern, see TNL-5820
time.sleep(0.5)
self.team_page.click_leave_team_link() self.team_page.click_leave_team_link()
self.assert_team_details(num_members=0, is_member=False) self.assert_team_details(num_members=0, is_member=False)
self.assertTrue(self.team_page.join_team_button_present) self.assertTrue(self.team_page.join_team_button_present)
......
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