From edb216268012d90e01b4f191454e8b5ea9a82c1a Mon Sep 17 00:00:00 2001 From: Palmero Cristian Javier Date: Tue, 6 Oct 2020 16:56:55 -0300 Subject: [PATCH] se agregan todo lo necesario para la demo --- .../crowdar/examples/pages/AddressesPage.java | 21 ++++ .../pages/ArticlePreferencesPage.java | 63 ++++++++++ .../com/crowdar/examples/pages/LoginPage.java | 35 ++++++ .../crowdar/examples/pages/MyAccountPage.java | 34 ++++++ .../examples/pages/OrderConfirmationPage.java | 17 +++ .../examples/pages/OrderSummaryPage.java | 23 ++++ .../examples/pages/PageBaseShopping.java | 14 +++ .../examples/pages/PaymentMethodPage.java | 32 +++++ .../examples/pages/ProductCategoryPage.java | 47 ++++++++ .../crowdar/examples/pages/ShippingPage.java | 28 +++++ .../examples/pages/ShoppingCartPage.java | 21 ++++ .../examples/pages/ShoppingHomePage.java | 113 ++++++++++++++++++ .../crowdar/examples/steps/ShoppingSteps.java | 72 +++++++++++ .../main/resources/locators/store.properties | 1 + .../resources/locators/account.properties | 5 + .../resources/locators/addresses.properties | 2 + .../locators/articlePreferences.properties | 5 + src/main/resources/locators/login.properties | 3 + .../locators/orderConfirmation.properties | 2 + .../locators/orderSummary.properties | 3 + .../resources/locators/payment.properties | 3 + .../locators/productsCategoryPage.properties | 3 + .../resources/locators/shipping.properties | 2 + .../locators/shoppingCart.properties | 2 + .../locators/shoppingHomePage.properties | 3 + .../resources/features/googleSearch.feature | 25 ---- .../resources/features/shoppingFlow.feature | 51 ++++++++ 27 files changed, 605 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/crowdar/examples/pages/AddressesPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/ArticlePreferencesPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/LoginPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/MyAccountPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/OrderConfirmationPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/OrderSummaryPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/PageBaseShopping.java create mode 100644 src/main/java/com/crowdar/examples/pages/PaymentMethodPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/ProductCategoryPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/ShippingPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/ShoppingCartPage.java create mode 100644 src/main/java/com/crowdar/examples/pages/ShoppingHomePage.java create mode 100644 src/main/java/com/crowdar/examples/steps/ShoppingSteps.java create mode 100644 src/main/resources/browsers/src/main/resources/locators/store.properties create mode 100644 src/main/resources/locators/account.properties create mode 100644 src/main/resources/locators/addresses.properties create mode 100644 src/main/resources/locators/articlePreferences.properties create mode 100644 src/main/resources/locators/login.properties create mode 100644 src/main/resources/locators/orderConfirmation.properties create mode 100644 src/main/resources/locators/orderSummary.properties create mode 100644 src/main/resources/locators/payment.properties create mode 100644 src/main/resources/locators/productsCategoryPage.properties create mode 100644 src/main/resources/locators/shipping.properties create mode 100644 src/main/resources/locators/shoppingCart.properties create mode 100644 src/main/resources/locators/shoppingHomePage.properties delete mode 100644 src/test/resources/features/googleSearch.feature create mode 100644 src/test/resources/features/shoppingFlow.feature diff --git a/src/main/java/com/crowdar/examples/pages/AddressesPage.java b/src/main/java/com/crowdar/examples/pages/AddressesPage.java new file mode 100644 index 0000000..3873a9c --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/AddressesPage.java @@ -0,0 +1,21 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class AddressesPage extends PageBaseShopping{ + + public AddressesPage(RemoteWebDriver driver) { + super(driver); + this.url = ""; + } + + public void verifyAddressesPage(){ + Assert.assertEquals(getText("addresses.h1_titlepage"), "ADDRESSES"); + } + + public void clickProceedToCheckout(){ + click("addresses.proc_to_checkout_btn",true); + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/ArticlePreferencesPage.java b/src/main/java/com/crowdar/examples/pages/ArticlePreferencesPage.java new file mode 100644 index 0000000..150b952 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/ArticlePreferencesPage.java @@ -0,0 +1,63 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +import java.util.List; + +public class ArticlePreferencesPage extends PageBaseShopping{ + + private String SELECT_SIZE_ID = "group_1"; + + public ArticlePreferencesPage(RemoteWebDriver driver) { + super(driver); + this.url = ""; + } + + public void verifyArticlePage() { + waitPresence("articlePreferences.article_title"); + Assert.assertTrue(isPresent("articlePreferences.article_title"), "El elemento no es visible"); + } + + public void setSize(String size){ + selectOptionDropdownByText(By.id(SELECT_SIZE_ID), size); + } + + public void setQuantity(String qtity){ + setInput("articlePreferences.input_quantity",qtity,true); + } + + public void setColor(String color){ + List colorList = getElements("articlePreferences.list_colors"); + for (WebElement colorElement: colorList) { + if(colorElement.getAttribute("name").toLowerCase().equals(color.toLowerCase())){ + colorElement.click(); + break; + } + } + } + + public void clickButton(String boton){ + switch (boton){ + case "Add to cart": clickAddToCartButton(); break; + case "Proceed to checkout": clickProceedToCheckButton(); break; + } + } + + public void clickAddToCartButton(){ + if(isPresent("articlePreferences.add_to_cart_btn")){ + click("articlePreferences.add_to_cart_btn"); + } + } + + public void clickProceedToCheckButton(){ + if(isPresent("articlePreferences.proc_to_checkout_btn")){ + click("articlePreferences.proc_to_checkout_btn"); + } + } + + + +} diff --git a/src/main/java/com/crowdar/examples/pages/LoginPage.java b/src/main/java/com/crowdar/examples/pages/LoginPage.java new file mode 100644 index 0000000..3d4ee8e --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/LoginPage.java @@ -0,0 +1,35 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class LoginPage extends PageBaseShopping { + + public LoginPage(RemoteWebDriver driver) { + super(driver); + this.url = ""; //here you can define the custom paths For example:"/search" --> www.googe.com/search + } + + public void verifyLoginScreen() { + waitPresence("login.h3_title_form"); + Assert.assertEquals(getText("login.h3_title_form"), "ALREADY REGISTERED?"); + } + + public void setEmail(String email){ + if (isPresent("login.email_input")){ + setInput("login.email_input",email); + } + } + + public void setPassword(String pass){ + if (isPresent("login.pass_input")){ + setInput("login.pass_input",pass); + + } + + } + + +} diff --git a/src/main/java/com/crowdar/examples/pages/MyAccountPage.java b/src/main/java/com/crowdar/examples/pages/MyAccountPage.java new file mode 100644 index 0000000..1caba15 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/MyAccountPage.java @@ -0,0 +1,34 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +import java.util.List; + +public class MyAccountPage extends PageBaseShopping { + + public MyAccountPage(RemoteWebDriver driver) { + super(driver); + this.url = ""; //here you can define the custom paths For example:"/search" --> www.googe.com/search + } + + public void verifyAccountScreen(){ + waitPresence("account.h1_titlepage"); + Assert.assertEquals(getElement("account.h1_titlepage").getText(), "MY ACCOUNT"); + } + + + public void clickTabPage(String categoryNavName) { + List list_tabs = getElements("account.list_tabs"); + for (WebElement tab : list_tabs) { + String tabName = tab.getText().toUpperCase(); + if (tabName.toUpperCase().equals(categoryNavName.toUpperCase())) { + click(tab); + break; + } + } + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/OrderConfirmationPage.java b/src/main/java/com/crowdar/examples/pages/OrderConfirmationPage.java new file mode 100644 index 0000000..f4e3d2d --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/OrderConfirmationPage.java @@ -0,0 +1,17 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class OrderConfirmationPage extends PageBaseShopping{ + + public OrderConfirmationPage(RemoteWebDriver driver) { + super(driver); + this.url=""; + } + + public void verifyOrderConfirmationPage(){ + Assert.assertEquals(getText("orderConfirmation.h1_titlepage"), "ORDER CONFIRMATION"); + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/OrderSummaryPage.java b/src/main/java/com/crowdar/examples/pages/OrderSummaryPage.java new file mode 100644 index 0000000..0ac5233 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/OrderSummaryPage.java @@ -0,0 +1,23 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class OrderSummaryPage extends PageBaseShopping{ + + + + public OrderSummaryPage(RemoteWebDriver driver) { + super(driver); + this.url=""; + } + + public void verifyOrderSummaryPage(){ + Assert.assertEquals(getText("orderSummary.h1_titlepage"), "ORDER SUMMARY"); + } + + public void clickConfirmOrderBtn(){ + click("orderSummary.confirm_order_btn"); + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/PageBaseShopping.java b/src/main/java/com/crowdar/examples/pages/PageBaseShopping.java new file mode 100644 index 0000000..11e0dcc --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/PageBaseShopping.java @@ -0,0 +1,14 @@ +package com.crowdar.examples.pages; + +import com.crowdar.core.pageObjects.PageBaseWeb; +import org.openqa.selenium.remote.RemoteWebDriver; + +public class PageBaseShopping extends PageBaseWeb { + + public PageBaseShopping(RemoteWebDriver driver) { + super(driver); + BASE_URL = "http://automationpractice.com"; + } + + +} diff --git a/src/main/java/com/crowdar/examples/pages/PaymentMethodPage.java b/src/main/java/com/crowdar/examples/pages/PaymentMethodPage.java new file mode 100644 index 0000000..d136bd3 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/PaymentMethodPage.java @@ -0,0 +1,32 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class PaymentMethodPage extends PageBaseShopping{ + + public PaymentMethodPage(RemoteWebDriver driver) { + super(driver); + this.url = ""; + } + + public void verifyPaymentMethodPage(){ + Assert.assertTrue(isPresent("payment.h1_titlepage"), "El elemento no es visible"); + } + + + + public void choosePaymentMethodBtn(String button){ + + switch (button.toUpperCase()){ + case "BANK WIRE": + click("payment.bankwire_btn"); + break; + case "CHECK": + click("payment.cheque_btn"); + break; + } + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/ProductCategoryPage.java b/src/main/java/com/crowdar/examples/pages/ProductCategoryPage.java new file mode 100644 index 0000000..8a6c40d --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/ProductCategoryPage.java @@ -0,0 +1,47 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +import java.util.List; + +public class ProductCategoryPage extends PageBaseShopping { + + public ProductCategoryPage(RemoteWebDriver driver) { + super(driver); + this.url = ""; //here you can define the custom paths For example:"/search" --> www.googe.com/search + } + + + public void verifyTabPage(String categoryNavName) { + + if (categoryNavName.toUpperCase().equals("WOMEN")) { + Assert.assertEquals(getText("productsCategoryPage.span_categoryname"), "Women"); + } else { + if (categoryNavName.toUpperCase().equals("DRESSES")) { + Assert.assertEquals(getText("productsCategoryPage.span_categoryname"), "Dresses"); + } else { + if (categoryNavName.toUpperCase().equals("T-SHIRTS")) { + Assert.assertEquals(getText("productsCategoryPage.span_categoryname"), "T-shirts"); + } + } + } + + + + } + + public void clickArticle(String nomArticulo) { + List listArticlesElements = getElements("productsCategoryPage.list_link_articles"); + for (WebElement articulo:listArticlesElements) { + if(nomArticulo.equals(articulo.getAttribute("title"))){//tomamos el atributo title + articulo.click(); + break; + } + + } + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/ShippingPage.java b/src/main/java/com/crowdar/examples/pages/ShippingPage.java new file mode 100644 index 0000000..7459e43 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/ShippingPage.java @@ -0,0 +1,28 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class ShippingPage extends PageBaseShopping{ + + private String INPUT_CHECKBOX_TERMS_ID = "cgv"; + + public ShippingPage(RemoteWebDriver driver) { + super(driver); + this.url = ""; + } + + public void verifyShippingPage(){ + Assert.assertEquals(getText("shipping.h1_titlepage"), "SHIPPING"); + } + + public void clickProceedToCheckout(){ + click("shipping.proc_to_checkout_btn",false); + } + + public void clickTerms(){ + selectCheckbox(By.id(INPUT_CHECKBOX_TERMS_ID)); + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/ShoppingCartPage.java b/src/main/java/com/crowdar/examples/pages/ShoppingCartPage.java new file mode 100644 index 0000000..defb869 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/ShoppingCartPage.java @@ -0,0 +1,21 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class ShoppingCartPage extends PageBaseShopping{ + + public ShoppingCartPage(RemoteWebDriver driver) { + super(driver); + this.url = ""; //here you can define the custom paths For example:"/search" --> www.googe.com/search + } + + public void verifyShoppingCartPage() { + Assert.assertTrue(isPresent("shoppingCart.h1_titlepage"), "SHOPPING-CART SUMMARY"); + } + + public void clickProceedToCheckout(){ + click("shoppingcart.proc_to_checkout_btn", true); + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/ShoppingHomePage.java b/src/main/java/com/crowdar/examples/pages/ShoppingHomePage.java new file mode 100644 index 0000000..9956e2f --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/ShoppingHomePage.java @@ -0,0 +1,113 @@ +package com.crowdar.examples.pages; + +import com.crowdar.core.Injector; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class ShoppingHomePage extends PageBaseShopping { + + public ShoppingHomePage(RemoteWebDriver driver) { + super(driver); + this.url = ""; //here you can define the custom paths For example:"/search" --> www.googe.com/search + } + + public void go() { + navigateToCompleteURL(); + } + + public void verifyHome() { + Assert.assertTrue(isPresent("shoppingHomePage.header_logo"), "El elemento no es visible"); + } + + public void clickButton(String button) { + switch (button) { + case "Sign in": + clickSignInButton(); + break; + case "Add to cart": + Injector._page(ArticlePreferencesPage.class).clickAddToCartButton(); + break; + case "Proceed to checkout": + Injector._page(ShoppingHomePage.class).clickProceedToCheckButton(button); + break; + case "I confirm my order": + Injector._page(OrderSummaryPage.class).clickConfirmOrderBtn(); + break; + default: + System.out.println("La opción que busca no está configurada"); + break; + } + } + + public void clickSignInButton() { + if (isPresent("shoppingHomePage.sign_in_button") + && isPresent("shoppingHomePage.sign_in")) { + click("shoppingHomePage.sign_in"); + } + if (isPresent("shoppingHomePage.sign_in_button")) { + click("shoppingHomePage.sign_in_button"); + } + } + + public void clickProceedToCheckButton(String button){ + if(isPresent("shipping.proc_to_checkout_btn")){ + Injector._page(ShippingPage.class).clickProceedToCheckout(); + } else { + if(isPresent("addresses.proc_to_checkout_btn")){ + Injector._page(AddressesPage.class).clickProceedToCheckout(); + } else { + if(isPresent("shoppingcart.proc_to_checkout_btn")){ + Injector._page(ShoppingCartPage.class).clickProceedToCheckout(); + } else { + if(isPresent("articlePreferences.proc_to_checkout_btn")){ + Injector._page(ArticlePreferencesPage.class).clickButton(button); + } + } + } + } + } + + public void redirectScreen(String window) { + switch (window.toUpperCase()) { + case "AUTHENTICATION": + Injector._page(LoginPage.class).verifyLoginScreen(); + break; + case "MY ACCOUNT": + Injector._page(MyAccountPage.class).verifyAccountScreen(); + break; + case "WOMEN": + case "DRESSES": + case "T-SHIRTS": + Injector._page(ProductCategoryPage.class).verifyTabPage(window); + break; + case "ARTICLE PREFERENCES": + Injector._page(ArticlePreferencesPage.class).verifyArticlePage(); + break; + case "SHOPPING-CART SUMMARY": + Injector._page(ShoppingCartPage.class).verifyShoppingCartPage(); + break; + case "ADDRESSES": + Injector._page(AddressesPage.class).verifyAddressesPage(); + break; + case "SHIPPING": + Injector._page(ShippingPage.class).verifyShippingPage(); + break; + case "PLEASE CHOOSE YOUR PAYMENT METHOD": + Injector._page(PaymentMethodPage.class).verifyPaymentMethodPage(); + break; + case "ORDER SUMMARY": + Injector._page(OrderSummaryPage.class).verifyOrderSummaryPage(); + break; + case "ORDER CONFIRMATION": + Injector._page(OrderConfirmationPage.class).verifyOrderConfirmationPage(); + break; + default: + System.out.println("La opción que busca no está configurada"); + break; + + + } + } + + +} diff --git a/src/main/java/com/crowdar/examples/steps/ShoppingSteps.java b/src/main/java/com/crowdar/examples/steps/ShoppingSteps.java new file mode 100644 index 0000000..23543e7 --- /dev/null +++ b/src/main/java/com/crowdar/examples/steps/ShoppingSteps.java @@ -0,0 +1,72 @@ +package com.crowdar.examples.steps; + +import com.crowdar.core.Injector; +import com.crowdar.core.PageSteps; +import com.crowdar.examples.pages.*; +import io.cucumber.java.en.*; + +public class ShoppingSteps extends PageSteps { + + @Given("el cliente se encuentra en la pagina de Home") + public void elClienteSeEncuentraEnLaPaginaDeHome() { + Injector._page(ShoppingHomePage.class).go(); + Injector._page(ShoppingHomePage.class).verifyHome(); + } + + @When("el cliente hace click en el botón '(.*)'") + public void elClienteHaceClickEnElBotónButton(String button) { + Injector._page(ShoppingHomePage.class).clickButton(button); + } + + @Then("el cliente verifica que fue redireccionado a la pantalla de '(.*)'") + public void elClienteVerificaQueFueRedireccionadoALaPantallaDeWindow(String window) { + Injector._page(ShoppingHomePage.class).redirectScreen(window); + } + + @When("el cliente ingresa su email '(.*)'") + public void elClienteIngresaSuEmailEmail(String email) { + Injector._page(LoginPage.class).setEmail(email); + } + + @And("el cliente ingresa su password '(.*)'") + public void elClienteIngresaSuPasswordPassword(String password) { + Injector._page(LoginPage.class).setPassword(password); + } + + + @When("el cliente hace click en la categoría '(.*)'") + public void elClienteHaceClickEnLaCategoríaCategory(String navName) { + Injector._page(MyAccountPage.class).clickTabPage(navName); + } + + @When("el cliente selecciona el artículo '(.*)'") + public void elClienteSeleccionaElArtículoNroArticulo(String nomArticulo) { + Injector._page(ProductCategoryPage.class).clickArticle(nomArticulo); + } + + + @When("el cliente selecciona la talla '(.*)'") + public void elClienteSeleccionaLaTallaSize(String size) { + Injector._page(ArticlePreferencesPage.class).setSize(size); + } + + @And("el cliente selecciona la cantidad '(.*)'") + public void elClienteSeleccionaLaCantidadQuantity(String quantity) { + Injector._page(ArticlePreferencesPage.class).setQuantity(quantity); + } + + @And("el cliente selecciona el color '(.*)'") + public void elClienteSeleccionaElColorColor(String color) { + Injector._page(ArticlePreferencesPage.class).setColor(color); + } + + @When("el cliente acepta los términos y condiciones") + public void elClienteAceptaLosTérminosYCondiciones() { + Injector._page(ShippingPage.class).clickTerms(); + } + + @When("el cliente elige el método de pago '(.*)'") + public void elClienteEligeElMétodoDePagoPaymentMethod(String paymentMethod) { + Injector._page(PaymentMethodPage.class).choosePaymentMethodBtn(paymentMethod); + } +} diff --git a/src/main/resources/browsers/src/main/resources/locators/store.properties b/src/main/resources/browsers/src/main/resources/locators/store.properties new file mode 100644 index 0000000..b4fe1a8 --- /dev/null +++ b/src/main/resources/browsers/src/main/resources/locators/store.properties @@ -0,0 +1 @@ +signin_button = CSS:#header > div.nav > div > div > nav > div.header_user_info > a \ No newline at end of file diff --git a/src/main/resources/locators/account.properties b/src/main/resources/locators/account.properties new file mode 100644 index 0000000..66e0c77 --- /dev/null +++ b/src/main/resources/locators/account.properties @@ -0,0 +1,5 @@ +h1_titlepage = CSS:#center_column > h1 +tab_women = XPATH://*[@id="block_top_menu"]/ul/li[1]/a +tab_dresses = XPATH://*[@id="block_top_menu"]/ul/li[2]/a +tab_tshirt = XPATH://*[@id="block_top_menu"]/ul/li[3]/a +list_tabs = XPATH://*[@id="block_top_menu"]/ul/li/a diff --git a/src/main/resources/locators/addresses.properties b/src/main/resources/locators/addresses.properties new file mode 100644 index 0000000..390ede0 --- /dev/null +++ b/src/main/resources/locators/addresses.properties @@ -0,0 +1,2 @@ +h1_titlepage = XPATH://*[@id="center_column"]/h1 +proc_to_checkout_btn = CSS:#center_column > form > p > button diff --git a/src/main/resources/locators/articlePreferences.properties b/src/main/resources/locators/articlePreferences.properties new file mode 100644 index 0000000..23bb59c --- /dev/null +++ b/src/main/resources/locators/articlePreferences.properties @@ -0,0 +1,5 @@ +article_title = CSS:#center_column > div > div > div.pb-center-column.col-xs-12.col-sm-4 > h1 +list_colors = CSS:#color_to_pick_list > li > a +input_quantity = ID:quantity_wanted +add_to_cart_btn = CSS:#add_to_cart > button +proc_to_checkout_btn = CSS:#layer_cart > div div > div > a diff --git a/src/main/resources/locators/login.properties b/src/main/resources/locators/login.properties new file mode 100644 index 0000000..0ac7c2a --- /dev/null +++ b/src/main/resources/locators/login.properties @@ -0,0 +1,3 @@ +h3_title_form = CSS:#login_form > h3 +email_input = ID:email +pass_input = ID:passwd diff --git a/src/main/resources/locators/orderConfirmation.properties b/src/main/resources/locators/orderConfirmation.properties new file mode 100644 index 0000000..51afe5e --- /dev/null +++ b/src/main/resources/locators/orderConfirmation.properties @@ -0,0 +1,2 @@ +h1_titlepage = CSS:#center_column > h1 +proc_to_checkout_btn = CSS:#form > p > button diff --git a/src/main/resources/locators/orderSummary.properties b/src/main/resources/locators/orderSummary.properties new file mode 100644 index 0000000..0a7b0f3 --- /dev/null +++ b/src/main/resources/locators/orderSummary.properties @@ -0,0 +1,3 @@ +h1_titlepage = CSS:#center_column > h1 +confirm_order_btn = CSS:#cart_navigation > button + diff --git a/src/main/resources/locators/payment.properties b/src/main/resources/locators/payment.properties new file mode 100644 index 0000000..c8bc2cc --- /dev/null +++ b/src/main/resources/locators/payment.properties @@ -0,0 +1,3 @@ +h1_titlepage = CSS:#center_column > h1 +bankwire_btn = XPATH://*[@id="HOOK_PAYMENT"]/div[1]/div/p/a +cheque_btn = XPATH://*[@id="HOOK_PAYMENT"]/div[2]/div/p/a diff --git a/src/main/resources/locators/productsCategoryPage.properties b/src/main/resources/locators/productsCategoryPage.properties new file mode 100644 index 0000000..6073056 --- /dev/null +++ b/src/main/resources/locators/productsCategoryPage.properties @@ -0,0 +1,3 @@ +span_categoryname = CSS:#center_column > div.content_scene_cat > div > div > span +list_link_articles = CSS:#center_column > ul > li > div > div > h5 > a.product-name +span_articles = CSS:#center_column > h1 > span.heading-counter diff --git a/src/main/resources/locators/shipping.properties b/src/main/resources/locators/shipping.properties new file mode 100644 index 0000000..8aa0127 --- /dev/null +++ b/src/main/resources/locators/shipping.properties @@ -0,0 +1,2 @@ +h1_titlepage = CSS:#center_column > #carrier_area > h1 +proc_to_checkout_btn = CSS:#form > p > button diff --git a/src/main/resources/locators/shoppingCart.properties b/src/main/resources/locators/shoppingCart.properties new file mode 100644 index 0000000..99a1961 --- /dev/null +++ b/src/main/resources/locators/shoppingCart.properties @@ -0,0 +1,2 @@ +h1_titlepage = CSS:#center_column > h1 +proc_to_checkout_btn = CSS:#center_column > p.cart_navigation.clearfix > a.button.btn.btn-default.standard-checkout.button-medium diff --git a/src/main/resources/locators/shoppingHomePage.properties b/src/main/resources/locators/shoppingHomePage.properties new file mode 100644 index 0000000..1d1dc92 --- /dev/null +++ b/src/main/resources/locators/shoppingHomePage.properties @@ -0,0 +1,3 @@ +header_logo = ID:header_logo +sign_in_button = CSS:#header > div > div > div > nav > div > a +sign_in = ID:SubmitLogin \ No newline at end of file diff --git a/src/test/resources/features/googleSearch.feature b/src/test/resources/features/googleSearch.feature deleted file mode 100644 index f490395..0000000 --- a/src/test/resources/features/googleSearch.feature +++ /dev/null @@ -1,25 +0,0 @@ -Feature: As a potential client i need to search in google to find a web site - - @Smoke - Scenario: The client search by "crowdar" - Given The client is in google page - When The client search for word crowdar - Then The client verify that results are shown properly - - @Smoke - Scenario: The client search by "automation" - Given The client is in google page - When The client search for word automation - Then The client verify that results are shown properly - - @Smoke - Scenario: The client search by "docker" - Given The client is in google page - When The client search for word docker - Then The client verify that results are shown properly - - @Smoke - Scenario: The client search by "vagrant" - Given The client is in google page - When The client search for word vagrant - Then The client verify that results are shown properly \ No newline at end of file diff --git a/src/test/resources/features/shoppingFlow.feature b/src/test/resources/features/shoppingFlow.feature new file mode 100644 index 0000000..72cdaf9 --- /dev/null +++ b/src/test/resources/features/shoppingFlow.feature @@ -0,0 +1,51 @@ +Feature: Como cliente quiero + + @Smoke @Regresion @ShoppingFlow + Scenario Outline: El cliente se logea, va al home, selecciona distintos productos para comprar y pasa por distintas ventanas hasta finalizar el proceso de compra. + Given el cliente se encuentra en la pagina de Home + When el cliente hace click en el botón 'Sign in' + Then el cliente verifica que fue redireccionado a la pantalla de 'AUTHENTICATION' + + When el cliente ingresa su email '' + And el cliente ingresa su password '' + And el cliente hace click en el botón 'Sign in' + Then el cliente verifica que fue redireccionado a la pantalla de 'MY ACCOUNT' + + When el cliente hace click en la categoría '' + Then el cliente verifica que fue redireccionado a la pantalla de '' + + When el cliente selecciona el artículo '' + Then el cliente verifica que fue redireccionado a la pantalla de 'ARTICLE PREFERENCES' + + When el cliente selecciona la talla '' + And el cliente selecciona la cantidad '' + And el cliente selecciona el color '' + And el cliente hace click en el botón 'Add to cart' + And el cliente hace click en el botón 'Proceed to checkout' + Then el cliente verifica que fue redireccionado a la pantalla de 'SHOPPING-CART SUMMARY' + + When el cliente hace click en el botón 'Proceed to checkout' + Then el cliente verifica que fue redireccionado a la pantalla de 'ADDRESSES' + + When el cliente hace click en el botón 'Proceed to checkout' + Then el cliente verifica que fue redireccionado a la pantalla de 'SHIPPING' + + When el cliente acepta los términos y condiciones + And el cliente hace click en el botón 'Proceed to checkout' + Then el cliente verifica que fue redireccionado a la pantalla de 'PLEASE CHOOSE YOUR PAYMENT METHOD' + + When el cliente elige el método de pago '' + Then el cliente verifica que fue redireccionado a la pantalla de 'ORDER SUMMARY' + + When el cliente hace click en el botón 'I confirm my order' + Then el cliente verifica que fue redireccionado a la pantalla de 'ORDER CONFIRMATION' + + + + + + Examples: + | email | password | category | nomArticulo | size | quantity | color | paymentMethod | + | testing.crowdar@testing.net.com | 12345 | WOMEN | Blouse | L | 3 | Orange | check | + | testing.crowdar@testing.net.com | 12345 | DRESSES | Printed Dress | S | 20 | Blue | bank wire | + | testing.crowdar@testing.net.com | 12345 | T-SHIRTS | Faded Short Sleeve T-shirts | M | 7 | Blue | check |