Permalink
Browse files

Moves email form tests to about.py and other tweaks

* Changes the names of the locators and tests to be more consistent
with other email tests
* Adds a test to check if the form exists
* Adds a test to check if the form fields exist
  • Loading branch information...
1 parent b82c791 commit ee1b0bfbab5ceab774d576450f12c0b97e92fc15 @casschin casschin committed Jan 25, 2013
Showing with 96 additions and 61 deletions.
  1. +41 −0 pages/desktop/about.py
  2. +0 −26 pages/desktop/base.py
  3. +55 −35 tests/test_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
@@ -182,29 +182,3 @@ 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',
- },
- ]
-
- def input_email(self, email):
- self.selenium.find_element(*_get_mozilla_updates_email_input).send_keys(email)
-
- def check_privacy_checkbox(self):
- self.selenium.find_element(*_get_mozilla_updates_privacy_checkbox).click()
-
- def submit_form(self):
- self.selenium.find_element(*_get_mozilla_updates_submit_button).click()
-
- def trigger_email_form(self):
- self.selenium.find_element(*_get_mozilla_updates_email_input).click()
View
@@ -149,88 +149,108 @@ def test_major_link_urls_are_valid(self, mozwebqa):
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):
+ def test_sign_up_form_is_visible(self, mozwebqa):
about_page = AboutPage(mozwebqa)
about_page.go_to_page()
- about_page.GetMozillaUpdates.trigger_email_form()
- about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
+ 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.GetMozillaUpdates.get_mozilla_updates_link_list:
+ 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_get_mozilla_updates_link_destinations_are_correct(self, mozwebqa):
+ 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.GetMozillaUpdates.get_mozilla_updates_link_list:
+ 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_get_mozilla_updates_link_urls_are_valid(self, mozwebqa):
+ 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.GetMozillaUpdates.get_mozilla_updates_link_list:
+ 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_get_mozilla_updates_form_elements_are_visible(self, mozwebqa):
+ def test_sign_up_form_form_elements_are_visible(self, mozwebqa):
about_page = AboutPage(mozwebqa)
about_page.go_to_page()
- about_page.GetMozillaUpdates.trigger_email_form()
- 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)
+ 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_get_mozilla_updates_form_submit_is_successful(self, mozwebqa):
+ def test_sign_up_form_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.GetMozillaUpdates.trigger_email_form()
- about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
- about_page.GetMozillaUpdates.input_email(valid_email)
- about_page.select_option(country, about_page.GetMozillaUpdates._get_mozilla_updates_country_select)
- about_page.GetMozillaUpdates.check_privacy_checkbox()
- about_page.GetMozillaUpdates.submit_form()
+ 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 == 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)]))
+ '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):
+ def test_sign_up_form_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.GetMozillaUpdates.trigger_email_form()
- about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
- about_page.GetMozillaUpdates.input_email(invalid_email)
- about_page.select_option(country, about_page.GetMozillaUpdates._get_mozilla_updates_country_select)
- about_page.GetMozillaUpdates.check_privacy_checkbox()
- about_page.GetMozillaUpdates.submit_form()
+ 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(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)]))
+ '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):
+ def test_sign_up_form_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.GetMozillaUpdates.trigger_email_form()
- about_page.wait_for_element_visible(*about_page.GetMozillaUpdates._get_mozilla_updates_privacy_checkbox)
- about_page.GetMozillaUpdates.input_email(valid_email)
- about_page.select_option(country, about_page.GetMozillaUpdates._get_mozilla_updates_country_select)
- about_page.GetMozillaUpdates.submit_form()
+ 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(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)]))
+ 'Expected current URL to be %s, found %s instead.' %
+ (mozillabased_url, about_page.url_current_page[:len(mozillabased_url)]))

0 comments on commit ee1b0bf

Please sign in to comment.