Navigation Menu

Skip to content
This repository has been archived by the owner on Apr 25, 2020. It is now read-only.

Commit

Permalink
Merge pull request mozilla#163 from casschin/get-mozilla-updates
Browse files Browse the repository at this point in the history
Adds tests for Get Mozilla Updates widget
  • Loading branch information
AlinT committed Feb 12, 2013
2 parents eaa61ac + d68061f commit 5c270e6
Show file tree
Hide file tree
Showing 3 changed files with 160 additions and 0 deletions.
41 changes: 41 additions & 0 deletions pages/desktop/about.py
Expand Up @@ -46,3 +46,44 @@ def go_to_page(self):
'url_suffix': '/about/partnerships', '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)
12 changes: 12 additions & 0 deletions pages/page.py
Expand Up @@ -53,6 +53,18 @@ def refresh(self):
def open(self, url_fragment): def open(self, url_fragment):
self.selenium.get(self.base_url + 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): def is_element_present(self, *locator):
self.selenium.implicitly_wait(0) self.selenium.implicitly_wait(0)
try: try:
Expand Down
107 changes: 107 additions & 0 deletions tests/test_about.py
Expand Up @@ -147,3 +147,110 @@ def test_major_link_urls_are_valid(self, mozwebqa):
if response_code != requests.codes.ok: if response_code != requests.codes.ok:
bad_urls.append('%s is not a valid url - status code: %s.' % (url, response_code)) 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)) 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)]))

0 comments on commit 5c270e6

Please sign in to comment.