package tests; import java.io.FileReader; import java.io.IOException; import java.util.Properties; import org.openqa.selenium.WebDriver; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.DataProvider; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import com.aventstack.extentreports.MediaEntityBuilder; import com.aventstack.extentreports.Status; import pages.CartPage; import pages.CheckOutCompletePage; import pages.CheckOutStepOnePage; import pages.CheckOutStepTwoPage; import pages.LoginPage; import pages.ProductPage; import utilities.ConfigFile; import utilities.DatosExcel; import utilities.DriverManager; import utilities.ReportManager; import utilities.ScreenCapture; //Comentario parar borrar public class SauceDemoTest { WebDriver driver ; ReportManager report = new ReportManager(); String directorioDatos = "..\\Saucedemo_TestAutomationFramework\\Datos\\"; @Parameters("browser") @BeforeTest public void setup(String browser) throws IOException { if(driver == null) { DriverManager.startDriver(browser); driver = DriverManager.getDriver(); } report.startReport(); } @Test(dataProvider = "DatosInicioSesionValido", groups = {"smokeTest","regression","caseOne"}) public void CP001_LoginSuccesfull(String user,String password) throws IOException { LoginPage loginPage = new LoginPage(driver); report.createTestInstance("CP001_LoginSuccesfull"); loginPage.verifyTitle(report); loginPage.enterCredentials(user, password); report.getTest().log(Status.PASS, "Ingreso de usuario válido:", MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); loginPage.clickLogin(); report.getTest().log(Status.PASS, "Ingreso a la pagina de productos:", MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); ProductPage productPage = new ProductPage(driver); productPage.click_menu(); productPage.click_signOff(); } @Test (groups = "regression") void CP002_LoginPassFail() throws IOException { report.createTestInstance("CP002_LoginPassFail"); LoginPage loginPage = new LoginPage(driver); loginPage.verifyTitle(report); loginPage.enterCredentials(ConfigFile.read("validUser"),ConfigFile.read("invalidPass")); loginPage.clickLogin(); loginPage.errorMessageInvalidUserOrPass(); report.getTest().log(Status.PASS, "Validar error de usuario o pass incorrecto",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); } @Test (groups = "regression") void CP003_LoginInvalidUser() throws IOException { LoginPage loginPage = new LoginPage(driver); report.createTestInstance("CP003_LoginUserFail"); loginPage.verifyTitle(report); loginPage.enterCredentials(ConfigFile.read("invalidUser"),ConfigFile.read("validPass")); loginPage.clickLogin(); loginPage.errorMessageInvalidUserOrPass(); report.getTest().log(Status.PASS, "Validar error de usuario o pass incorrecto",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); } @Test(priority = 10, groups = "regression") void CP004_LoginEmptyFields() throws IOException { report.createTestInstance("CP004_EmptyFields"); LoginPage loginPage = new LoginPage(driver); loginPage.verifyTitle(report); loginPage .enterCredentials(ConfigFile.read("emptyField"),ConfigFile.read("emptyField")); loginPage .clickLogin(); loginPage .errorMessageEmptyFields(); report.getTest().log(Status.PASS, "Validar error de ingreso con campos vacíos",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); } @Test (groups = {"smokeTest","regression"}) void CP005_MakePurchase() throws IOException { report.createTestInstance("CP005_MakePurchase"); LoginPage loginPage = new LoginPage(driver); loginPage .emptyFields(); loginPage .enterCredentials(ConfigFile.read("validUser"),ConfigFile.read("validPass")); report.getTest().log(Status.PASS, "Ingreso de usuario válido:",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); loginPage .clickLogin(); ProductPage productPage = new ProductPage(driver); productPage .add_SauceLabsBikeLight(); report.getTest().log(Status.PASS, "Agregar producto a carro de compras:",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); productPage .click_shoopingCart(); report.getTest().log(Status.PASS, "Hacer click en carro de compras:",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); CartPage cartPage = new CartPage(driver); cartPage .click_checkOut(); report.getTest().log(Status.PASS, "Hacer click en checkout:",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); CheckOutStepOnePage checkOutStepOnePage = new CheckOutStepOnePage(driver); checkOutStepOnePage.completePurchaseInformation(); report.getTest().log(Status.PASS, "Completar información:",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); checkOutStepOnePage.click_continue(); CheckOutStepTwoPage checkOutStepTwoPage = new CheckOutStepTwoPage(driver); checkOutStepTwoPage.click_finish(); report.getTest().log(Status.PASS, "Compra realizada:",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); CheckOutCompletePage checkOutCompletePage = new CheckOutCompletePage(driver); checkOutCompletePage .click_backHome(); report.getTest().log(Status.PASS, "Volver a home:",MediaEntityBuilder.createScreenCaptureFromPath(ScreenCapture.capture(driver)).build()); productPage.click_menu(); productPage.click_signOff(); } @DataProvider(name = "DatosInicioSesionValido") public Object[][] obtenerDatosExcel() throws Exception { // Leer los datos que estan en el archivo excel y armar un arreglo de objetos con esos datos return DatosExcel.leerExcel(directorioDatos + "Datos_IniciarSesion.xlsx", "Hoja1"); } @AfterTest public void tearDown() { report.getExtent().flush(); System.out.println("Script finalizado"); DriverManager.closeDriver(); ConfigFile.close(); } }