Pruebas unitarias e integración
Pruebas Unitarias e Integracion
nvito-pwa
18 suites
204 tests
100% green
nvito-client
29 suites
223 tests
100% green
nvito-invitations
16 suites
180 tests
100% green
nvito-admin
140 suites
1,422 tests
100% green
nvito-api
233 suites
3,712 tests
100% green
| Proyecto | Framework | Suites | Tests | Tasa de exito |
|---|---|---|---|---|
| nvito-api | Jest + Supertest | 240 | 4,653 | 100% |
| nvito-admin | Vitest + Testing Library | 141 | 1,434 | 100% |
| nvito-invitations | Vitest + jsdom | 17 | 180 | 100% |
| nvito-client | Jest + jest-expo | 29 | 223 | 100% |
| nvito-pwa | Vitest + jsdom | 18 | 204 | 100% |
| Total | 445 | 6,694 | 100% |
Cobertura por capa
nvito-api
| Capa | Elementos | Con tests | Cobertura |
|---|---|---|---|
| Servicios | 116 | 116 | 100% |
| Controllers | 48 | 48 | 100% |
| Guards de seguridad | 11 | 11 | 100% |
nvito-admin
| Capa | Elementos | Con tests | Cobertura |
|---|---|---|---|
| Servicios API | 33 | 33 | 100% |
| Server Actions | 17 | 17 | 100% |
| Validaciones Zod | 16 | 16 | 100% |
| Hooks de datos | 36+ | 36+ | 100% |
nvito-invitations
| Capa | Elementos | Con tests | Cobertura |
|---|---|---|---|
| Route handlers | 3 | 3 | 100% |
| Servicios SOLID | 4 | 4 | 100% |
nvito-client
| Capa | Elementos | Con tests | Cobertura |
|---|---|---|---|
| Servicios API | 7 | 7 | 100% |
| Hooks queries | 7 | 7 | 100% |
| Contexts | 2 | 2 | 100% |
| Validaciones Zod | 3 | 3 | 100% |
nvito-pwa
| Capa | Elementos | Con tests | Cobertura |
|---|---|---|---|
| Seguridad (crypto, CSRF, rate limiter) | 3 | 3 | 100% |
| BFF (proxy handler) | 1 | 1 | 100% |
| Servicios API | 6 | 6 | 100% |
| Validaciones Zod | 1 | 1 | 100% |
| Hooks queries | 5 | keys tested | parcial |
| Utils (date, format) | 2 | 2 | 100% |
| Offline queue | 1 | 1 | 100% |
| Middleware | 1 | 1 | 100% |
| Config env | 1 | 1 | 100% |
Pruebas End-to-End (E2E)
| Proyecto | Framework | Tests E2E | Que prueba |
|---|---|---|---|
| nvito-admin | Playwright | 67 tests (14 specs) | Login, eventos, invitados, invitaciones, admin, error states, cross-browser Firefox |
| nvito-invitations | Playwright | 41 tests (7 specs) | Renderizado, 404, preview, revalidation webhook, security headers, performance, cross-browser WebKit + Firefox |
| nvito-api | k6 | 6 escenarios | Health, endpoints públicos, día del evento (200 VUs), CRUD autenticado, webhooks, media upload |
| nvito-client | Maestro | 13 flows | Login host/guest, dashboard, guests, scanner, galería, audio guestbook, deep links |
| Total | 121+ tests + 13 flows + 6 escenarios |
Para detalle completo de estructura, ejecución y configuración E2E, ver la guia de E2E Testing & Quality Assurance.
Calidad del código
| Indicador | Valor | Detalle |
|---|---|---|
| TypeScript strict mode | Habilitado en los 6 proyectos | strict: true en tsconfig |
as any | 0 en los 6 proyectos | Cero atajos de tipo en todo el ecosistema |
| JSDoc | 100% en los 6 proyectos | Todo método público documentado (español, sin acentos) |
| Naming convention | 100% kebab-case en archivos | Consistencia total en los 6 repositorios |
| React Compiler | Habilitado (admin) | Optimizacion automática de re-renders |
| Principios SOLID | Aplicados en los 6 proyectos | Servicios y componentes con responsabilidad única |
| Validación Zod | En todas las capas | Runtime validation: API + admin + invitations + client + pwa |
| Design tokens | Centralizados (admin + client) | Fuente única de verdad para paleta de colores |
Seguridad
| Indicador | Implementación | Proyecto |
|---|---|---|
| Autenticación | Clerk (admin/web) + JWT propio (mobile) | api, admin, client |
| RBAC | 8 roles, 40+ permisos, 13 guards, permisos dinámicos via endpoint | api, admin |
| Multi-tenant | Aislamiento por organización, X-Organization-Id | api, admin |
| Validación de datos | Zod (frontend) + class-validator (backend) | Todos |
| CSP headers | Content-Security-Policy, HSTS, X-Frame-Options, Permissions-Policy | admin, invitations, pwa |
| BFF con cookies encriptadas | AES-256-GCM en cookies HttpOnly, CSRF double-submit | pwa |
| Prevencion XSS | escapeJsString() + escapeHtmlAttr() + DOMPurify (whitelist explicita) | invitations |
| Prevencion SSRF | validateCdnUrl() contra whitelist de hosts | invitations |
| Timing-safe secrets | crypto.timingSafeEqual() en webhooks | invitations |
| Rate limiting | In-memory rate limit en revalidation endpoint | invitations |
| Encriptacion | AES-256-GCM (datos sensibles), HMAC-SHA256 (búsquedas), HTTPS obligatorio | api |
| SAST | Semgrep en CI (auto + TypeScript + NestJS/Next.js rules) | api, admin, invitations |
Compliance
| Regulacion | Estado | Detalle |
|---|---|---|
| LFPDPPP | Contemplado en la arquitectura | Datos personales de invitados, consentimiento, derecho al olvido |
| Encriptacion de PII | Implementado | Emails y teléfonos encriptados (AES-256-GCM), hashing deterministico (HMAC-SHA256) |
Arquitectura
| Indicador | Valor |
|---|---|
| Modulos backend | 39 |
| Endpoints API | 376 |
| Modelos de datos | 53 (+ 40 enums) |
| Tipos de evento | 14 |
| Servicios modulares | 20 |
| Secciones de invitación | 18 tipos |
| Aplicaciones | 6 (NestJS, Next.js admin, Next.js invitations, React Native/Expo, Next.js PWA, Next.js docs) |
Infraestructura
| Indicador | Estado |
|---|---|
| Entornos | Local + DEV + TEST (+ Producción pendiente) |
| CI/CD | GitLab CI con stages: quality, e2e, security, migrate |
| Hosting | Coolify v4 (Docker en VPS propio) |
| Base de datos | PostgreSQL via Neon (cloud) |
| Cache | Redis via Upstash |
| Almacenamiento | Cloudflare R2 (producción) / MinIO (desarrollo) |
| E2E compartido | Docker Compose E2E (PostgreSQL tmpfs, Redis no-persist, MinIO tmpfs) |
| Reportes | Allure Report unificado (todos los proyectos) |
Comparativa con la industria
| Metrica | Nvito | Startup promedio | Empresa madura |
|---|---|---|---|
| Tests automáticos | 6,694+ unit + 121+ E2E | 0-100 | 1,000-10,000 |
| Proyectos con tests | 6 de 6 (100%) | 1 de 3-4 | 2-3 de 4 |
| Cobertura de servicios | 100% | 20-40% | 60-80% |
| TypeScript strict | Si (6 proyectos) | Raro | Comun |
| JSDoc completo | 100% en los 6 | Menos del 10% | 30-50% |
as any | 0 en los 6 | 10-50+ | 5-20 |
| CI/CD automatizado | Si | A veces | Si |
| Multi-tenant desde día 1 | Si | No | A veces |
| RBAC completo | Si (13 guards) | Básico (2-3 roles) | Si |
| Principios SOLID | Aplicados en los 6 | Raro | A veces |
| Validación runtime (Zod) | En todas las capas | Sin validación | Solo backend |
| Prevencion XSS/SSRF | Implementado | Básico o nulo | Si |
| SAST en CI | Si (Semgrep) | No | Si |
| Design tokens centralizados | Si | No | Si |
Nvito tiene metricas de calidad superiores a la mayoria de startups e incluso comparables con empresas maduras, lo cual reduce significativamente el riesgo técnico del proyecto.