QA Automation
📋 Metodologías, workflows y procesos específicos del equipo de Quality Assurance
Esta sección define cómo planificamos, implementamos y mantenemos la automatización E2E en los proyectos de la empresa: stack (Playwright + TypeScript), convenciones del repositorio, arranque del entorno bajo prueba, integración con el flujo de desarrollo y criterios de calidad propios de automation.
Próximos temas a profundizar (backlog de documentación)
- Estrategia por tipo de proyecto — qué automatizar primero (marketing vs producto vs ecommerce).
- Contrato API + E2E — cuándo complementar con tests de contrato o fixtures de red.
- Flaky tests — diagnóstico, cuarentena y política de re-ejecución.
- Data y seeds — uso de ambientes con datos conocidos vs generación en test.
- Accesibilidad y performance en pipeline — enlaces con procesos de a11y y Core Web Vitals.
Procesos relacionados
- Procesos de QA — Procesos que garantizan que cada proyecto cumpla con los más altos estándares antes de llegar al cliente.
- Ciclo de vida de tickets — Estados de QA y devoluciones por fallos en E2E.
🎯 Filosofía de QA Automation
Principios fundamentales
- User-centric: Los flujos E2E reflejan journeys reales del usuario, no solo checks técnicos.
- Data-driven: Fallas y tendencias se validan con reportes, trazas y métricas de ejecución (no solo “pasó en mi máquina”).
- Preventive: Tests críticos corridos antes de merge o build donde el proceso lo defina; feedback temprano.
- Collaborative: Automation vive en el mismo ciclo que dev y diseño; los cambios de UI se coordinan para no romper selectores sin aviso.
- Continuous improvement: Refactor de POMs, tags y suites según riesgo y aprendizajes del sprint.
- Efficiency: Automatizar lo estable y repetible; exploratory y criterios subjetivos siguen siendo humanos donde corresponda.
📏 Estándares orientados a automation
Cobertura razonable (E2E):
- Smoke automatizado en flujos críticos acordados (login, conversión, formularios clave, checkout si aplica).
- Regresión por conjuntos etiquetados (ej.
@smoke, módulos), no “todo el sitio” sin criterio. - Navegadores y dispositivos alineados con la matriz oficial del proyecto (no duplicar esfuerzo manual y automático sin criterio).
Documentación y trazabilidad:
- Casos automatizados legibles (nombre del test + steps donde aplique).
- PRs de automation con descripción clara: qué flujo cubre, riesgo, dependencia de entorno/datOS.
- Evidencia en fallos: captura, trace/video de Playwright cuando esté activo en config, y adjuntos al ticket.
Expectativas de tiempo (orientativas; calibrar por proyecto):
- Arranque de entorno + primera corrida smoke < 1h para quien ya conoce el repo (setup + lectura de
.env). - Mantenimiento reactivo por cambio de UI en la misma ventana del sprint que el cambio funcional (no acumular deuda).
🧭 Alcance: qué cubre este proceso
Este proceso cubre end-to-end con Playwright + TypeScript en el repositorio del cliente/proyecto, típicamente bajo la carpeta e2e/ en monorepos: Page Object Model (POM), fixtures, configuración, scripts npm y política de reportes.
Qué no sustituye la automatización E2E sola: pruebas unitarias, revisión de diseño pixel-perfect exhaustiva, performance profunda, a11y formal WCAG (puede acompañar con herramientas, pero el proceso de a11y sigue siendo el definido por la empresa).
Stack y convenciones del repositorio
- Playwright + TypeScript — Estándar para E2E en nk.studio salvo acuerdo distinto por proyecto.
e2e/como paquete — Fuente de verdad de dependencias y scripts de Playwright; evita mezclar con elpackage.jsonde la app.- POM — Objetos de página reutilizables; selectores preferidos: rol, label, texto estable,
data-testidsi existe. - Tags — p. ej.
@smokepara gates rápidos; otros tags según módulo/feature. - Lint / formato — ESLint + Prettier en el paquete
e2e/cuando el proyecto lo tenga configurado.
Regla de oro (monorepo): Los comandos npm run … de Playwright se documentan y ejecutan desde e2e/. La raíz del producto puede exponer atajos (yarn test:e2e:smoke, build:test) acordados con dev/CI — documentar solo esos atajos en README del producto, no duplicar toda la lista.
Reportes: HTML vs Allure (y qué adjuntar al ticket)
- HTML + list + JSON (config Playwright): base para día a día; abrir con el script de reporte del proyecto (p. ej.
npm run test:reporttras una corrida). - Allure: Cuando el proyecto lo use, seguir la política del repo (p. ej. variable para omitir Allure en smokes rápidos de CI).
- En Productive (o herramienta de tracking): enlace o zip a trace/video/screenshot según gravedad; el título y pasos siguen el estándar de bug report (más abajo).
⚡ Quick start (onboarding QA / nuevo clon)
Desde e2e/:
- Copiar entorno:
cp .env.example .envy definirBASE_URL. - Setup:
npm run setup(instalación + navegador con dependencias del SO según script del proyecto). - Primera corrida:
npm run test:smoke(o el comando de smoke que defina el repo).
Smoke desde la raíz del monorepo (si existe el atajo): p. ej. yarn test:e2e:smoke — útil para alinear con el gate que usa dev.
Entorno bajo prueba: qué tener en cuenta con el “start”
Hay dos modos; el equipo debe saber cuál se usa en cada validación:
1) Contra despliegue (staging / preview / entorno de prueba)
- Configurar
BASE_URLene2e/.envapuntando a esa URL. - No hace falta levantar la app en local para ejecutar E2E.
- Encaja con CI que apunta a un entorno ya desplegado o con QA validando un build desplegado.
2) Contra la app en local
- En la raíz del monorepo:
yarn dev(o el comando de arranque del proyecto). - En
e2e/.env:BASE_URL=http://localhost:3000(o el puerto real). - Ejecutar E2E cuando la app ya responda en el navegador (no lanzar la suite mientras el primer build aún no terminó).
Checklist rápido (local):
- La URL de
BASE_URLabre en el navegador. - No hay errores bloqueantes en el flujo bajo prueba.
- Datos / feature flags alineados con lo que el test espera (si aplica).
🔀 Workflow Git recomendado para automation
- Rama desde la base acordada (
develop/ integración), con prefijo claro:feature/e2e-…. - Cambios concentrados en
e2e/(tests, POMs, fixtures, utilidades, docs de automation), salvo acuerdo explícito. - Pull Request hacia la rama de integración; revisión y smoke en CI cuando esté cableado.
Así el historial de tests queda legible y separado de features de producto en la misma rama.
Cambios en la aplicación (app) vs solo en tests
Por defecto nk.studio no modifica src/ ni la lógica de producto solo para hacer pasar tests.
Orden de preferencia para estabilizar tests:
- Locators accesibles (
getByRole,getByLabel,getByText). data-testidu otros hooks ya existentes o acordados con desarrollo.- Fixtures, datos de prueba, POMs, esperas correctas.
- Intercepción de red cuando aplique.
page.evaluatesolo como último recurso documentado.
Si hace falta un cambio en la app (p. ej. data-testid), se propone el cambio mínimo y se aprueba con el equipo antes de implementarlo.
🔄 Alineación con el ciclo de vida de pruebas
El rol de QA automation se integra en el mismo ciclo que describió el equipo; lo que cambia es el artefacto principal (código + suite ejecutable):
- Planificación / requisitos — Identificar flujos E2E candidatos, riesgo, datos y entornos; criterios de aceptación automatizables.
- Análisis — Condiciones y escenarios que valen la pena E2E vs manual; dependencias (API, auth, datos).
- Diseño — Casos como tests (describe/steps), datos, tags, POMs necesarios.
- Implementación — Código en
e2e/, configuración, scripts, datos en fixtures. - Ejecución — CI y/o local; comparar resultado vs esperado; abrir defectos con evidencia.
- Cierre — Resumen de cobertura, flakies, recomendación de release (como input al informe de QA, no sustituto del juicio global de calidad).
Colaboración continua: participación en planning/dailies cuando haya impacto en alcance de tests o entornos; revisión de PRs que toquen áreas cubiertas por E2E.
📝 Estándar de reporte de incidentes
Todo reporte (manual o detectado por pipeline) debe incluir:
- Título — Breve y descriptivo del problema.
- Tester — Quién reporta (para aclarar reproducción).
- Fecha — Cuándo se reportó (métricas de tiempo hasta resolución).
- Aplicación y versión — Qué producto y versión / build / despliegue se probó.
- Ambiente del tester — Web: navegador y versión. Mobile: modelo + OS. CI: job/link si aplica.
- Pasos — Secuencia clara para reproducir (“receta”).
- Capturas / evidencia — Screenshots; en automation: trace, video, log si la política del repo los genera.
- Resultado obtenido — Qué ocurrió.
- Resultado esperado — Según especificación o criterio de aceptación.
- Importancia — Bajo / medio / alto / crítico — impacto en usuario y probabilidad.
- To-do’s — Lista en el ticket para dev; QA marca verificación al re-test y puede devolver el ticket si algo sigue roto.
Definición de “listo” para un cambio en la suite E2E (orientativa)
- Test estable en al menos el entorno objetivo acordado (local o staging).
- Selectores alineados con accesibilidad y buenas prácticas; sin sleeps arbitrarios para “tapar” problemas.
- Documentado en el PR: alcance, datos necesarios, variables de entorno.
- Si el fallo fue automático: ticket o comentario con pasos + evidencia para desarrollo.