CLI — @qa-hub/cli
@qa-hub/cli es una herramienta de línea de comandos independiente del framework para subir resultados de tests a QA Hub desde cualquier pipeline CI/CD.
Instalar
npm install -g @qa-hub/cli
# o usar directamente via npx
npx @qa-hub/cli upload ...
Subir resultados de tests
qa-hub upload \
--token qh_abc_yoursecret \
--url https://your-qahub.com \
--project your-project-id \
--format playwright \
--run-name "CI build #442" \
playwright-results.json
Opciones
| Flag | Descripción |
|---|---|
--token | Token de API (se requiere scope write) |
--url | URL base de tu instancia de QA Hub |
--project | ID del proyecto bajo el que crear la ejecución |
--format | Formato del resultado (ver abajo) |
--run-name | Nombre para la ejecución de prueba |
--environment | Etiqueta de entorno (p. ej., staging) |
Formatos soportados
| Formato | Tipo de archivo | Valor de --format |
|---|---|---|
| Playwright | Salida del reporter JSON | playwright |
| Cypress | JUnit XML | cypress |
| Jest | JUnit XML | jest |
| Cualquier JUnit compatible | XML | junit |
Ejemplo con Playwright
Configura Playwright para generar un informe JSON:
// playwright.config.ts
export default {
reporter: [
['list'],
['json', { outputFile: 'playwright-results.json' }],
],
};
Luego sube en tu paso de CI:
# GitHub Actions
- name: Run Playwright tests
run: npx playwright test
- name: Upload results to QA Hub
if: always()
run: |
npx @qa-hub/cli upload \
--token ${{ secrets.QA_HUB_TOKEN }} \
--url ${{ secrets.QA_HUB_URL }} \
--project ${{ vars.QA_HUB_PROJECT_ID }} \
--format playwright \
--run-name "CI #${{ github.run_number }}" \
playwright-results.json
Ejemplo con Jest + JUnit
# Instalar jest-junit
npm install --save-dev jest-junit
# Ejecutar Jest con el reporter JUnit
JEST_JUNIT_OUTPUT_FILE=results.xml npx jest --reporters=jest-junit
# Subir
npx @qa-hub/cli upload --format jest --run-name "Unit tests" results.xml
Mapear resultados a casos de prueba
Etiqueta los títulos de tus tests con @qa-hub('TC-NNN') para vincular los resultados de CI a los casos de prueba existentes en la biblioteca:
// Playwright
test("Login — invalid credentials @qa-hub('TC-042')", async ({ page }) => {
// ...
});
// Jest
it("should reject expired tokens @qa-hub('TC-017')", () => {
// ...
});
La CLI extrae la etiqueta y establece test_case_code al publicar los resultados. Los tests sin etiquetar se registran como resultados no vinculados y se contabilizan en las métricas pero no se mapean a casos de prueba de la biblioteca.
Variables de entorno
Puedes establecer valores por defecto via variables de entorno para evitar repetir flags:
export QA_HUB_TOKEN=qh_abc_yoursecret
export QA_HUB_URL=https://your-qahub.com
export QA_HUB_PROJECT=your-project-id
Códigos de salida
| Código | Significado |
|---|---|
0 | Todos los resultados subidos correctamente |
1 | Subida fallida (error de autenticación, error de red) |
2 | Subida parcial — algunos resultados rechazados (ver salida) |