address flaky tests by adding time.sleep
This commit is contained in:
@@ -6,7 +6,7 @@ Teams pages.
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
from common.test.acceptance.pages.lms.discussion import InlineDiscussionPage
|
||||
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
|
||||
|
||||
@@ -502,11 +502,7 @@ class TeamPage(CoursePage, PaginatedUIMixin, BreadcrumbsMixin):
|
||||
|
||||
def click_leave_team_link(self, remaining_members=0, cancel=False):
|
||||
""" Click on Leave Team link"""
|
||||
self.wait_for(
|
||||
lambda: self.team_leave_link_present,
|
||||
description="Leave Team button did not become present"
|
||||
)
|
||||
self.q(css='.leave-team-link').first.click()
|
||||
click_css(self, '.leave-team-link', require_notification=False)
|
||||
confirm_prompt(self, cancel, require_notification=False)
|
||||
|
||||
if cancel is False:
|
||||
|
||||
@@ -1042,8 +1042,21 @@ class CreateTeamTest(TeamFormActions):
|
||||
Then I should see the error message and highlighted fields.
|
||||
"""
|
||||
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.team_management_page.validation_message_text,
|
||||
'Check the highlighted fields below and try again.'
|
||||
@@ -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.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.assertTrue(self.browse_teams_page.is_browser_on_page())
|
||||
@@ -1941,6 +1961,13 @@ class TeamPageTest(TeamsTabBase):
|
||||
}
|
||||
]
|
||||
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.assert_team_details(num_members=0, is_member=False)
|
||||
self.assertTrue(self.team_page.join_team_button_present)
|
||||
|
||||
Reference in New Issue
Block a user