Skip to main content

Testing

Terra uses Vitest for unit tests and Playwright for E2E tests.

Test Stack

Running Tests

Test Structure

Load Certification

pnpm test:load runs a pass/fail capacity gate for public critical paths:
  1. GET /status (public status lookup)
  2. GET /f/<slug> (public submission form)
  3. POST /api/drive-upload (optional when upload fixture is configured)
Default SLO gates: Common environment variables:
  • TERRA_LOAD_BASE_URL (required, e.g. http://127.0.0.1:3310)
  • TERRA_LOAD_FORM_PATH (default /f/e2e-test-form)
  • TERRA_LOAD_REQUESTS (default 120)
  • TERRA_LOAD_CONCURRENCY (default 12)
  • TERRA_LOAD_INCLUDE_UPLOAD=true
  • TERRA_LOAD_UPLOAD_PATH (include query params; use {{index}} in submissionId to avoid collisions)
  • Per-scenario SLO overrides: TERRA_LOAD_STATUS_MAX_P95_MS, TERRA_LOAD_SUBMISSION_MAX_ERROR_RATE, TERRA_LOAD_UPLOAD_MIN_RPS, etc.
If a required fixture is missing, the gate fails by default. For local exploratory runs only, set TERRA_LOAD_ALLOW_MISSING_FIXTURES=true.

Deterministic Time-Based Tests

If a test depends on “last 7 days” / “last 30 days” logic, freeze time and use explicit timestamps.
Why this matters:
  • Prevents flaky tests caused by local clock drift or timezone differences.
  • Makes date-window assertions stable in CI.
  • Keeps failures tied to logic regressions, not timing noise.

Writing Unit Tests

Writing E2E Tests


Local Development

Dev setup

Contributing

Contribution guide