487902421b
* feat: add web test framework with infra-backed suites * fix: honor DATABASE_URL env in integration prepare script * fix: apply web test review feedback * fix: streamline web test infra lifecycle and workflow scope
66 lines
1.7 KiB
Markdown
66 lines
1.7 KiB
Markdown
# Testing in `apps/web`
|
|
|
|
This app now supports four testing layers:
|
|
|
|
- Unit tests (`*.unit.test.ts`)
|
|
- tRPC tests (`*.trpc.test.ts`)
|
|
- API tests (`*.api.test.ts`)
|
|
- Infra-backed integration tests (`*.integration.test.ts`)
|
|
|
|
## Stack
|
|
|
|
- Runner: Vitest
|
|
- Coverage: V8 provider via `@vitest/coverage-v8`
|
|
- Path aliases: `vite-tsconfig-paths`
|
|
- Infra for integration: PostgreSQL + Redis via Docker Compose
|
|
|
|
## Commands
|
|
|
|
From repo root:
|
|
|
|
- `pnpm test:web`
|
|
- `pnpm test:web:all`
|
|
- `pnpm test:web:unit`
|
|
- `pnpm test:web:trpc`
|
|
- `pnpm test:web:api`
|
|
- `pnpm test:web:integration`
|
|
- `pnpm test:web:integration:full`
|
|
|
|
Infra helpers:
|
|
|
|
- `pnpm test:infra:up`
|
|
- `pnpm test:infra:down`
|
|
|
|
Full integration flow:
|
|
|
|
1. `pnpm test:infra:up`
|
|
2. `pnpm test:web:integration:full` (or `pnpm test:web:all`)
|
|
3. `pnpm test:infra:down`
|
|
|
|
## Infra configuration
|
|
|
|
- Compose file: `docker/testing/compose.yml`
|
|
- Postgres: `127.0.0.1:54329` (`usesend_test`)
|
|
- Redis: `127.0.0.1:6380` (test DB index `15`)
|
|
|
|
The default test env is bootstrapped in `src/test/setup/setup-env.ts`.
|
|
Override values by exporting env vars before running tests.
|
|
|
|
## Test layout
|
|
|
|
- `src/test/setup/*`: global test bootstrap
|
|
- `src/test/integration/*`: integration reset helpers
|
|
- Tests colocated next to modules under `src/**`
|
|
|
|
## Notes
|
|
|
|
- Integration suites only run when `RUN_INTEGRATION=true`.
|
|
- Integration helpers truncate all public Postgres tables (except `_prisma_migrations`) and flush Redis DB before each test.
|
|
- Queue and Redis tests rely on `REDIS_URL` test DB index to avoid polluting local dev state.
|
|
|
|
## CI
|
|
|
|
GitHub Actions workflow: `.github/workflows/test-web.yml`
|
|
|
|
The workflow runs unit, tRPC, API, and integration tests with PostgreSQL and Redis services.
|