diff --git a/README.md b/README.md index 6b0264d..2e1e5d6 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ This project has the intention of show in a practical way how to use Lippia Automation Framework to build automated tests using Gherkin and Page-Object pattern. This sample project includes the required components as binaries, docker containers and configuration files to simply download and run a set of sample tests in your local computer, using the Lippia container stack described bellow. -*** +********************* +Crowdar Academy 2020 +********************* ## Docker stack diff --git a/pom.xml b/pom.xml index 450d521..0610b05 100644 --- a/pom.xml +++ b/pom.xml @@ -12,11 +12,12 @@ Lippia-web-example-project 3.1.2.2 - Lippia-web-example-project UTF-8 - @Smoke + + @Success + testng.xml WEB_CHROME @@ -24,6 +25,7 @@ src/main/resources/browsers/chromeCapabilities.json src/test/resources/features --glue / --glue com/crowdar/bdd/cukes --tags ${crowdar.cucumber.filter} --tags 'not @Ignore' --plugin pretty + Local diff --git a/src/main/java/com/crowdar/examples/pages/DressesPage.java b/src/main/java/com/crowdar/examples/pages/DressesPage.java new file mode 100644 index 0000000..f8e1dd2 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/DressesPage.java @@ -0,0 +1,37 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.*; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class DressesPage extends PageBaseShop { + //private final String DRESSES_SUBCAT_CSS_SELECTOR = "/html/body/div/div[2]/div/div[3]/div[2]/div[2]/ul/li[1]/h5/a"; +// private final String DRESSES_TAB_CSS_SELECTOR = "/html/body/div/div[1]/header/div[3]/div/div/div[6]/ul/li[2]/a"; + private final String DRESSES_TAB_CSS_SELECTOR = "#block_top_menu > ul > li:nth-child(2) > a"; + private final String CAT_XPATH = "//*[@id=\"center_column\"]/div[1]/div"; + private final String TITLE_CSS_SELECTOR = "/html/body/div/div[2]/div/div[3]/div[1]/div[1]/h2"; + private final String TITLE_XPATH = "/html/body/div/div[2]/div/div[3]/div[1]/div[1]/h2"; + private final String DRESSES_XPATH = "/html/body/div/div[1]/header/div[3]/div/div/div[6]/ul/li[2]/a"; + private final String CATEG_XPATH = "//*[@id=\"categories_block_left\"]/h2"; + + private final String BUTTON_TSHIRTS_CSS_SELECTOR = "#block_top_menu > ul > li:nth-child(3)"; + private final String DIV_CONTENTSCENE_XPATH = "//*[@id=\"center_column\"]/div[1]/div"; + + public DressesPage(RemoteWebDriver wdriver) { + super(wdriver); + } + + public void verifyDressesPage(){ +// Assert.assertTrue(isElementPresentAndDisplayed(By.xpath(CATEG_XPATH)), "El elemento verifyDressesPage no esta visible"); +// System.out.println("\n:::: verify DressesPage..." + "\n"); +// Assert.assertTrue(isElementPresentAndDisplayed(By.xpath(TITLE_XPATH)), ">>> El elemento TITLE_XPATH no está presente."); +// String urlDresses = driver.getCurrentUrl(); +// Assert.assertTrue(urlDresses.contains("http://automationpractice.com/index.php?id_category=8&controller=category")); + Assert.assertEquals(getWebElement(By.xpath(CATEG_XPATH)).getText(),"DRESSES"); + } + + public void clickDressesButton() { + clickElement(By.cssSelector(DRESSES_TAB_CSS_SELECTOR)); + } +} diff --git a/src/main/java/com/crowdar/examples/pages/GenericPage.java b/src/main/java/com/crowdar/examples/pages/GenericPage.java new file mode 100644 index 0000000..61d91f0 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/GenericPage.java @@ -0,0 +1,91 @@ +package com.crowdar.examples.pages; + +import com.crowdar.core.Injector; +import org.openqa.selenium.remote.RemoteWebDriver; + +public class GenericPage extends PageBaseShop { + public GenericPage(RemoteWebDriver wdriver) { + super(wdriver); + } + + public void verifyPage(String pag) { + switch (pag){ + case "Login": + //Injector._page(ShopHomePage.class).verificarPagina(pag); + Injector._page(ShopHomePage.class).verifyLoginPage(); + break; + case "My-Account": + Injector._page(ShopHomePage.class).verifyMyAccountPage(); + break; + case "DressesPage": + Injector._page(DressesPage.class).verifyDressesPage(); + break; + case "ProductPage": + Injector._page(ProductPage.class).verifyProductPage(); + break; + case "SummaryPage": + Injector._page(SummaryPage.class).verifySummaryPage(); + break; + case "AdressPage": + Injector._page(SummaryPage.class).verifyAdressesPage(); + break; + case "ShippingPage": + Injector._page(SummaryPage.class).verifyShippingPage(); + break; + case "PaymentPage": + Injector._page(SummaryPage.class).verifyPaymentPage(); + break; + case "OrderSummaryPage": + Injector._page(SummaryPage.class).verifyOrderSummaryPage(); + break; + case "OrderCompletePage": + Injector._page(SummaryPage.class).verifyOrderCompletePage(); + break; + default: + throw new IllegalStateException("Unexpected value: " + pag); + } + } + + public void clickButton(String b) { + switch (b){ + case "SignInTab": + Injector._page(ShopHomePage.class).clickSignInTab(); //Click en pestaña Sign In. + break; + case "SignInButton": + Injector._page(ShopHomePage.class).clickSignInButton(); //Click en botón Sign In. + break; + case "DressesButton": + Injector._page(DressesPage.class).clickDressesButton(); + break; + case "ProductButton": + Injector._page(ProductPage.class).clickProductButton(); + break; + case "AddToCartButton": + Injector._page(ProductPage.class).clickAddToCartButton(); + break; + case "ProceedButton": + Injector._page(ProductPage.class).clickProceedButton(); + break; + case "ProceedButtonStep1": + Injector._page(SummaryPage.class).clickProceedButtonStep1(); + break; + case "ProceedButtonAdress": + Injector._page(SummaryPage.class).clickProceedButtonAdress(); + break; + case "IAgree": + Injector._page(SummaryPage.class).clickIAgreeCheckbox(); + break; + case "ProceedButtonShipping": + Injector._page(SummaryPage.class).clickProceedButtonShipping(); + break; + case "PayByCheck": + Injector._page((SummaryPage.class)).clickPayByCheckButton(); + break; + case "ConfirmOrderButton": + Injector._page((SummaryPage.class)).clickConfirmOrderButton(); + break; + default: + throw new IllegalStateException("clickButton - Valor inesperado! -> " + b); + } + } +} diff --git a/src/main/java/com/crowdar/examples/pages/GoogleHomePage.java b/src/main/java/com/crowdar/examples/pages/GoogleHomePage.java deleted file mode 100644 index 3e46fab..0000000 --- a/src/main/java/com/crowdar/examples/pages/GoogleHomePage.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.crowdar.examples.pages; - -import org.openqa.selenium.By; -import org.openqa.selenium.remote.RemoteWebDriver; - -public class GoogleHomePage extends PageBaseGoogle { - - private final String INPUT_SEARCH_XPATH = "//input[@class='gLFyf gsfi']"; - private final String SEARCH_BUTTON_NAME = "btnK"; - - public GoogleHomePage(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 enterSearchCriteria(String text) { - completeField(By.xpath(INPUT_SEARCH_XPATH), text); - } - - public void clickSearchButton() { - clickElement(By.name(SEARCH_BUTTON_NAME)); - } - -} diff --git a/src/main/java/com/crowdar/examples/pages/GoogleSearchResultPage.java b/src/main/java/com/crowdar/examples/pages/GoogleSearchResultPage.java deleted file mode 100644 index df43593..0000000 --- a/src/main/java/com/crowdar/examples/pages/GoogleSearchResultPage.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.crowdar.examples.pages; - -import org.openqa.selenium.By; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.RemoteWebDriver; - -public class GoogleSearchResultPage extends PageBaseGoogle { - - private WebElement stats() { - return getWebElement(By.id("rcnt")); - } - - public GoogleSearchResultPage(RemoteWebDriver driver) { - super(driver); - this.url = ""; //here you can define the custom paths For example:"/search" --> www.googe.com/search - } - - public String getStats() { - return stats().getText(); - } - -} diff --git a/src/main/java/com/crowdar/examples/pages/PageBaseGoogle.java b/src/main/java/com/crowdar/examples/pages/PageBaseGoogle.java deleted file mode 100644 index 347367a..0000000 --- a/src/main/java/com/crowdar/examples/pages/PageBaseGoogle.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.crowdar.examples.pages; - -import com.crowdar.core.pageObjects.PageBaseWeb; -import org.openqa.selenium.remote.RemoteWebDriver; - -public class PageBaseGoogle extends PageBaseWeb { - - public PageBaseGoogle(RemoteWebDriver driver) { - super(driver); - BASE_URL = "http://www.google.com.ar"; - } - - -} diff --git a/src/main/java/com/crowdar/examples/pages/PageBaseShop.java b/src/main/java/com/crowdar/examples/pages/PageBaseShop.java new file mode 100644 index 0000000..851e775 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/PageBaseShop.java @@ -0,0 +1,14 @@ +package com.crowdar.examples.pages; + +import com.crowdar.core.pageObjects.PageBaseWeb; +import org.openqa.selenium.remote.RemoteWebDriver; + +public class PageBaseShop extends PageBaseWeb { + + public PageBaseShop(RemoteWebDriver wdriver) { + super(wdriver); + BASE_URL = "http://automationpractice.com"; + } + + +} diff --git a/src/main/java/com/crowdar/examples/pages/ProductPage.java b/src/main/java/com/crowdar/examples/pages/ProductPage.java new file mode 100644 index 0000000..eaabe11 --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/ProductPage.java @@ -0,0 +1,47 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class ProductPage extends PageBaseShop { + public ProductPage(RemoteWebDriver wdriver) { + super(wdriver); + this.url = ""; + } + + private final String PRODUCT_CSS_SELECTOR = "#center_column > ul > li.ajax_block_product.col-xs-12.col-sm-6.col-md-4.first-in-line.first-item-of-tablet-line.first-item-of-mobile-line > div > div.right-block > h5 > a";//"#center_column > ul > li.ajax_block_product.col-xs-12.col-sm-6.col-md-4.first-in-line.first-item-of-tablet-line.first-item-of-mobile-line > div > div.left-block > div > a.product_img_link > img"; + private final String ADD_CART_BUTTON_CSS_SELECTOR ="#add_to_cart > button > span"; + private final String WINDOW_LAYERCART_ID = "layer_cart"; + private final String PROCEED_BUTTON_CSS_SELECTOR = "#layer_cart > div.clearfix > div.layer_cart_cart.col-xs-12.col-md-6 > div.button-container > a"; + + public void verifyProductPage(){ + String URL = driver.getCurrentUrl(); + Assert.assertTrue(URL.contains("id_product="), "Página de producto no verificada." ); + } + + public void clickProductButton(){ + clickElement(By.cssSelector(PRODUCT_CSS_SELECTOR)); + sleep(500); //zzz + } + + public void clickAddToCartButton() { + clickElement(By.cssSelector(ADD_CART_BUTTON_CSS_SELECTOR)); + sleep(500); //zzz + } + + public void checkWindow(String v) { + switch (v){ + case "LayerCart": + sleep(3000); + Assert.assertTrue(isElementPresentAndDisplayed(By.id(WINDOW_LAYERCART_ID)), "El elemento LayerCart no esta visible"); + break; + default: + throw new IllegalStateException("::checkWindow:: Valor inesperado: " + v); + } + } + + public void clickProceedButton() { + clickElement(By.cssSelector(PROCEED_BUTTON_CSS_SELECTOR)); + } +} \ No newline at end of file diff --git a/src/main/java/com/crowdar/examples/pages/ShopHomePage.java b/src/main/java/com/crowdar/examples/pages/ShopHomePage.java new file mode 100644 index 0000000..1c9bd7d --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/ShopHomePage.java @@ -0,0 +1,76 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class ShopHomePage extends PageBaseShop { + private final String TAB_SIGNIN_CSS_SELECTOR = ".login"; + private final String INPUT_EMAILADRESS_ID = "email"; + private final String INPUT_PASSWORD_ID = "passwd"; + private final String BUTTON_SIGNIN_ID = "SubmitLogin"; + private final String LABEL_MYACCOUNT_CSS_SELECTOR = "#center_column > h1"; + private final String SLIDER_HOME_ID = "slider_row"; + private final String TITLE_ALREADY_CSS_SELECTOR = "#login_form > h3:nth-child(1)"; + private final String NAVIGATION_CSS_SELECTOR = ".navigation_page"; //Ej: Home->My Account + + public ShopHomePage(RemoteWebDriver driver) { + super(driver); + this.url = ""; //here you can define the custom paths For example:"/search" --> www.google.com/search + } + + public void go(){ + navigateToCompleteURL(); //método de clase PageBaseWeb. ShopHomePage extiende de PageBaseShop que extiende de PageBaseWeb. + } + + public void verificarHome(){ + Assert.assertTrue(isElementPresentAndDisplayed(By.id(SLIDER_HOME_ID)), "El elemento no es visible."); + } + + public void verifyLoginPage(){ + Assert.assertEquals(getWebElement(By.cssSelector(TITLE_ALREADY_CSS_SELECTOR)).getText(),"ALREADY REGISTERED?"); + } + + public void verifyMyAccountPage(){ + Assert.assertEquals(getWebElement(By.cssSelector(LABEL_MYACCOUNT_CSS_SELECTOR)).getText(),"MY ACCOUNT"); + } + + public void verificarPagina(String pag){ + // System.out.println(pag); + switch (pag){ + case "Login": + //System.out.println(getWebElement(By.cssSelector(TITLE_ALREADY_CSS_SELECTOR)).getText()); + Assert.assertEquals(getWebElement(By.cssSelector(TITLE_ALREADY_CSS_SELECTOR)).getText(),"ALREADY REGISTERED?"); + break; + case "My-Account": + Assert.assertEquals(getWebElement(By.cssSelector(LABEL_MYACCOUNT_CSS_SELECTOR)).getText(),"MY ACCOUNT"); + break; + case "DressesPage": + // Assert.assertEquals(getWebElement(By.cssSelector(LABEL_MYACCOUNT_CSS_SELECTOR)).getText(),"MY ACCOUNT"); + break; + case "ProductPage": + // Assert.assertEquals(getWebElement(By.cssSelector(LABEL_MYACCOUNT_CSS_SELECTOR)).getText(),"MY ACCOUNT"); + break; + default: + System.out.println("Error!!"); + break; + } + } + + public void clickSignInButton(){ + clickElement(By.id(BUTTON_SIGNIN_ID)); + } + + public void clickSignInTab(){ + clickElement(By.cssSelector(TAB_SIGNIN_CSS_SELECTOR)); + } + + /* Completar credenciales de acceso */ + public void enterLoginEmail(String email) { + completeField(By.id(INPUT_EMAILADRESS_ID), email); + } + public void enterLoginPassword(String pass) { + completeField(By.id(INPUT_PASSWORD_ID), pass); + } + +} diff --git a/src/main/java/com/crowdar/examples/pages/SummaryPage.java b/src/main/java/com/crowdar/examples/pages/SummaryPage.java new file mode 100644 index 0000000..27a55bf --- /dev/null +++ b/src/main/java/com/crowdar/examples/pages/SummaryPage.java @@ -0,0 +1,78 @@ +package com.crowdar.examples.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.Assert; + +public class SummaryPage extends PageBaseShop { + private final String BUTTON_PROCEED_STEP1_CSS_SELECTOR = "#center_column > p.cart_navigation.clearfix > a.button.btn.btn-default.standard-checkout.button-medium"; + private final String COMBO_ADRESS_ID = "uniform-id_address_delivery"; + private final String BUTTON_PROCEED_ADRESS_CSS_SELECTOR = "#center_column > form > p > button"; + private final String BUTTON_PROCEED_SHIPPING_CSS_SELECTOR = "#form > p > button"; + private final String DIV_SHIPPING_OPTIONS_ID = "HOOK_BEFORECARRIER"; + private final String CHECKBOX_IAGREE_ID = "uniform-cgv"; + private final String HOOK_PAYMENT_ID = "HOOK_PAYMENT"; + private final String BUTTON_PAYBYCHECK_CSS_SELECTOR = "#HOOK_PAYMENT > div:nth-child(2) > div > p > a"; + private final String BUTTON_CONFIRMORDER_CSS_SELECTOR = "#cart_navigation > button"; + private final String TITLE_SUMMARY_CSS_SELECTOR = "step_end"; + + public SummaryPage(RemoteWebDriver wdriver) { + super(wdriver); + } + + public void verifySummaryPage() { + String URL = driver.getCurrentUrl(); + Assert.assertTrue(URL.contains("controller=order"), "Página Summary no verificada." ); + } + + public void clickProceedButtonStep1() { + clickElement(By.cssSelector(BUTTON_PROCEED_STEP1_CSS_SELECTOR)); +// sleep(500); //zzz + } + + public void verifyAdressesPage() { +// sleep(1000); + Assert.assertTrue(isElementPresentAndDisplayed(By.id(COMBO_ADRESS_ID)), "El elemento COMBO_ADRESS_ID no esta visible"); + } + + public void clickProceedButtonAdress() { + clickElement(By.cssSelector(BUTTON_PROCEED_ADRESS_CSS_SELECTOR)); +// sleep(900); //zzz + } + + public void verifyShippingPage() { +// sleep(2000); + Assert.assertTrue(isElementPresentAndDisplayed(By.id(DIV_SHIPPING_OPTIONS_ID)), "El elemento DIV_SHIPPING_OPTIONS_ID no esta visible"); + } + + public void clickIAgreeCheckbox() { + clickElement(By.id(CHECKBOX_IAGREE_ID)); + } + + public void clickProceedButtonShipping() { + clickElement(By.cssSelector(BUTTON_PROCEED_SHIPPING_CSS_SELECTOR)); + } + + public void verifyPaymentPage() { +// sleep(1000); + Assert.assertTrue(isElementPresentAndDisplayed(By.id(HOOK_PAYMENT_ID)), "El elemento HOOK_PAYMENT_ID no esta visible"); + } + + public void clickPayByCheckButton() { + clickElement(By.cssSelector(BUTTON_PAYBYCHECK_CSS_SELECTOR)); + } + + public void verifyOrderSummaryPage() { + Assert.assertTrue(isElementPresentAndDisplayed(By.id(TITLE_SUMMARY_CSS_SELECTOR)),"Elemento TITLE_SUMMARY_CSS_SELECTOR no visible"); + } + + public void clickConfirmOrderButton() { + clickElement(By.cssSelector(BUTTON_CONFIRMORDER_CSS_SELECTOR)); + } + + public void verifyOrderCompletePage() { + String URL = driver.getCurrentUrl(); +// System.out.println("\n:::::::: " + URL + " :::::::::::\n"); + Assert.assertTrue(URL.contains("order-confirmation"), "Página Order Complete no verificada." ); + } +} diff --git a/src/main/java/com/crowdar/examples/steps/GoogleSteps.java b/src/main/java/com/crowdar/examples/steps/GoogleSteps.java deleted file mode 100644 index 9fff4c3..0000000 --- a/src/main/java/com/crowdar/examples/steps/GoogleSteps.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.crowdar.examples.steps; - -import com.crowdar.core.Injector; -import com.crowdar.core.PageSteps; -import com.crowdar.examples.pages.GoogleHomePage; -import com.crowdar.examples.pages.GoogleSearchResultPage; -import io.cucumber.java.en.*; -import org.testng.Assert; - -public class GoogleSteps extends PageSteps { - - @Given("The client is in google page") - public void home() { - Injector._page(GoogleHomePage.class).go(); - } - - @When("The client search for word (.*)") - public void search(String criteria) { - Injector._page(GoogleHomePage.class).enterSearchCriteria(criteria); - Injector._page(GoogleHomePage.class).clickSearchButton(); - - } - - @Then("The client verify that results are shown properly") - public void statVerfication() { - Assert.assertTrue(!Injector._page(GoogleSearchResultPage.class).getStats().isEmpty()); - - } -} diff --git a/src/main/java/com/crowdar/examples/steps/ShopSteps.java b/src/main/java/com/crowdar/examples/steps/ShopSteps.java new file mode 100644 index 0000000..2025d39 --- /dev/null +++ b/src/main/java/com/crowdar/examples/steps/ShopSteps.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.DressesPage; +import com.crowdar.examples.pages.GenericPage; +import com.crowdar.examples.pages.ProductPage; +import com.crowdar.examples.pages.ShopHomePage; +import io.cucumber.java.en.*; + +public class ShopSteps extends PageSteps { + + @Given("El cliente esta en la pagina Home del sitio My Store.") + public void elClienteEstaEnLaPaginaHomeDelSitioMyStore() { + Injector._page(ShopHomePage.class).go(); //Invocar a la página deseada y el método que se quiere ejecutar. + Injector._page(ShopHomePage.class).verificarHome(); + } + + + @When("El cliente presiona el boton (.*).") + public void elClientePresionaElBoton(String b) { + Injector._page(GenericPage.class).clickButton(b); + //Injector._page(ShopHomePage.class).clickControl(b); //Click en pestaña Sign In. +// switch (b){ +// case "SignInTab": +// Injector._page(ShopHomePage.class).clickControl(b); //Click en pestaña Sign In. +// break; +// case "SignInButton": +// Injector._page(ShopHomePage.class).clickControl(b); //Click en pestaña Sign In. +// break; +// case "DressesButton": +// Injector._page(DressesPage.class).clickButton(b); +// break; + + } + + @Then("El cliente verifica que fue redireccionado a la pagina (.*).") + public void elClienteVerificaQueFueRedireccionadoALaPaginaX(String pag) { + Injector._page(GenericPage.class).verifyPage(pag); + + //Injector._page(ShopHomePage.class).verificarPagina(pag); +// switch (pag){ +// case "Login": +// Injector._page(ShopHomePage.class).verificarPagina(pag); +// break; +// case "My-Account": +// Injector._page(ShopHomePage.class).verificarPagina(pag); +// break; +// case "DressesPage": +// Injector._page(DressesPage.class).checkDressesPage(pag); +// break; +// default: +// throw new IllegalStateException("Unexpected value: " + pag); +// } + } + + @When("El cliente coloca su email (.*).") + public void elClienteColocaSuEmail(String email) { + Injector._page(ShopHomePage.class).enterLoginEmail(email); + } + + @And("El cliente ingresa su password (.*).") + public void elClienteIngresaSuPassword(String pw) { + Injector._page(ShopHomePage.class).enterLoginPassword(pw); + } + + @Then("El cliente verifica que aparece ventana (.*).") + public void elClienteVerificaQueApareceVentana(String v) { + Injector._page(ProductPage.class).checkWindow(v); + } + +} diff --git a/src/test/resources/features/Buy.feature b/src/test/resources/features/Buy.feature new file mode 100644 index 0000000..524fdc3 --- /dev/null +++ b/src/test/resources/features/Buy.feature @@ -0,0 +1,39 @@ +Feature: como cliente, quiero ingresar en el sitio de compras My Store para realizar una compra. + #fran@academy.com + #123456 + + @Buy @Success + Scenario Outline: Compra exitosa en el sitio de compras. + Given El cliente esta en la pagina Home del sitio My Store. + When El cliente presiona el boton SignInTab. + Then El cliente verifica que fue redireccionado a la pagina Login. + When El cliente coloca su email . + And El cliente ingresa su password . + And El cliente presiona el boton SignInButton. + Then El cliente verifica que fue redireccionado a la pagina My-Account. + And El cliente presiona el boton DressesButton. + Then El cliente verifica que fue redireccionado a la pagina DressesPage. + And El cliente presiona el boton ProductButton. + Then El cliente verifica que fue redireccionado a la pagina ProductPage. + And El cliente presiona el boton AddToCartButton. + Then El cliente verifica que aparece ventana LayerCart. + And El cliente presiona el boton ProceedButton. + Then El cliente verifica que fue redireccionado a la pagina SummaryPage. + And El cliente presiona el boton ProceedButtonStep1. + Then El cliente verifica que fue redireccionado a la pagina AdressPage. + And El cliente presiona el boton ProceedButtonAdress. + Then El cliente verifica que fue redireccionado a la pagina ShippingPage. + And El cliente presiona el boton IAgree. + And El cliente presiona el boton ProceedButtonShipping. + Then El cliente verifica que fue redireccionado a la pagina PaymentPage. + And El cliente presiona el boton PayByCheck. + Then El cliente verifica que fue redireccionado a la pagina OrderSummaryPage. + And El cliente presiona el boton ConfirmOrderButton. + Then El cliente verifica que fue redireccionado a la pagina OrderCompletePage. + + Examples: +# | SignInTab | email | pass | SignInButton | Login | MyAccount | DressesButton | DressesPage | ProductButton | ProductPage | AddToCartButton | LayerCart +# | SignInTab | fran@academy.com | 123456 | SignInButton | Login | My-Account | DressesButton | DressesPage | ProductButton | ProductPage | AddToCartButton | LayerCart + + | email | pass | + | fran@academy.com | 123456 | diff --git a/src/test/resources/features/Login.feature b/src/test/resources/features/Login.feature new file mode 100644 index 0000000..efd38d5 --- /dev/null +++ b/src/test/resources/features/Login.feature @@ -0,0 +1,18 @@ +Feature: como cliente, quiero ingresar mis datos de acceso para iniciar sesión en el sitio de compras My Store. + + @Login @Success + Scenario Outline: Inicio de sesion exitoso en el sitio de compras. + Given El cliente esta en la pagina Home del sitio My Store. + When El cliente presiona el boton . + Then El cliente verifica que fue redireccionado a la pagina . + When El cliente coloca su email . + And El cliente ingresa su password . + And El cliente presiona el boton . + Then El cliente verifica que fue redireccionado a la pagina . + Examples: + | SignInTab | email | pass | SignInButton | pag1 | pag2 | + | SignInTab | fran@academy.com | 123456 | SignInButton | Login | My-Account | + + #fran@academy.com + #123456 + 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