Refactored tests, and added delay when placing map marker

This commit is contained in:
Naomi 2018-10-04 13:46:39 +01:00
parent fa101e6a5f
commit a061bbbb06

View File

@ -32,7 +32,7 @@ class SeleniumTest(LiveServerTestCase):
chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--no-sandbox')
# comment out this next line in order to see the tests running in a browser. # comment out this next line in order to see the tests running in a browser.
# But be sure to put it back before comitting, or gitlab CI will fail. # But be sure to put it back before comitting, or gitlab CI will fail.
#chrome_options.add_argument('--headless') chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--disable-gpu')
cls.sl = webdriver.Chrome(chrome_options=chrome_options) cls.sl = webdriver.Chrome(chrome_options=chrome_options)
cls.sl.implicitly_wait(TIMEOUT) cls.sl.implicitly_wait(TIMEOUT)
@ -87,12 +87,24 @@ class MapTest(SeleniumTest):
) )
self.case_study.save() self.case_study.save()
def test_form_will_show_error(self): def login(self):
self.user = User.objects.create_superuser(username='test', password='test', email='test@example.com'); self.user = User.objects.create_superuser(username='test', password='test', email='test@example.com');
self._open('/en-gb/case-study/create/long');
self.sl.find_element_by_id('id_username').send_keys('test'); self.sl.find_element_by_id('id_username').send_keys('test');
self.sl.find_element_by_id('id_password').send_keys('test'); self.sl.find_element_by_id('id_password').send_keys('test');
self.sl.find_element_by_css_selector('input[type="submit"]').click() self.sl.find_element_by_css_selector('input[type="submit"]').click()
def place_marker(self):
# click the zoom out button enough to bring up the thing to draw marker then use it.
# the headless browser needs time between each click or it does not show the draw-marker control.
for i in range(0, 15):
self.sl.find_element_by_class_name('leaflet-control-zoom-in').click()
time.sleep(0.2)
self.sl.find_element_by_class_name('leaflet-draw-draw-marker').click()
self.sl.find_element_by_id('id_location-map').click()
def test_form_will_show_error(self):
self._open('/en-gb/case-study/create/long');
self.login();
# navigate to the last tab, where the submit button is # navigate to the last tab, where the submit button is
self.sl.find_element_by_css_selector('a[href="#uploads"]').click() self.sl.find_element_by_css_selector('a[href="#uploads"]').click()
# click submit without filling in any fields # click submit without filling in any fields
@ -101,16 +113,10 @@ class MapTest(SeleniumTest):
self.assertTrue(error_message.is_displayed()) self.assertTrue(error_message.is_displayed())
def test_short_form_will_submit(self): def test_short_form_will_submit(self):
self.user = User.objects.create_superuser(username='test', password='test', email='test@example.com');
self._open('/en-gb/case-study/create/short'); self._open('/en-gb/case-study/create/short');
self.sl.find_element_by_id('id_username').send_keys('test'); self.login()
self.sl.find_element_by_id('id_password').send_keys('test'); self.place_marker()
self.sl.find_element_by_css_selector('input[type="submit"]').click() self.sl.find_element_by_id('id_entry_name').send_keys('Short Entry');
self.sl.find_element_by_id('id_entry_name').send_keys('test');
for i in range(0, 20):
self.sl.find_element_by_class_name('leaflet-control-zoom-in').click()
self.sl.find_element_by_class_name('leaflet-draw-draw-marker').click()
self.sl.find_element_by_id('id_location-map').click()
Select(self.sl.find_element_by_id('id_country')).select_by_visible_text('Albania'); Select(self.sl.find_element_by_id('id_country')).select_by_visible_text('Albania');
self.sl.find_element_by_id('id_area_of_land').send_keys('123'); self.sl.find_element_by_id('id_area_of_land').send_keys('123');
Select(self.sl.find_element_by_id('id_land_ownership')).select_by_visible_text('Private Land'); Select(self.sl.find_element_by_id('id_land_ownership')).select_by_visible_text('Private Land');
@ -121,21 +127,17 @@ class MapTest(SeleniumTest):
self.sl.find_element_by_id('id_synopsis').send_keys('test'); self.sl.find_element_by_id('id_synopsis').send_keys('test');
self.sl.find_element_by_id('id_full_description').send_keys('test'); self.sl.find_element_by_id('id_full_description').send_keys('test');
Select(self.sl.find_element_by_id('id_positive_or_negative')).select_by_visible_text('Positive'); Select(self.sl.find_element_by_id('id_positive_or_negative')).select_by_visible_text('Positive');
self.sl.execute_script("window.scrollTo(0, document.body.scrollHeight);") # you can submit the form on any field. Using this one because the submit button sometimes isn't visible
self.sl.find_element_by_id('submit-id-submit').click() self.sl.find_element_by_id('id_area_of_land').submit();
self.assertTrue("Thanks!" in self.sl.page_source, "Case study not successfully submitted") self.assertTrue("Thanks!" in self.sl.page_source, "Success message not shown")
self._open('/admin/map/casestudy/');
self.assertTrue("Short Entry" in self.sl.page_source, "Case study not saved")
def test_long_form_will_submit(self): def test_long_form_will_submit(self):
self.user = User.objects.create_superuser(username='test', password='test', email='test@example.com');
self._open('/en-gb/case-study/create/long'); self._open('/en-gb/case-study/create/long');
self.sl.find_element_by_id('id_username').send_keys('test'); self.login()
self.sl.find_element_by_id('id_password').send_keys('test'); self.place_marker()
self.sl.find_element_by_css_selector('input[type="submit"]').click() self.sl.find_element_by_id('id_entry_name').send_keys('Long Entry');
self.sl.find_element_by_id('id_entry_name').send_keys('test');
for i in range(0, 20):
self.sl.find_element_by_class_name('leaflet-control-zoom-in').click()
self.sl.find_element_by_class_name('leaflet-draw-draw-marker').click()
self.sl.find_element_by_id('id_location-map').click()
Select(self.sl.find_element_by_id('id_country')).select_by_visible_text('Albania'); Select(self.sl.find_element_by_id('id_country')).select_by_visible_text('Albania');
self.sl.find_element_by_id('id_area_of_land').send_keys('123'); self.sl.find_element_by_id('id_area_of_land').send_keys('123');
Select(self.sl.find_element_by_id('id_land_ownership')).select_by_visible_text('Private Land'); Select(self.sl.find_element_by_id('id_land_ownership')).select_by_visible_text('Private Land');
@ -151,8 +153,11 @@ class MapTest(SeleniumTest):
self.sl.find_element_by_css_selector('a[href="#socio-environmental-analysis"]').click() self.sl.find_element_by_css_selector('a[href="#socio-environmental-analysis"]').click()
Select(self.sl.find_element_by_id('id_positive_or_negative')).select_by_visible_text('Positive'); Select(self.sl.find_element_by_id('id_positive_or_negative')).select_by_visible_text('Positive');
self.sl.find_element_by_css_selector('a[href="#uploads"]').click() self.sl.find_element_by_css_selector('a[href="#uploads"]').click()
self.sl.find_element_by_id('submit-id-submit').click() # you can submit the form on any field. Using this one because the submit button sometimes isn't visible
self.assertTrue("Thanks!" in self.sl.page_source, "Case study not successfully submitted") self.sl.find_element_by_id('id_name_of_territory_or_area').submit();
self.assertTrue("Thanks!" in self.sl.page_source, "Success message not shown")
self._open('/admin/map/casestudy/');
self.assertTrue("Long Entry" in self.sl.page_source, "Case study not saved")
def test_map(self): def test_map(self):
self._open('/') self._open('/')