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