Saltar al contenido principal

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

CampoRequeridoDescripción
project_idUUID del proyecto bajo el que crear la ejecución
run_nameNoNombre para mostrar; por defecto es la marca de tiempo si se omite
environmentNoEtiqueta de entorno (p. ej., staging)
frameworkNoFramework por defecto para todos los resultados (sobreescribible por resultado)
resultsArray 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ódigoSignificado
201Todos los resultados aceptados, ejecución creada
207Parcial — 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_..."