class SanityTest1(unittest.TestCase): @pytest.fixture(autouse=True) def class_setup(self, one_time_setup): self.home_page = HomePage(self.driver) self.errors = ErrorStatus(self.driver) self.plp = ProductListingPage(self.driver) self.pdp = PDP(self.driver) self.checkout = CheckoutPage(self.driver) # @pytest.mark.run(order=1) def test_a_reach_woman_dresses(self): self.home_page.click_woman_dresses() time.sleep(1) result = self.home_page.verify_woman_dresses_title( "Dresses - My Store") self.errors.mark_final( "Reach woman dress", result, 'Reach woman dresses Failed - Title doesnt match') # @pytest.mark.run(order=2) def test_b_plp_actions(self): self.plp.plp_test_1(0) time.sleep(1) add_result = self.pdp.test_qty_of_items_added(1) self.errors.mark_final("Test items in cart", add_result, "Failed to add 1 item from PLP") self.plp.plp_test_2() # @pytest.mark.run(order=3) def test_c_pdp_actions(self): self.pdp.test_pdp1() self.pdp.continue_to_checkout() result = self.pdp.products_in_cart(3) self.errors.mark_final("Cart qty check", result, "Qty in cart is not correct") # @pytest.mark.run(order=4) def test_d_cart_actions(self): self.checkout.cart_actions(1, 0) result = self.pdp.products_in_cart(2) self.errors.mark_final("Cart qty check", result, "Qty in cart is not correct") # @pytest.mark.run(order=5) def test_e_login_actions(self): self.checkout.click_proceed_to_checkout() self.checkout.login('*****@*****.**', '123') result = self.checkout.verify_invalid_login() self.errors.mark(result, 'Invalid Login Test') time.sleep(1) self.checkout.login('*****@*****.**', 'Zarko321') result = self.checkout.verify_valid_login() self.errors.mark_final('Login Actions', result, 'Valid Login Test') # @pytest.mark.run(order=6) def test_f_address_actions(self): self.checkout.add_new_address_btn() self.checkout.address_handling('Zarko', 'Test', '565 W Orchard st', 'Milwaukee', '53204', "Wisconsin", '2345678902') time.sleep(1) result = self.checkout.verify_address_submit_success() self.errors.mark(result, 'Adding Address') # select address from dropdown self.checkout.select_shipping_address_dropdown() self.checkout.add_billing_address() self.checkout.address_handling('Zarko', 'Test', '123 Santa Monica Blvd', 'Santa Monica', '90401', 'California', '2349030994') result_billing = self.checkout.verify_address_submit_success() self.errors.mark_final('Handling SHipping and billing address', result_billing, 'Billing Address Add') # @pytest.mark.run(order=7) def test_g_carrier_actions(self): self.checkout.handling_4th_step() bank_present = self.checkout.verify_payment_method_wire() self.errors.mark(bank_present, "Bank Payment Method present") check_present = self.checkout.verify_payment_check() self.errors.mark_final('Payment methods present', check_present, 'Check Payment Method present') # @pytest.mark.run(order=8) def test_h_place_order(self): self.checkout.place_order_wire() # @pytest.mark.run(order=9) def test_i_remove_addresses(self): self.home_page.address_delete() result = self.home_page.verify_no_addresses() self.errors.mark(result, "Removing addresses") self.home_page.log_out() result_2 = self.home_page.verify_log_out() self.errors.mark_final('Teardown', result_2, 'Log out') time.sleep(1)
class MyAccount(BasePage): def __init__(self, driver): super().__init__(self) self.driver = driver self.checkout = CheckoutPage(self.driver) self.home = HomePage(self.driver) # LOCATORS _first_address = 'a[title="Add my first address"]' # CSS _back_to_account = '//span[contains(text(), "Back to your account")]' # Xpath _update_address = '//span[contains(text(), "Update")]' # Xpath _wisconsin_present = '//span[contains(text(), "Wisconsin")]' # Xpath _order_history_btn = '//a[@title="Orders"]' # Xpath _order_ref = 'color-myaccount' # class _reorder_btn = '//span[contains(text(), "Reorder")]' # Xpath _proceed_to_checkout_btn = 'standard-checkout' # class _navigate_to_wishlist = 'a[title="My wishlists"]' # CSS _click_on_my_wishlist = "//a[contains(text(), 'My wishlist')]" # Xptah _remove_item_from_wishlist = 'a[title="Delete"]' # CSS _qty_field = '//div[@class="wishlist_product_detail"]//input' _save_changes = 'a[title="Save"]' # CSS _new_wishlist_name = 'name' # ID _save_new_wishlist = 'submitWishlist' _delete_wishlist_icon = "//i[@class='icon-remove']//parent::a" _verify_qty = "//td[contains(text(), '3')]" # XPATH _verify_new_wishlist = "//a[contains(text(), 'New Wishlist')]" # Xpath def click_add_first_address(self): if self.element_is_present(self._first_address, By.CSS_SELECTOR) is False: self.home.address_delete() self.click_element(self._back_to_account, By.XPATH) self.click_element(self._first_address, By.CSS_SELECTOR) def add_address(self): self.click_add_first_address() self.checkout.address_handling( 'Zarko', 'Test', '565 W Orchard st', 'Milwaukee', '53204', "Washington", '2345678901') def update_address(self): self.click_element(self._update_address, By.XPATH) self.checkout.select_state_by_text("Wisconsin") def verify_updated_state(self): result = self.element_is_present(self._wisconsin_present, By.XPATH) return result def go_to_history(self): self.click_element(self._back_to_account, By.XPATH) self.click_element(self._order_history_btn, By.XPATH) self.click_element_from_list_number(self._order_ref, By.CLASS_NAME, 0) self.click_element(self._reorder_btn, By.XPATH) def verify_checkout_btn(self): result = self.element_is_present(self._proceed_to_checkout_btn, By.CLASS_NAME) return result def go_to_home(self): if self.check_url('http://automationpractice.com/index.php') is not True: self.home.go_to_homepage() def reach_wishlist(self): self.home.go_to_account() self.click_element(self._navigate_to_wishlist, By.CSS_SELECTOR) def delete_second_item(self): self.click_element_from_list_number(self._remove_item_from_wishlist, By.CSS_SELECTOR, 1) def update_qty_of_item(self): element = self.get_element_from_list(self._qty_field, By.XPATH, 0) self.type_text('3', element=element) def save_changes(self): self.click_element_from_list_number(self._save_changes, By.CSS_SELECTOR, 0) def expand_wishlist(self): self.click_element(self._click_on_my_wishlist, By.XPATH) def create_new_wishlist(self): self.type_text("New Wishlist", self._new_wishlist_name, By.ID) self.click_element(self._save_new_wishlist, By.ID) def verify_new_wishlist(self): result = self.element_is_present(self._verify_new_wishlist, By.XPATH) return result def delete_wishlists(self): elements = self.get_elements(self._delete_wishlist_icon, By.XPATH) for each in elements: if len(elements) > 0: self.click_element(element=each) self.confirm_alert() def verify_wishlist_removed(self): time.sleep(2) result = self.element_is_present(self._delete_wishlist_icon, By.XPATH) if result is False: return True else: return False def test_wishlist(self): self.reach_wishlist() self.expand_wishlist() self.delete_second_item() time.sleep(2) def verify_item_delete(self): self.refresh_page() self.expand_wishlist() number_of_items = self.get_elements(self._remove_item_from_wishlist, By.CSS_SELECTOR) if len(number_of_items) == 1: return True else: return False def qty_manipulation(self): self.expand_wishlist() self.update_qty_of_item() self.save_changes() time.sleep(5) def verify_product_qty(self): self.refresh_page() result = self.element_is_present(self._verify_qty, By.XPATH) return result def test_wishlist_2(self): self.create_new_wishlist() self.delete_wishlists() time.sleep(5)