Este proyecto contiene pruebas automatizadas para la API pública de Reqres, utilizando las tecnologías Java, RestAssured, TestNG, Gradle y Allure como generador de reportes.
- ✅ RestAssured – Testeo de APIs REST en Java
- ✅ TestNG – Framework de testing con soporte para grupos y configuración avanzada
- ✅ Gradle – Sistema de construcción
- ✅ Allure Reports – Reportes de ejecución visuales
- ✅ GitHub Actions – Automatización de CI/CD
src/
└── test/
├── java/apitests/
│ ├── BaseAPITest.java
│ ├── AuthTest.java
│ ├── NegativasTest.java
│ ├── PerformanceTest.java
│ ├── SchemaValidationTest.java
│ ├── UserRetrievalTest.java
│ └── IdempotencyTest.java
└── resources/
├── testng.xml
└── schemas/ # Esquemas JSON para validación
- 🔐 Login y Registro (positivas y negativas)
- 📥 Recuperación de usuarios por ID
- 🔄 Verificación de idempotencia en métodos GET
- 📊 Medición de performance
- 📄 Validación de schemas JSON
- 🔀 Agrupación de tests mediante
@Test(groups = "...")para ejecución selectiva
./gradlew clean testSe ejecuta el
testng.xmldefinido ensrc/test/resources.
-
Ejecutar los tests:
./gradlew clean test -
Generar y levantar el reporte localmente:
allure serve build/allure-results
Este repositorio utiliza GitHub Actions para ejecutar los tests automáticamente en cada push o pull request sobre la rama principal, o en forma programada mediante un job con cron. El workflow:
- Ejecuta
./gradlew clean test - Genera el reporte Allure
- Publica automáticamente el reporte en GitHub Pages:
📎 Ver reporte
Archivo del workflow:
.github/workflows/deploy-report.yml
Además, el job solo publica el reporte si hay tests ejecutados, y puede configurarse para enviar notificaciones por email o Slack si hay fallos.
Nota: También se ejecuta automáticamente todos los días a las 2:00 AM (UTC) gracias a la configuración de schedule con cron en el workflow.
El archivo BaseAPITest.java configura automáticamente el requestSpec para todos los tests usando @BeforeMethod, asegurando una configuración común de headers y URI base. También incluye protección contra null con un getter getRequestSpec() reutilizable.
@Test(groups = {"auth", "positiva"})
@Epic("Reqres Auth API")
@Feature("Login")
@Story("Login exitoso")
@Severity(SeverityLevel.CRITICAL)
@Owner("Juan Martin Ruiz")
@Description("Login exitoso con email y password válidos")
public void loginExitoso() {
...
}Juan Martín Ruiz
📧 LinkedIn
Este proyecto está licenciado bajo MIT. Ver LICENSE para más información.