Ingest (CI/CD)
El endpoint de ingest es el punto de integración principal para los pipelines CI/CD. Crea una ejecución de prueba y rellena todos los resultados en una única solicitud — no se necesitan llamadas separadas de "crear ejecución" + "añadir resultados".
Endpoint
POST /api/v1/ingest
Authorization: Bearer qh_... (se requiere scope write)
Content-Type: application/json
Cuerpo de la solicitud
{
"project_id": "clxyz123",
"run_name": "CI build #442 — main branch",
"environment": "staging",
"framework": "playwright",
"results": [
{
"test_case_code": "TC-001",
"status": "PASSED",
"duration_ms": 1240
},
{
"test_case_code": "TC-002",
"status": "FAILED",
"error_message": "Assertion failed: expected 200 but got 500",
"error_stack": "Error: ...",
"duration_ms": 3800
},
{
"title": "Should load the homepage in < 2s",
"status": "PASSED",
"duration_ms": 890
}
]
}
Campos de nivel superior
| Campo | Requerido | Descripción |
|---|---|---|
project_id | Sí | UUID del proyecto bajo el que crear la ejecución |
run_name | No | Nombre para mostrar; por defecto es la marca de tiempo si se omite |
environment | No | Etiqueta de entorno (p. ej., staging) |
framework | No | Framework por defecto para todos los resultados (sobreescribible por resultado) |
results | Sí | Array de objetos de resultado |
Campos de resultado
Los resultados referencian casos de prueba existentes por test_case_code o test_case_id. Si no se proporciona ninguno, se registra un nuevo NativeTestResult como resultado no vinculado (contado en métricas pero no mapeado a un caso de prueba de la biblioteca).
Mapear tests a la biblioteca con etiquetas @qa-hub
Etiqueta tus tests automatizados con un código de QA Hub en el título usando @qa-hub('TC-001'):
// Playwright
test("Login — invalid password @qa-hub('TC-042')", async ({ page }) => {
// ...
});
// Jest
it("should reject expired tokens @qa-hub('TC-017')", () => {
// ...
});
Cuando la CLI analiza el archivo de resultados, extrae la etiqueta y establece test_case_code automáticamente antes de publicar en /api/v1/ingest.
Códigos de respuesta
| Código | Significado |
|---|---|
201 | Todos los resultados aceptados, ejecución creada |
207 | Parcial — algunos resultados rechazados. Comprueba errors[] en el cuerpo. |
Respuesta parcial 207
{
"run_id": "clrun999",
"accepted": 14,
"rejected": 2,
"errors": [
{ "index": 3, "error": "test_case_code TC-999 not found in this tenant" },
{ "index": 7, "error": "invalid status value: 'pass' (use PASSED)" }
]
}
Usar con la CLI
La @qa-hub/cli analiza el formato de salida de tu framework de tests y llama a este endpoint automáticamente:
qa-hub upload \
--token qh_abc_secret \
--url https://your-qahub.com \
--project clxyz123 \
--format playwright \
--run-name "CI #442" \
playwright-results.json
Retención de datos
Las filas NativeTestResult ingestadas se retienen durante un número configurable de días (por defecto: 30). Dispara una limpieza via:
curl -X POST https://your-qahub.com/api/v1/admin/sweep \
-H "Authorization: Bearer qh_..."