Skip to content

Testing

Linting

bash
# Check all files
npx biome check .

# Auto-fix issues
npx biome check --write .

Type Checking

bash
# Dashboard
pnpm --filter @neverline/dashboard exec tsc --noEmit

# API
pnpm --filter @neverline/api exec tsc --noEmit

Pre-commit Hooks

Husky runs lint-staged on every commit, which executes:

  • biome check --write on staged .ts, .tsx, .js, .jsx files

Unit & Integration Testing (Vitest)

We use Vitest for unit and integration testing. Coverage threshold is ≥ 80 % (enforced in CI).

bash
# Run all tests
pnpm test

# Run tests with coverage report
pnpm test:coverage

# Run tests in watch mode during development
pnpm test:watch

End-to-End Testing (Playwright)

We use Playwright for full end-to-end browser testing. Playwright tests execute against a locally running instance seeded with test data.

bash
# 1. Reset database to structured seed state
pnpm --filter @neverline/client db:reset

# 2. Start dev servers
pnpm dev

# 3. In a new terminal, run E2E suites
pnpm test:e2e

UI Mode

When debugging E2E tests, use the Playwright UI mode:

bash
pnpm test:e2e --ui

Manual Verification

While automated tests cover >80% of lines, manual QA is required for:

  • Animations and Framer Motion transitions
  • Hardware integrations (e.g., physical barcode scanner testing via apps/mobile-access)
  • Responsive design on physical mobile devices