Skip to content

Commit

Permalink
Add zerocode postdeploy test
Browse files Browse the repository at this point in the history
  • Loading branch information
javiertuya committed Sep 29, 2024
1 parent 5feabb9 commit 8bbd89b
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 3 deletions.
13 changes: 11 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -226,13 +226,20 @@ jobs:
done
#La configuracion para este test se hace con chrome headless contra la aplicacion desplegada
- name: Test configuration
- name: Selenium web test configuration
run: |
echo "remote.web.driver.url=headless" > src/test/resources/selenium.properties
echo "application.url=https://${{ env.APP_NAME }}.azurewebsites.net" >> src/test/resources/selenium.properties
echo "application.port=" >> src/test/resources/selenium.properties
echo "*** Selenium properties:" && cat src/test/resources/selenium.properties
#Ejecuta maven para los test test de sistema
- name: Zerocode api test configuration
run: |
echo "web.application.endpoint.host=https://${{ env.APP_NAME }}.azurewebsites.net" > src/test/resources/zerocode.properties
echo "web.application.endpoint.port=443" >> src/test/resources/zerocode.properties
echo "web.application.endpoint.context=" >> src/test/resources/zerocode.properties
echo "*** Zerocode properties:" && cat src/test/resources/zerocode.properties
#Ejecuta maven para los test de sistema
- name: Build and test
run: mvn test -Dtest=**/st/** -Dmaven.test.failure.ignore=false -U --no-transfer-progress
- name: Generate post deploy test checks
Expand All @@ -252,6 +259,8 @@ jobs:
path: |
target/site/junit*/
target/site/screenshot/
target/logs/
target/zerocode*.html
#Cada build crea una imagen en github packages, limpieza
- if: ${{ github.ref == 'refs/heads/main' }}
name: Cleanup main packages
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Este proyecto ilustra:
- Utilización de mocks
- Pruebas de servicios rest y controladores (MockMvc)
- Pruebas de un interfaz de usuario web con Selenium
- Pruebas del API con Zerocode
- Uso de lombok para generar automaticamente getters y setters de entidades y DTOs
- Automatización de pruebas BDD con JBehave (unitarias y de interfaz de usuario)
- Estructura de un proyecto maven y configuración del pom.xml:
Expand All @@ -39,7 +40,9 @@ Este proyecto ilustra:
- [rama main: producción](https://samples-test-spring-main.azurewebsites.net/)
- [otras ramas: preproducción/integración](https://samples-test-spring-develop.azurewebsites.net/)
- NOTA: el primer acceso a estos despliegues puede tardar bastantes segundos hasta que el container esté listo
- Prueba Post-deploy de sistema (st) con selenium
- Prueba Post-deploy de sistema (st) con
[selenium](https://github.com/SeleniumHQ/selenium)
y [zerocode](https://github.com/authorjapps/zerocode)
- Ejemplo de despliegue en Heroku (obsoleto)
- Integración continua con Jenkins (para ejecución on-premise):
- Fichero Jenkinsfile con la configuración de la pipeline
Expand Down Expand Up @@ -74,4 +77,5 @@ La instalacion anterior compilará, ejecutará pruebas y dispondrá de los repor
- `site/screenshot`: Imagenes tomadas durante las pruebas web con Selenium
- `site/jacoco`: reports de cobertura de código.
- `target/jbehave`: reports estandar de jbehave
- `target/zerocode-junit*.html`: reports estandar de zerocode
- `reports/testapidocs/index.html`: javadoc del proyecto (generados en la fase `package`)
6 changes: 6 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,12 @@
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.jsmart</groupId>
<artifactId>zerocode-tdd</artifactId>
<version>1.3.44</version>
</dependency>

</dependencies>

<distributionManagement>
Expand Down
21 changes: 21 additions & 0 deletions src/test/java/giis/demo/descuento/st/TestPostDeployZerocode.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package giis.demo.descuento.st;

import org.jsmart.zerocode.core.domain.TargetEnv;
import org.jsmart.zerocode.core.domain.TestPackageRoot;
import org.jsmart.zerocode.core.runner.ZeroCodePackageRunner;
import org.junit.runner.RunWith;

/**
* Ejemplo de prueba del API fuera del entorno de Spring Boot con Zerocode
* (https://github.com/authorjapps/zerocode) que permite especificar escenarios
* de prueba en Json y ejecutarlos.
*
* Se ejecutara sobre la aplicacion desplegada en Azure desde el entorno CI
* (GitHub Actions). Para probar en local, lanzar el servidor desde
* src/main/java
*/
@TargetEnv("zerocode.properties") // configura direccion del host
@TestPackageRoot("zerocode") // ejecuta todos los tests (.json o .yaml) en esta carpeta
@RunWith(ZeroCodePackageRunner.class) // este runner buscara los test y los ejecutara
public class TestPostDeployZerocode {
}
5 changes: 5 additions & 0 deletions src/test/resources/zerocode.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Configuracion para ejecutar en local los tests especificados en json con zerocode
# En CI estas propiedades se remplazaran por las de la aplicacion desplegada
web.application.endpoint.host=http://localhost
web.application.endpoint.port=8080
web.application.endpoint.context=
34 changes: 34 additions & 0 deletions src/test/resources/zerocode/zerocode-scenario.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"scenarioName": "Zerocode postdeploy test scenario",
"steps": [
{
"name": "Get and verify all discounts",
"url": "/api/descuentos",
"operation": "GET",
"request": { },
"assertions": {
"status": 200,
"body.SIZE": 3,
"body" : [
{ "id" : 1, "descuento" : 15 },
{ "id" : 2, "descuento" : 20 },
{ "id" : 3, "descuento" : 10 }
]
}
},
{
"name": "Get and verify filtered discounts",
"url": "/api/descuentos?edad=20",
"operation": "GET",
"request": { },
"assertions": {
"status": 200,
"body.SIZE": 2,
"body" : [
{ "id" : 2, "descuento" : 20 },
{ "id" : 3, "descuento" : 10 }
]
}
}
]
}

0 comments on commit 8bbd89b

Please sign in to comment.