SaucedemoSeleniumTestNGJenkins / src / test / java / tests / SauceDemoTest.java
SauceDemoTest.java
Raw
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();
		
	}
}