El proyecto que se mostrará para realizar la demostración del funcionamiento de Zalenium, será una automatización hecha con el patron de diseño Screenplay, cuenta con Serenity para la documentación de las pruebas y la estructura del proyecto será la siguiente.

La idea del proyecto es cumplir con la siguiente característica.
Característica: busqueda simple con google @BusquedaGoogle Escenario: Utilizar el navegador google para realizar una búsqueda simple Dado El usuario ingresa al navegador google Cuando ingresa la palabra a buscar Entonces verifica la palabra buscada
Para estas operaciones dispondremos del siguiente StepDefinition.
package co.com.qvision.test.stepdefinitions; import co.com.qvision.test.questions.EncontroPalabra; import co.com.qvision.test.tasks.*; import co.com.qvision.test.userinterface.HomeGoogle; import cucumber.api.java.Before; import cucumber.api.java.es.Cuando; import cucumber.api.java.es.Dado; import cucumber.api.java.es.Entonces; import net.serenitybdd.screenplay.actors.OnStage; import net.serenitybdd.screenplay.actors.OnlineCast; import static net.serenitybdd.screenplay.actors.OnStage.theActorCalled; import static net.serenitybdd.screenplay.actors.OnStage.theActorInTheSpotlight; import static net.serenitybdd.screenplay.GivenWhenThen.seeThat; import static org.hamcrest.Matchers.is; public class BuscarPalabraGoogleStepDefinitions { @Before public void set_the_stage() { OnStage.setTheStage(new OnlineCast()); } @Dado("^El usuario ingresa al navegador google$") public void ana_ingresa_al_navegador_de_google() { theActorCalled("Ana").attemptsTo( GoogleHomeTask.openUrl(HomeGoogle.UrlGoogle) ); } @Cuando("^ingresa la palabra a buscar$") public void ana_ingresa_la_palabra_a_buscar() { theActorInTheSpotlight().attemptsTo(BuscarPalabraGoogleTasks.buscar()); } @Entonces("^verifica la palabra buscada$") public void se_verifica_la_palabra_buscada() { theActorInTheSpotlight().should(seeThat(" La busqueda ",EncontroPalabra.verificar(), is(true)).because(" %s deberia ser %s ")); } }
Y los runners, que son 4, cada uno es ejecutado en uno de los nodos creados por Zalenium y estos son similares al siguiente.
package co.com.qvision.test.runners; import cucumber.api.CucumberOptions; import cucumber.api.SnippetType; import net.serenitybdd.cucumber.CucumberWithSerenity; import org.junit.runner.RunWith; @RunWith(CucumberWithSerenity.class) @CucumberOptions( features = "src/test/resources/features/buscar_palabra_google.feature", glue = "co.com.qvision.test.stepdefinitions", snippets = SnippetType.CAMELCASE ) public class BuscarPalabraGoogle { }
Es importante también tener en cuenta la configuración de las propiedades de Serenity.
serenity.project.name = EjecucionParalelo webdriver.driver = remote webdriver.remote.url =http://localhost:4444/wd/hub webdriver.remote.driver = chrome #webdriver.driver= chrome #webdriver.chrome.driver= chromedriver.exe webdriver.wait.for.timeout = 300000 serenity.logging =VERBOSE serenity.verbose.steps =true feature.file.language = es serenity.reports.show.step.details = true serenity.console.colors = true serenity.restart.browser.for.each = NEVER #serenity.batch.count = 2 #serenity.fork.count = 1 #serenity.fork.number =1 #serenity.batch.number = 1 chrome.switches = --incognito --lang=es,--disable-popup-blocking, --disable-download-notification,--start-maximized,--test-type, --ignore-certificate-errors, --allow-running-insecure-content, --disable-translate, --always-authorize-plugins, --disable-extensions
Una vez descargadas las dependencias necesarias para poder ejecutar el proyecto, y el contenedor de Zalenium, se debe abrir el siguiente panel: http://localhost:4444/grid/admin/live, donde se podrá observar en vivo la ejecución del proyecto.
Finalment ejecutar el proyecto con el siguiente comando.
gradle clean test aggregate --info
La ejecución del programa será algo similar a esto.

En el panel de Dashboard que está en el link http://localhost:4444/dashboard/ podremos observar cada una de las grabaciones que hizo Zalenium para las pruebas ejecutadas en cada navegador de Google Chrome.

Además de lo visto anteriormente, también hemos generado un reporte con Serenity, el cuál se encuentra dentro de la carpeta target.
