Permalink
Browse files

Adds Get Mozilla Updates widget tests

Note that the `select_option` function is included in this because it's
used to select the country in the form.
  • Loading branch information...
1 parent b81bc92 commit 829110631a7dd646ac06f0df941feffba69b5168 @casschin casschin committed Jan 22, 2013
Showing with 101 additions and 0 deletions.
  1. +14 −0 pages/desktop/base.py
  2. +87 −0 tests/test_about.py
View
@@ -182,3 +182,17 @@ def are_secondary_links_visible(self):
return self.is_element_visible(*self._systems_and_languages_locator) and \
self.is_element_visible(*self._whats_new_locator) and \
self.is_element_visible(*self._privacy_locator)
+
+ class GetMozillaUpdates(Page):
+
+ _get_mozilla_updates_email_input = (By.ID, 'id_email')
+ _get_mozilla_updates_country_select = (By.ID, 'country')
+ _get_mozilla_updates_privacy_checkbox = (By.ID, 'id_privacy')
+ _get_mozilla_updates_submit_button = (By.ID, 'footer_email_submit')
+
+ get_mozilla_updates_link_list = [
+ {
+ 'locator': (By.CSS_SELECTOR, 'label.privacy-check-label > span > a'),
+ 'url_suffix': '/en-US/privacy-policy',
+ },
+ ]
View
@@ -147,3 +147,90 @@ def test_major_link_urls_are_valid(self, mozwebqa):
if response_code != requests.codes.ok:
bad_urls.append('%s is not a valid url - status code: %s.' % (url, response_code))
Assert.equal(0, len(bad_urls), '%s bad urls found: ' % len(bad_urls) + ', '.join(bad_urls))
+
+ @pytest.mark.nondestructive
+ def test_get_mozilla_updates_links_are_visible(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_email_input).click()
+ about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
+ bad_links = []
+ for link in about_page.GetMozillaUpdates.get_mozilla_updates_link_list:
+ if not about_page.is_element_visible(*link.get('locator')):
+ bad_links.append('The link at %s is not visible' % link.get('locator')[1:])
+ Assert.equal(0, len(bad_links), '%s bad links found: ' % len(bad_links) + ', '.join(bad_links))
+
+ @pytest.mark.nondestructive
+ def test_get_mozilla_updates_link_destinations_are_correct(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ bad_links = []
+ for link in about_page.GetMozillaUpdates.get_mozilla_updates_link_list:
+ url = about_page.link_destination(link.get('locator'))
+ if not url.endswith(link.get('url_suffix')):
+ bad_links.append('%s does not end with %s' % (url, link.get('url_suffix')))
+ Assert.equal(0, len(bad_links), '%s bad links found: ' % len(bad_links) + ', '.join(bad_links))
+
+ @pytest.mark.nondestructive
+ def test_get_mozilla_updates_link_urls_are_valid(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ bad_urls = []
+ for link in about_page.GetMozillaUpdates.get_mozilla_updates_link_list:
+ url = about_page.link_destination(link.get('locator'))
+ response_code = about_page.get_response_code(url)
+ if response_code != requests.codes.ok:
+ bad_urls.append('%s is not a valid url - status code: %s.' % (url, response_code))
+ Assert.equal(0, len(bad_urls), '%s bad urls found: ' % len(bad_urls) + ', '.join(bad_urls))
+
+ @pytest.mark.nondestructive
+ def test_get_mozilla_updates_form_elements_are_visible(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_email_input).click()
+ about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
+ about_page.is_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_country_select)
+
+ def test_get_mozilla_updates_form_submit_is_successful(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ valid_email = 'noreply@mozilla.com'
+ country = 'US'
+ success_url = 'https://donate.mozilla.org/page/st/sign-up-for-mozilla'
+ about_page.go_to_page()
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_email_input).click()
+ about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_email_input).send_keys(valid_email)
+ about_page.select_option(country, about_page.GetMozillaUpdates._get_mozilla_updates_country_select)
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox).click()
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_submit_button).click()
+ Assert.true(success_url == about_page.url_current_page[:len(success_url)], \
+ 'Expected current URL to be %s, found %s instead.' % (success_url, about_page.url_current_page[:len(success_url)]))
+
+ def test_get_mozilla_updates_form_invalid_email(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ invalid_email = 'noreplymozilla.com'
+ country = 'US'
+ about_page.go_to_page()
+ mozillabased_url = about_page.url_current_page
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_email_input).click()
+ about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_email_input).send_keys(invalid_email)
+ about_page.select_option(country, about_page.GetMozillaUpdates._get_mozilla_updates_country_select)
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox).click()
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_submit_button).click()
+ Assert.true(mozillabased_url == about_page.url_current_page[:len(mozillabased_url)], \
+ 'Expected current URL to be %s, found %s instead.' % (mozillabased_url, about_page.url_current_page[:len(mozillabased_url)]))
+
+ def test_get_mozilla_updates_form_privacy_policy_unchecked(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ valid_email = 'noreply@mozilla.com'
+ country = 'US'
+ about_page.go_to_page()
+ mozillabased_url = about_page.url_current_page
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_email_input).click()
+ about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_email_input).send_keys(valid_email)
+ about_page.select_option(country, about_page.GetMozillaUpdates._get_mozilla_updates_country_select)
+ about_page.selenium.find_element(*about_page.GetMozillaUpdates._get_mozilla_updates_submit_button).click()
+ Assert.true(mozillabased_url == about_page.url_current_page[:len(mozillabased_url)], \
+ 'Expected current URL to be %s, found %s instead.' % (mozillabased_url, about_page.url_current_page[:len(mozillabased_url)]))

0 comments on commit 8291106

Please sign in to comment.