Skip to content

Commit 88b13ae

Browse files
committed
[tests] TestAutocompleteFilter: added more waits
This should fix flaky tests in TestAutocompleteFilter.
1 parent 17dce6d commit 88b13ae

File tree

1 file changed

+61
-11
lines changed

1 file changed

+61
-11
lines changed

tests/test_project/tests/test_selenium.py

Lines changed: 61 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -729,18 +729,47 @@ def test_autocomplete_shelf_filter(self):
729729
),
730730
self.web_driver.page_source,
731731
)
732-
self.web_driver.find_element(By.CSS_SELECTOR, filter_css_selector).click()
733-
self.web_driver.find_element(By.CSS_SELECTOR, '.select2-container--open')
734-
WebDriverWait(self.web_driver, 10).until(
735-
EC.presence_of_element_located(
736-
(By.XPATH, f'//*[contains(text(), "{horror_shelf.name}")]')
732+
try:
733+
WebDriverWait(self.web_driver, 2).until(
734+
EC.presence_of_element_located((By.CSS_SELECTOR, filter_css_selector))
737735
)
738-
)
736+
except TimeoutException:
737+
self.fail(f'{filter_css_selector} not available as expected')
738+
else:
739+
self.web_driver.find_element(By.CSS_SELECTOR, filter_css_selector).click()
740+
try:
741+
WebDriverWait(self.web_driver, 2).until(
742+
EC.presence_of_element_located(
743+
(By.CSS_SELECTOR, '.select2-container--open')
744+
)
745+
)
746+
except TimeoutException:
747+
self.fail('select2 widget did not open as expected')
748+
try:
749+
WebDriverWait(self.web_driver, 2).until(
750+
EC.presence_of_element_located(
751+
(By.XPATH, f'//*[contains(text(), "{horror_shelf.name}")]')
752+
)
753+
)
754+
except TimeoutException:
755+
self.fail(f'"{horror_shelf.name}" not found')
739756
self.assertIn(horror_shelf.name, self.web_driver.page_source)
740757
self.assertIn(factual_shelf.name, self.web_driver.page_source)
741-
self.web_driver.find_element(By.XPATH, filter_option_xpath).click()
758+
try:
759+
WebDriverWait(self.web_driver, 2).until(
760+
EC.presence_of_element_located((By.XPATH, filter_option_xpath))
761+
)
762+
except TimeoutException:
763+
self.fail(f'"{filter_option_xpath}" not found')
764+
else:
765+
self.web_driver.find_element(By.XPATH, filter_option_xpath).click()
742766
self.assertIn(str(factual_shelf.id), self.web_driver.current_url)
743-
self.web_driver.find_element(By.CSS_SELECTOR, filter_css_selector)
767+
try:
768+
WebDriverWait(self.web_driver, 2).until(
769+
EC.presence_of_element_located((By.CSS_SELECTOR, filter_css_selector))
770+
)
771+
except TimeoutException:
772+
self.fail(f'"{filter_css_selector}" not found')
744773
self.assertNotIn(horror_shelf.name, self.web_driver.page_source)
745774
self.assertIn(factual_shelf.name, self.web_driver.page_source)
746775
with self.assertRaises(NoSuchElementException):
@@ -776,11 +805,32 @@ def test_autocomplete_owner_filter(self):
776805
),
777806
self.web_driver.page_source,
778807
)
779-
self.web_driver.find_element(By.CSS_SELECTOR, filter_css_selector).click()
780-
self.web_driver.find_element(By.CSS_SELECTOR, '.select2-container--open')
808+
try:
809+
WebDriverWait(self.web_driver, 2).until(
810+
EC.presence_of_element_located((By.CSS_SELECTOR, filter_css_selector))
811+
)
812+
except TimeoutException:
813+
self.fail(f'{filter_css_selector} not available as expected')
814+
else:
815+
self.web_driver.find_element(By.CSS_SELECTOR, filter_css_selector).click()
816+
try:
817+
WebDriverWait(self.web_driver, 2).until(
818+
EC.presence_of_element_located(
819+
(By.CSS_SELECTOR, '.select2-container--open')
820+
)
821+
)
822+
except TimeoutException:
823+
self.fail('select2 widget did not open as expected')
781824
self.assertIn(self.admin.username, self.web_driver.page_source)
782825
self.assertIn(user.username, self.web_driver.page_source)
783-
self.web_driver.find_element(By.XPATH, filter_null_option_xpath).click()
826+
try:
827+
WebDriverWait(self.web_driver, 2).until(
828+
EC.presence_of_element_located((By.XPATH, filter_null_option_xpath))
829+
)
830+
except TimeoutException:
831+
self.fail(f'{filter_null_option_xpath} not available as expected')
832+
else:
833+
self.web_driver.find_element(By.XPATH, filter_null_option_xpath).click()
784834
self._get_filter_button().click()
785835
self.assertIn('owner_id__isnull=true', self.web_driver.current_url)
786836
with self.assertRaises(NoSuchElementException):

0 commit comments

Comments
 (0)