Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'master' of github.com:mozilla/mcom-tests into upmaster

  • Loading branch information...
commit e85e3cb42bd4a4bc1b3e8e0ae67517459602cb63 2 parents e28f46b + 5c270e6
@retornam retornam authored
Showing with 160 additions and 0 deletions.
  1. +41 −0 pages/desktop/about.py
  2. +12 −0 pages/page.py
  3. +107 −0 tests/test_about.py
View
41 pages/desktop/about.py
@@ -46,3 +46,44 @@ def go_to_page(self):
'url_suffix': '/about/partnerships',
}
]
+
+ _sign_up_form_locator = (By.ID, 'footer-email-form')
+ _sign_up_form_email_input_locator = (By.ID, 'id_email')
+ _sign_up_form_country_select_locator = (By.ID, 'country')
+ _sign_up_form_privacy_checkbox_locator = (By.ID, 'id_privacy')
+ _sign_up_form_submit_button_locator = (By.ID, 'footer_email_submit')
+
+ sign_up_form_link_list = [
+ {
+ 'locator': (By.CSS_SELECTOR, 'label.privacy-check-label > span > a'),
+ 'url_suffix': '/en-US/privacy-policy',
+ },
+ ]
+
+ sign_up_form_fields = [
+ {
+ 'locator': (By.ID, 'id_email'),
+ }, {
+ 'locator': (By.ID, 'country'),
+ }, {
+ 'locator': (By.ID, 'id_privacy'),
+ }, {
+ 'locator': (By.ID, 'footer_email_submit'),
+ },
+ ]
+
+ def input_email(self, email):
+ self.selenium.find_element(*self._sign_up_form_email_input_locator).send_keys(email)
+
+ def check_privacy_checkbox(self):
+ self.selenium.find_element(*self._sign_up_form_privacy_checkbox_locator).click()
+
+ def submit_form(self):
+ self.selenium.find_element(*self._sign_up_form_submit_button_locator).click()
+
+ def expand_sign_up_form(self):
+ self.selenium.find_element(*self._sign_up_form_email_input_locator).click()
+
+ @property
+ def is_sign_up_form_present(self):
+ return self.is_element_present(*self._sign_up_form_locator)
View
12 pages/page.py
@@ -54,6 +54,18 @@ def refresh(self):
def open(self, url_fragment):
self.selenium.get(self.base_url + url_fragment)
+ def select_option(self, value, locator):
+ dropdown = self.selenium.find_element(*locator)
+ option_found = False
+ all_options = dropdown.find_elements_by_tag_name("option")
+ for option in all_options:
+ if option.get_attribute("value") == value:
+ option_found = True
+ option.click()
+ break
+ if option_found is False:
+ raise Exception("Option '" + value + "' was not found, thus not selectable.")
+
def is_element_present(self, *locator):
self.selenium.implicitly_wait(0)
try:
View
107 tests/test_about.py
@@ -147,3 +147,110 @@ 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_sign_up_form_is_visible(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ Assert.true(about_page.is_sign_up_form_present, 'The sign up form is not present on the page.')
+
+ @pytest.mark.nondestructive
+ def test_sign_up_form_fields_are_visible(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ about_page.expand_sign_up_form()
+ bad_fields = []
+ for field in about_page.sign_up_form_fields:
+ if not about_page.is_element_visible(*field.get('locator')):
+ bad_fields.append('The field at %s is not visible' % field.get('locator')[1:])
+ Assert.equal(0, len(bad_fields), '%s bad fields found: ' % len(bad_fields) + ', '.join(bad_fields))
+
+ @pytest.mark.nondestructive
+ def test_sign_up_form_links_are_visible(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ about_page.expand_sign_up_form()
+ about_page.wait_for_element_visible(*about_page._sign_up_form_privacy_checkbox_locator)
+ bad_links = []
+ for link in about_page.sign_up_form_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_sign_up_form_link_destinations_are_correct(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ bad_links = []
+ for link in about_page.sign_up_form_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_sign_up_form_link_urls_are_valid(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ bad_urls = []
+ for link in about_page.sign_up_form_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_sign_up_form_elements_are_visible(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ about_page.go_to_page()
+ about_page.expand_sign_up_form()
+ about_page.wait_for_element_visible(*about_page._sign_up_form_privacy_checkbox_locator)
+ about_page.is_element_visible(*about_page._sign_up_form_country_select_locator)
+
+ def test_sign_up_form_submit_is_successful(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ valid_email = 'noreply@mozilla.com'
+ country = 'US'
+ success_url_slug = 'sign-up-for-mozilla'
+ about_page.go_to_page()
+ about_page.expand_sign_up_form()
+ about_page.wait_for_element_visible(*about_page._sign_up_form_privacy_checkbox_locator)
+ about_page.input_email(valid_email)
+ about_page.select_option(country, about_page._sign_up_form_country_select_locator)
+ about_page.check_privacy_checkbox()
+ about_page.submit_form()
+ Assert.true(success_url_slug in about_page.url_current_page,
+ 'Expected current URL slug to be %s, but was not found in %s.' %
+ (success_url_slug, about_page.url_current_page))
+
+ def test_sign_up_form_invalid_email(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ invalid_email = 'noreplymozilla.com'
+ country = 'US'
+ about_page.go_to_page()
+ expected_url = about_page.url_current_page
+ about_page.expand_sign_up_form()
+ about_page.wait_for_element_visible(*about_page._sign_up_form_privacy_checkbox_locator)
+ about_page.input_email(invalid_email)
+ about_page.select_option(country, about_page._sign_up_form_country_select_locator)
+ about_page.check_privacy_checkbox()
+ about_page.submit_form()
+ Assert.true(expected_url == about_page.url_current_page[:len(expected_url)],
+ 'Expected current URL to be %s, found %s instead.' %
+ (expected_url, about_page.url_current_page[:len(expected_url)]))
+
+ def test_sign_up_form_privacy_policy_unchecked(self, mozwebqa):
+ about_page = AboutPage(mozwebqa)
+ valid_email = 'noreply@mozilla.com'
+ country = 'US'
+ about_page.go_to_page()
+ expected_url = about_page.url_current_page
+ about_page.expand_sign_up_form()
+ about_page.wait_for_element_visible(*about_page._sign_up_form_privacy_checkbox_locator)
+ about_page.input_email(valid_email)
+ about_page.select_option(country, about_page._sign_up_form_country_select_locator)
+ about_page.submit_form()
+ Assert.true(expected_url == about_page.url_current_page[:len(expected_url)],
+ 'Expected current URL to be %s, found %s instead.' %
+ (expected_url, about_page.url_current_page[:len(expected_url)]))
Please sign in to comment.
Something went wrong with that request. Please try again.