home
  • Spanish (ES)
  • English (UK)
  • Portuguese (PT)
  • star Destacados
  • Hermes Agent
  • draw Proyectos UX
  • person Sobre mí
  • mail Contacto
arrow_back Volver al proyecto Inicio

Testing del proyecto

Testing · Concert-Connect

5 archivos markdown (visión, unitarios, integración, e2e, GitHub Actions).

En esta página Testing · visión 0% expand_more
Testing · visión Testing · unitarios Health + Zod JIT auth (contrato, no runner) Testing · integración Testing · e2e Por qué no está automatizado Recorrido manual mínimo Testing · CI Por qué no hay Actions Qué fallaría en un job así

12-testing.md

Testing · visión

Concert-Connect no tiene Karma ni Playwright. La red de seguridad es el typecheck del workspace y el contrato OpenAPI (Orval + Zod).

CapaRunnerQué cubreComando
Tipos (libs)tsc --buildlib/db, lib/api-zod, lib/api-client-reactpnpm run typecheck:libs
Tipos (apps)tsc --noEmitconciergo + api-serverpnpm run typecheck
ContratoOrval + ZodSpec ↔ hooks ↔ handlerspnpm --filter @workspace/api-spec run codegen

No hay GitHub Actions en el repo (el ciclo de vida es Replit). Un PR local no debería mergearse si pnpm run typecheck falla.

Siguientes: unitarios · integración · e2e · CI.

13-testing-unit.md

Testing · unitarios

No hay *.spec.ts de negocio. El “unitario” que sí se ejecuta es compilar los tipos.

Health + Zod

El handler no devuelve un objeto suelto: pasa por el schema generado.

router.get("/healthz", (_req, res) => {
  const data = HealthCheckResponse.parse({ status: "ok" });
  res.json(data);
});

Si alguien cambia HealthStatus en OpenAPI y no regenera, o si el parse recibe otro shape, peta en runtime y el typecheck avisa al desalinearse los imports.

JIT auth (contrato, no runner)

requireAuth está escrito para fallar cerrado:

if (!clerkId) {
  return res.status(401).json({ error: "Unauthorized" });
}

Un test unitario futuro iría aquí (mock de getAuth + db.insert). Hoy se afirma con typecheck y uso real en Replit.

14-testing-integration.md

Testing · integración

No hay Supertest. La integración es codegen + typecheck de todo el grafo.

pnpm --filter @workspace/api-spec run codegen
pnpm run typecheck

Eso recorre:

  1. openapi.yaml
  2. hooks de @workspace/api-client-react (el front solo llama esos hooks)
  3. Zod de @workspace/api-zod (el server parsea respuestas)
  4. Drizzle (lib/db) usado por las rutas

Si una ruta Express deja de devolver el schema, el front no compila o Zod lanza. Es integración de contratos, no de HTTP vivo (hace falta DATABASE_URL + Clerk).

15-testing-e2e.md

Testing · e2e

No hay Playwright. El recorrido (landing → eventos → mapa → match → chat) se prueba a mano en el Repl.

Por qué no está automatizado

  • Clerk (login real) y Google Maps (key + billing) no caben en un CI anónimo.
  • El preview Replit cambia de host (*.spock.replit.dev); un baseURL fijo se pudre.
  • Presencia/Task Cloud sí tienen e2e porque su núcleo (offline, tabs) no pide OAuth.

Recorrido manual mínimo

  1. Landing signed-out: «No dejes que un gran bolo se pierda».
  2. Explorar /events y /events/map sin sesión.
  3. Unirse (Clerk) → apuntarse a un evento → aparece match en Conexiones.
  4. Chat: un mensaje, badge de no leído en el otro lado.

16-testing-ci.md

Testing · CI

Este repo no tiene .github/workflows. El “CI” es el typecheck local / Replit antes de merge.

pnpm run typecheck

Equivale a tsc --build de las libs + tsc --noEmit de artifacts/*.

Por qué no hay Actions

El remoto es un Repl con secretos (Clerk, Maps, DATABASE_URL). Un workflow en GitHub sin esos secretos no puede levantar la API. Añadir un job solo de typecheck sería el siguiente paso honesto (sin Maps ni login).

Qué fallaría en un job así

RiesgoMitigación actual
Spec desfasadoRegenerar Orval a mano
TS roto en conciergo o api-serverpnpm run typecheck
Schema Drizzle vs rutasTypecheck de @workspace/db

En esta página

Testing · visión Testing · unitarios Health + Zod JIT auth (contrato, no runner) Testing · integración Testing · e2e Por qué no está automatizado Recorrido manual mínimo Testing · CI Por qué no hay Actions Qué fallaría en un job así

0% leído

folder_zip Descargar todos (ZIP)
Hermes Agent