Saltar al contenido principal
Página

Ejercicio practico Eribank con ScreenPlay

Lo primero que realizaremos será iniciar el servidor Appium, abrimos el aplicativo de appium y nos dirigimos a la pestaña “Advanced”




Configuramos los siguientes campos:

  • Server Address –> 0.0.0.0
  • Server Port –> 4723
  • Allow Session Override –> Activamos esta casilla

damos clic en “Start Server





A) Lo primero que debemos hacer en eclipse es crear un proyecto gradle. Para ellos damos clic en el menú File - New – Project 



En la ventana "New Project" seleccionar la opción "Gradle project" y continuar con las opciones por defecto del asistente hasta que nos solicite ingresar el nombre del proyecto. Ingresamos el nombre del proyecto y damos clic a “Finish”




Al finalizar los pasos del asistente, en el panel del Project Explorer de Eclipse, veremos que se ha creado el proyecto "AppiumWithScreenPlay" el cual tiene la siguiente estructura: 





Antes de continuar con los pasos para la creación de nuestro proyecto, vamos a explicar algunas partes del proyecto. 

Directorios 

src/main/java: La función de este directorio es la de almacenar todo el código java que no está directamente relacionado con la prueba, es decir, clases de utilidades, modelos, pages entre otros.  

src/test/java: La función de este directorio es la de almacenar todo el código java directamente relacionado con la prueba. 

2) En este punto lo que haremos será agregar todas las dependencias necesarias para que nuestro proyecto trabaje correctamente. Para ello debemos modificar el archivo "build.gradle" y copiar el siguiente texto  




 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
repositories {
    mavenLocal()
    jcenter()
}

buildscript {
    repositories {
        mavenLocal()
        jcenter()
    }
    dependencies {
        classpath("net.serenity-bdd:serenity-gradle-plugin:2.0.2")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'net.serenity-bdd.aggregator'

dependencies {
    testCompile 'net.serenity-bdd:serenity-core:2.0.2'
    testCompile 'net.serenity-bdd:serenity-junit:2.0.2'
    testCompile('junit:junit:4.12')
    testCompile('org.assertj:assertj-core:3.11.1')
    testCompile('org.slf4j:slf4j-simple:1.7.25')

    compile 'net.serenity-bdd:serenity-core:2.0.2'
    compile 'net.serenity-bdd:serenity-junit:2.0.2'
    compile 'net.serenity-bdd:serenity-cucumber:1.9.8'
    compile 'net.serenity-bdd.maven.plugins:serenity-maven-plugin:1.2.5-rc.6'
    compile 'org.apache.maven.plugins:maven-surefire-plugin:2.22.1'
}

tasks.withType(Test) {
    systemProperty 'webdriver.driver', System.getProperty('webdriver.driver', 'chrome')
    systemProperty 'tags', System.getProperty('tags', '')
}
gradle.startParameter.continueOnFailure = true


Una vez copiado, debemos refrescar gradle para que inicie la descarga de las dependencias, así que debemos dar clic derecho sobre el proyecto y seleccionar la opción "Gradle - Refresh Gradle Project". 




3) A partir de este momento, empezaremos a modificar el arquetipo de nuestro proyecto, para que nuestro código quede mejor organizado y en futuro sea más fácil hacer refactor en caso de ser necesario. 


Lo primero que haremos será eliminar los paquetes por defecto en los directorios src/main/java y src/test/java y crear en cada uno de ellos un paquete al cual nombraremos " co.com.qvision.eribank". 




Dentro del paquete "co.com.qvision.eribank" del directorio "src/main/java", crearemos los directorios que se encargarán de representar cada una de las capas de nuestro patrón de diseño, en nuestro caso usaremos el patrón de diseño Screenplay, de manera que necesitaremos como mínimo los paquetes: userinterfaces, questions, exceptions, models, interactions, tasks y a partir de allí todos los que consideremos necesarios, por ejemplo, se acostumbra a tener un paquete utils para almacenar allí las clases con funcionalidades transversales a la automatización. 

 

Dentro del paquete "co.com.qvision.eribank" del directorio "src/main/java", crearemos los directorios "runners" y "stepdefinitions". 

 

Por último crearemos el source folder "src/test/resources", para ello daremos click derecho en la raíz del proyecto, seleccionaremos la opción New - Source Folder. 

4) A partir de este punto crearemos todo el código necesario para poder ejecutar nuestra prueba.   

 

Dentro del directorio test, hay un source folder llamado "src/test/resources" cuya función es el almacenar todos aquellos elementos de la prueba que no son código java. Es allí donde se crea el paquete features, el cual almacenará todos los archivos. 

 

Para ello primero daremos click derecho en el paquete "features" y seleccionaremos la opción New - File, en la ventana New File escribir "login_user.feature" y aceptar. Copiar la historia de usuario en formato Gherkin. 




Una vez hecho esto, veremos que Eclipse nos muestra unas advertencias en cada uno de los steps (Given, When, y Then), esto es porque Cucumber detecta que aún no existen los métodos que mapean a cada uno de los steps. 

 

Lo siguiente es crear la clase que contendrá los métodos que corresponderán con cada uno de los steps del feature. Para ello lo que haremos será dar click derecho sobre el paquete “stepdefinitions” y crear la clase "LoginUserStepDefinitions", pero no agregaremos ningún código por ahora. 

 

Después de esto crearemos la clase runner que se encargará de ejecutar el feature "login_user.feature ", para ello crearemos una nueva clase en el paquete "runners", la cual llamaremos "LoginUserRunner " y copiaremos el siguiente código. 




En este punto lo que haremos será ejecutar nuestra prueba dando click derecho sobre la clase "LoginUserRunner" y seleccionaremos la opción Run As - Junit Test. Esto lo que hará será correr el proyecto y generar el reporte de Serenity con el resultado de la ejecución. En este caso como todavía no hemos creado ningún código de la prueba Serenity nos recomendará la implementación de los métodos que mapean a los steps del feature, de manera que los copiaremos y pegaremos dentro de la clase "LoginUserStepDefinitions




Al final la clase LoginUserStepDefinitions debería quedar de la siguiente manera




5) Ahora vamos a crear la clase la cual instanciara nuestro driver para que de esta manera appium inicie con la aplicación que necesitemos en un momento determinado. En un dispositivo Android.

-      Creamos la clase MyDriver en el paquete utils creado anteriormente

En esta agregaremos el siguiente código:




Creamos otra clase “ExceptionMessages” con el manejo de excepciones. 




Por último, creamos la clase MyBussinessException




En la raíz del proyecto creamos un archivo con el nombre de serenity.properties




En el archivo serenity.properties agregaremos la siguiente información:



Ahora establecemos los métodos que vamos a realizar en los stepdefinitions para después implementar estos métodos en nuestro proyecto




Ahora implementaremos los métodos necesarios para realizar los pasos establecidos, empezamos creando la tarea LoginToTheApp junto con el mapeo de sus elementos, primero mapearemos estos en la clase “LoginPage” que la situaremos en el paquete USERINTERFACES




Y implementamos la Tarea:




Ahora crearemos la Question para verificar el resultado final, esta clase se sitúa en el paquete “Questions” y se implementa de la siguiente manera:

 

Primero mapearemos el objecto con el cual estableceremos si la tarea fue completada o no:



Y implementamos la clase Question




Ahora que tenemos los métodos y clases creados

Desde la clase LoginUserRunner le damos clic derecho Run As Junit Test.



Última modificación: lunes, 11 de mayo de 2020, 22:29