Last active
April 11, 2016 21:55
-
-
Save sqe/397c248a020af75fbc24ac20500aa8ff to your computer and use it in GitHub Desktop.
Some Automated tests for Juicero front-end using selenium-webdriver and python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from selenium import webdriver | |
from selenium.webdriver.common.keys import Keys | |
from selenium.webdriver.support.ui import WebDriverWait | |
import selenium.webdriver.support.ui as ui | |
import unittest | |
test_data = { | |
"data":{ | |
"bad_data": '''~!@#$%^&*()_+[]\{}|;':",./<>?''' | |
}, | |
} | |
_first_name_locator = 'first-name' | |
_last_name_locator = 'last-name' | |
_email_locator = 'email' | |
_phone_number_locator = 'phone' | |
_password_create_locator = 'password-create' | |
_password_confirm_locator = 'password-confirm' | |
_continue_button_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/button' | |
_first_name_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[1]/ju-text-input/ng-messages/ng-message' | |
_last_name_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[2]/ju-text-input/ng-messages/ng-message' | |
_email_error_locator_required = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[3]/ju-text-input/ng-messages/ng-message' | |
_phone_number_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[4]/ju-text-input/ng-messages/ng-message' | |
_password_create_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[5]/ju-text-input/ng-messages/ng-message' | |
_password_confirm_error_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/div[6]/ju-text-input/ng-messages/ng-message' | |
class JuiceroSignUpPageBadData(unittest.TestCase): | |
def setUp(self): | |
self.verificationErrors = [] | |
self.driver = webdriver.Chrome() | |
self.driver.set_window_size(1280, 800) | |
self.base_url = 'https://www.juicero.com/' | |
self.get_juicero_button_css = '#menu-menu > li.cta-btn.menu-item' | |
self.zip_code_box_placeholder_value = 'zip code' | |
self.zip_input_css = '#zipcode-check' | |
self.driver.get(self.base_url) | |
self.driver.find_element_by_css_selector(self.get_juicero_button_css).click() | |
self.wait = ui.WebDriverWait(self, 30) | |
self.wait.until(lambda driver: self.driver.find_element_by_css_selector(self.zip_input_css).is_displayed()) | |
self.user_zip = '94131' | |
self.signup_url = 'https://my.juicero.com/join/?zipcode=' | |
self.driver.find_element_by_css_selector(self.zip_input_css).send_keys(self.user_zip) | |
entered_zip = self.driver.find_element_by_css_selector(self.zip_input_css).get_attribute('value') | |
self.driver.find_element_by_name("zipcodeSubmit").click() | |
self.wait = ui.WebDriverWait(self, 30) | |
self.wait.until(lambda driver: self.driver.find_element_by_name(_first_name_locator).is_displayed()) | |
def tearDown(self): | |
self.driver.quit() | |
def testSignupEmptyFields(self): | |
self.driver.find_element_by_xpath(_continue_button_locator).click() | |
first_name_empty = self.driver.find_element_by_xpath(_first_name_error_locator) | |
assert first_name_empty.text == 'This field is required.' | |
def testBadFirstName(self): | |
bad_first_name = self.driver.find_element_by_name(_first_name_locator) | |
input_bad_first_name = bad_first_name.send_keys(test_data['data']['bad_data']) | |
assert bad_first_name.get_attribute('value') != test_data['data']['bad_data'], bad_first_name.get_attribute('value') | |
bad_first_name.clear() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from selenium import webdriver | |
from selenium.webdriver.common.keys import Keys | |
from selenium.webdriver.support.ui import WebDriverWait | |
import selenium.webdriver.support.ui as ui | |
import unittest | |
test_data = { | |
"data1":{ | |
"first_name": 'NameOne', | |
"last_name": 'LastnameOne', | |
"email": '[email protected]', | |
"phonenumber": 4151112222, | |
"password": 'Somemagic1', | |
"bad_data": '''~!@#$%^&*()_+[]\{}|;':",./<>?''' | |
}, | |
"data2":{ | |
"first_name": 'NameTwo', | |
"last_name": 'LastnameTwo', | |
"email": '[email protected]', | |
"phonenumber": 4152223333, | |
"password": 'Somemagic2' | |
} | |
} | |
_first_name_locator = 'first-name' | |
_last_name_locator = 'last-name' | |
_email_locator = 'email' | |
_phone_number_locator = 'phone' | |
_password_create_locator = 'password-create' | |
_password_confirm_locator = 'password-confirm' | |
_continue_button_locator = '/html/body/div/ng-view/ju-join/main/section/div[2]/div[2]/ju-registration-form/form/fieldset/button' | |
class JuiceroSignUpPage(unittest.TestCase): | |
@classmethod | |
def setUpClass(self): | |
self.verificationErrors = [] | |
self.driver = webdriver.Chrome() | |
self.driver.set_window_size(1280, 800) | |
self.base_url = 'https://www.juicero.com/' | |
self.get_juicero_button_css = '#menu-menu > li.cta-btn.menu-item' | |
self.zip_code_box_placeholder_value = 'zip code' | |
self.zip_input_css = '#zipcode-check' | |
self.driver.get(self.base_url) | |
self.driver.find_element_by_css_selector(self.get_juicero_button_css).click() | |
self.wait = ui.WebDriverWait(self, 30) | |
self.wait.until(lambda driver: self.driver.find_element_by_css_selector(self.zip_input_css).is_displayed()) | |
self.user_zip = '94131' | |
self.signup_url = 'https://my.juicero.com/join/?zipcode=' | |
self.driver.find_element_by_css_selector(self.zip_input_css).send_keys(self.user_zip) | |
entered_zip = self.driver.find_element_by_css_selector(self.zip_input_css).get_attribute('value') | |
self.driver.find_element_by_name("zipcodeSubmit").click() | |
self.wait = ui.WebDriverWait(self, 30) | |
self.wait.until(lambda driver: self.driver.find_element_by_name(_first_name_locator).is_displayed()) | |
@classmethod | |
def tearDownClass(self): | |
self.driver.quit() | |
def testSignupUrl(self): | |
cur_url = self.driver.current_url | |
assert cur_url == self.signup_url + self.user_zip | |
def testSignupFirstName(self): | |
first_name = self.driver.find_element_by_name(_first_name_locator) | |
input_first_name = first_name.send_keys(test_data['data1']['first_name']) | |
assert first_name.get_attribute('value') == test_data['data1']['first_name'] | |
def testSignupLastName(self): | |
last_name = self.driver.find_element_by_name(_last_name_locator) | |
input_last_name = last_name.send_keys(test_data['data1']['last_name']) | |
assert last_name.get_attribute('value') == test_data['data1']['last_name'] | |
def testSignupEmail(self): | |
email = self.driver.find_element_by_name(_email_locator) | |
input_email = email.send_keys(test_data['data1']['email']) | |
assert email.get_attribute('value') == test_data['data1']['email'] | |
def testSignupPhone(self): | |
phone = self.driver.find_element_by_name(_phone_number_locator) | |
phone_to_string = str(test_data["data1"]['phonenumber']) | |
phone_formated = '(' + phone_to_string[0:3] +') ' + phone_to_string[3:6] + '-' + phone_to_string[6:] | |
input_phone = phone.send_keys(test_data['data1']['phonenumber']) | |
assert phone.get_attribute('value') == phone_formated | |
def testSignupCreatePassword(self): | |
password = self.driver.find_element_by_name(_password_create_locator) | |
input_password = password.send_keys(test_data['data1']['password']) | |
assert password.get_attribute('value') == test_data['data1']['password'] | |
def testSignupConfirmPassword(self): | |
password = self.driver.find_element_by_name(_password_confirm_locator ) | |
input_password = password.send_keys(test_data['data1']['password']) | |
assert password.get_attribute('value') == test_data['data1']['password'] | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from selenium import webdriver | |
from selenium.webdriver.common.keys import Keys | |
from selenium.webdriver.support.ui import WebDriverWait | |
import selenium.webdriver.support.ui as ui | |
import unittest | |
class JuiceroZipCode(unittest.TestCase): | |
def setUp(self): | |
self.driver = webdriver.Chrome() | |
self.driver.set_window_size(1280, 800) | |
self.base_url = 'https://www.juicero.com/' | |
self.get_juicero_button_css = '#menu-menu > li.cta-btn.menu-item' | |
self.zip_code_box_placeholder_value = 'zip code' | |
self.zip_input_css = '#zipcode-check' | |
self.driver.get(self.base_url) | |
self.driver.find_element_by_css_selector(self.get_juicero_button_css).click() | |
self.wait = ui.WebDriverWait(self, 30) | |
self.wait.until(lambda driver: self.driver.find_element_by_css_selector(self.zip_input_css).is_displayed()) | |
def tearDown(self): | |
self.driver.quit() | |
def test_get_juicero_zip_placeholder_entry(self): | |
zip_code_box_placeholder_value = 'zip code' | |
get_zip_placeholder_value = self.driver.find_element_by_css_selector(self.zip_input_css).get_attribute('placeholder') | |
assert zip_code_box_placeholder_value == get_zip_placeholder_value | |
def test_get_juicero_zip_normal_entry(self): | |
user_zip = "94131" | |
self.driver.find_element_by_css_selector(self.zip_input_css).send_keys(user_zip) | |
entered_zip = self.driver.find_element_by_css_selector(self.zip_input_css).get_attribute('value') | |
assert user_zip == entered_zip | |
def test_zip_code_modal_no_value(self): | |
zip_error_message = 'Please enter valid zipcode.' | |
self.driver.find_element_by_name("zipcodeSubmit").click() | |
empty_zip_entry = self.driver.find_element_by_class_name("zipcode-error-msg").text | |
assert zip_error_message == empty_zip_entry |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Outputs: