Made a couple of selenium tests wait for page loaded
The admin_widgets tests were issuing click() to the browser but didn't wait for the effects of those clicks. This caused the resulting request to be processed concurrently with the test case. When using in-memory SQLite this caused weird failures. Also added wait_page_loaded() to admin selenium tests for code reuse. Fixed #19856
This commit is contained in:
parent
4e36e0a8b3
commit
50677b29af
|
@ -41,6 +41,20 @@ class AdminSeleniumWebDriverTestCase(LiveServerTestCase):
|
|||
timeout
|
||||
)
|
||||
|
||||
def wait_page_loaded(self):
|
||||
"""
|
||||
Block until page has started to load.
|
||||
"""
|
||||
from selenium.common.exceptions import TimeoutException
|
||||
try:
|
||||
# Wait for the next page to be loaded
|
||||
self.wait_loaded_tag('body')
|
||||
except TimeoutException:
|
||||
# IE7 occasionnally returns an error "Internet Explorer cannot
|
||||
# display the webpage" and doesn't load the next page. We just
|
||||
# ignore it.
|
||||
pass
|
||||
|
||||
def admin_login(self, username, password, login_url='/admin/'):
|
||||
"""
|
||||
Helper function to log into the admin.
|
||||
|
@ -53,8 +67,7 @@ class AdminSeleniumWebDriverTestCase(LiveServerTestCase):
|
|||
login_text = _('Log in')
|
||||
self.selenium.find_element_by_xpath(
|
||||
'//input[@value="%s"]' % login_text).click()
|
||||
# Wait for the next page to be loaded.
|
||||
self.wait_loaded_tag('body')
|
||||
self.wait_page_loaded()
|
||||
|
||||
def get_css_value(self, selector, attribute):
|
||||
"""
|
||||
|
|
|
@ -546,15 +546,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
self.selenium.find_element_by_name('profile_set-2-last_name').send_keys('2 last name 2')
|
||||
|
||||
self.selenium.find_element_by_xpath('//input[@value="Save"]').click()
|
||||
|
||||
try:
|
||||
# Wait for the next page to be loaded.
|
||||
self.wait_loaded_tag('body')
|
||||
except TimeoutException:
|
||||
# IE7 occasionnally returns an error "Internet Explorer cannot
|
||||
# display the webpage" and doesn't load the next page. We just
|
||||
# ignore it.
|
||||
pass
|
||||
self.wait_page_loaded()
|
||||
|
||||
# Check that the objects have been created in the database
|
||||
self.assertEqual(ProfileCollection.objects.all().count(), 1)
|
||||
|
|
|
@ -3262,16 +3262,7 @@ class SeleniumAdminViewsFirefoxTests(AdminSeleniumWebDriverTestCase):
|
|||
|
||||
# Save and check that everything is properly stored in the database
|
||||
self.selenium.find_element_by_xpath('//input[@value="Save"]').click()
|
||||
|
||||
try:
|
||||
# Wait for the next page to be loaded.
|
||||
self.wait_loaded_tag('body')
|
||||
except TimeoutException:
|
||||
# IE7 occasionnally returns an error "Internet Explorer cannot
|
||||
# display the webpage" and doesn't load the next page. We just
|
||||
# ignore it.
|
||||
pass
|
||||
|
||||
self.wait_page_loaded()
|
||||
self.assertEqual(MainPrepopulated.objects.all().count(), 1)
|
||||
MainPrepopulated.objects.get(
|
||||
name=' this is the mAin nÀMë and it\'s awεšome',
|
||||
|
|
|
@ -644,12 +644,14 @@ class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCas
|
|||
self.selenium.get(
|
||||
'%s%s' % (self.live_server_url, '/admin_widgets/school/%s/' % self.school.id))
|
||||
|
||||
self.wait_page_loaded()
|
||||
self.execute_basic_operations('vertical', 'students')
|
||||
self.execute_basic_operations('horizontal', 'alumni')
|
||||
|
||||
# Save and check that everything is properly stored in the database ---
|
||||
self.selenium.find_element_by_xpath('//input[@value="Save"]').click()
|
||||
self.school = models.School.objects.get(id=self.school.id) # Reload from database
|
||||
self.wait_page_loaded()
|
||||
self.school = models.School.objects.get(id=self.school.id) # Reload from database
|
||||
self.assertEqual(list(self.school.students.all()),
|
||||
[self.arthur, self.cliff, self.jason, self.john])
|
||||
self.assertEqual(list(self.school.alumni.all()),
|
||||
|
@ -728,6 +730,7 @@ class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCas
|
|||
|
||||
# Save and check that everything is properly stored in the database ---
|
||||
self.selenium.find_element_by_xpath('//input[@value="Save"]').click()
|
||||
self.wait_page_loaded()
|
||||
self.school = models.School.objects.get(id=self.school.id) # Reload from database
|
||||
self.assertEqual(list(self.school.students.all()),
|
||||
[self.jason, self.peter])
|
||||
|
|
Loading…
Reference in New Issue