quality engineering · 4660 casos de prueba
Este sitio lo usa una comunidad real: gente que se inscribe a eventos con cupo, sube fotos, deja su contraseña. Por eso lo tratamos como software serio: 610 archivos de tests automatizados con 4533 casos en tres velocidades. 3675 tests unitarios y de componentes corren antes de cada push en segundos; 512 tests de integración corren las server actions contra un Postgres real; y una regresión e2e de 346 tests recorre el sitio en un navegador una vez por semana, automatizando 119 de los 127 casos manuales. Los tests no corren en CI: es una decisión para que el pipeline de deploy siga siendo rápido. Todo está acá abajo, con el link al código.
$ pnpm exec lint-stagedHusky corre lint-staged, que formatea con Prettier solo los archivos que cambiaste (js, ts, tsx, json, css, md). Nadie commitea código sin formatear.$ pnpm lint && pnpm format:check && pnpm test && pnpm buildESLint (que además prohíbe armar SQL a mano), el chequeo de formato, toda la suite unitaria y de componentes de Jest (incluidos los guardas de seguridad: SQL injection y chequeo de permisos en cada server action) y el build de producción, que chequea los tipos. Si algo falla, el push no sale.$ pnpm test:dbAl tocar queries, el schema o server actions: corre las actions contra un Postgres real en una base descartable con todas las migraciones. Restricciones únicas, cascadas, transacciones, carreras por el último lugar de un evento y payloads de SQL injection.$ pnpm screenshot /ruta && pnpm screenshot:publishCada cambio entra por una PR hacia testing que revisa otra persona. Si toca la UI, lleva capturas de las rutas afectadas tomadas con Playwright (Chromium headless) y publicadas en la branch huérfana pr-screenshots.$ pnpm test:e2eUna vez por semana y antes de un release grande: recrea una base con datos de prueba, compila el sitio en modo producción y lo recorre con Playwright (desktop y mobile), con un test por caso manual automatizado y una pasada por todas las rutas públicas buscando errores y violaciones de CSP.$ pnpm prisma migrate deploy && kamal deployEl push a main dispara GitHub Actions: instala con el lockfile congelado (--frozen-lockfile), aplica las migraciones pendientes y despliega con Kamal, que solo pasa el tráfico a la versión nueva cuando responde el health check de /up. Los tests no corren en CI, a propósito: corren antes, en cada máquina.$ /monitoreo · notificacionesLos errores del servidor y del cliente quedan en ErrorLog y se revisan desde /monitoreo. Un error nuevo del servidor o un posible ataque de fuerza bruta (alguien que llega al límite de login o de códigos) les llega a los admins como notificación.La mayoría de los tests están en la base de la pirámide: rápidos, sin red ni base de datos, y corren en cada push. Arriba, menos tests pero más reales: integración contra Postgres y e2e en un navegador. Cada caso automatizado del repositorio de abajo es uno de estos tests.
e2e
346 tests · 28 archivos
navegador real con Playwright contra la app corriendo
integración
512 tests · 36 archivos
server actions y queries contra un Postgres real (pnpm test:db)
route handler
48 tests · 14 archivos
endpoints de src/app/api con Request y Response reales
server action
665 tests · 99 archivos
src/actions con Prisma, cookies y headers mockeados
componente
1890 tests · 292 archivos
componentes de React en jsdom con Testing Library
unit
1072 tests · 141 archivos
funciones puras de src/lib, schemas y contenido
Qué parte del código ejecutan los tests unitarios y de componentes (pnpm test:coverage). La integración y la regresión e2e cubren el mismo código desde afuera y no suman acá. Medido el 9 de octubre de 2026; se actualiza con pnpm qa:cases.
src/lib
lógica compartida, seguridad, cache, S3 · 93 archivos
líneas97.8%
sentencias96.7%
funciones96.4%
ramas92.3%
src/actions
server actions · 112 archivos
líneas96.6%
sentencias95.5%
funciones96.5%
ramas88.5%
src/schemas
validaciones con zod · 13 archivos
líneas99.6%
sentencias98.6%
funciones100%
ramas96.7%
src/hooks
hooks de React · 2 archivos
líneas100%
sentencias98.5%
funciones100%
ramas94.4%
src/components
componentes · 424 archivos
líneas97.6%
sentencias96.9%
funciones95.6%
ramas93%
src/app
páginas, layouts y route handlers · 328 archivos
líneas98.3%
sentencias97%
funciones97.7%
ramas93.4%
total: 97.7% de líneas · 92.5% de ramas · 96.3% de funciones
Una vez por semana (y antes de un release grande) corremos pnpm test:e2e: recrea una base con datos de prueba (un usuario por rol, eventos con y sin cupo, charlas, consejos), compila el sitio en modo producción y lo recorre con Playwright en Chromium desktop y en un Pixel 7. Son 346 tests en 28 archivos: cada caso manual que automatizan lleva su id en el nombre y abajo aparece marcado como e2e. Lo que no se puede automatizar (instalar la PWA, mails reales, subir a S3) sigue siendo manual.
Ser honestos con lo que no hay también es parte de la calidad. Esto no existe todavía en el repo; es lo próximo que sumaríamos. Si te interesa, es un buen lugar para contribuir.
Todo lo que se prueba en el sitio, área por área. Los casos manuales describen cada flujo paso a paso; los marcados e2e ya los corre la regresión semanal. Los automatizados salen directo de Jest y Playwright, con el archivo y el comando para correr cada uno. Podés linkear un caso con #TC-GAL-001.
4660
casos en total
127
manuales
4533
automatizados
849
prioridad alta
4660/4660 casos
$ ¿Encontraste algo que no está cubierto? Sumá el caso o el test en una PR.
~/desarrollo#contribuir →