From 5f3e14b415cae99de6a7ac961d43f08c033dfe36 Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Sun, 22 Mar 2026 12:03:06 -0400 Subject: [PATCH] feat: migrate test runner from Bun to Vitest - Replace bun:test with Vitest across all 22 test files - Create @sofa/test package with shared setup and DB test helpers - setup.ts: vi.mock for @sofa/db/client, Bun.randomUUIDv7 polyfill - db.ts: in-memory SQLite via better-sqlite3, seed helpers - Add per-project vitest configs (packages/core, apps/web) - Add root vitest.config.ts with projects and v8 coverage - Set up @vitest/browser + Playwright for web component tests - Move validateBackupDatabase from core/backup.ts to @sofa/db/client - Derive required backup tables from schema instead of hard-coded list - Update CI workflow with Playwright install and Codecov upload - Update CLAUDE.md documentation for Vitest Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/test.yml | 10 +- AGENTS.md | 18 +- README.md | 9 +- apps/web/package.json | 14 +- apps/web/src/lib/theme.test.ts | 2 +- apps/web/vitest.config.ts | 13 + bun.lock | 279 ++++++++++++++---- bunfig.toml | 3 - codecov.yml | 11 + package.json | 31 +- packages/auth/package.json | 2 +- packages/core/bunfig.toml | 2 - packages/core/package.json | 5 +- packages/core/src/backup.ts | 73 +---- packages/core/test/availability.test.ts | 20 +- packages/core/test/backup.test.ts | 2 +- packages/core/test/colors.test.ts | 2 +- packages/core/test/credits.test.ts | 4 +- packages/core/test/discovery.test.ts | 12 +- packages/core/test/export.test.ts | 4 +- packages/core/test/image-cache.test.ts | 4 +- packages/core/test/import-parsers.test.ts | 3 +- packages/core/test/import-processor.test.ts | 6 +- packages/core/test/import-resolve.test.ts | 54 ++-- packages/core/test/lists.test.ts | 20 +- packages/core/test/metadata-refresh.test.ts | 41 +-- packages/core/test/metadata.test.ts | 2 +- packages/core/test/person-detail.test.ts | 78 ++--- packages/core/test/person.test.ts | 4 +- packages/core/test/preload.ts | 20 -- packages/core/test/settings.test.ts | 4 +- packages/core/test/sofa-parser.test.ts | 2 +- packages/core/test/thumbhash.test.ts | 9 +- packages/core/test/tracking.test.ts | 4 +- packages/core/test/upcoming.test.ts | 4 +- packages/core/test/update-check.test.ts | 2 +- packages/core/vitest.config.ts | 8 + packages/db/package.json | 5 +- packages/db/src/client.ts | 52 ++++ packages/test/package.json | 20 ++ .../{db/src/test-utils.ts => test/src/db.ts} | 30 +- packages/test/src/setup.ts | 30 ++ packages/test/tsconfig.json | 14 + scripts/generate-openapi-spec.ts | 9 +- vitest.config.ts | 12 + 45 files changed, 589 insertions(+), 364 deletions(-) create mode 100644 apps/web/vitest.config.ts create mode 100644 codecov.yml delete mode 100644 packages/core/bunfig.toml delete mode 100644 packages/core/test/preload.ts create mode 100644 packages/core/vitest.config.ts create mode 100644 packages/test/package.json rename packages/{db/src/test-utils.ts => test/src/db.ts} (86%) create mode 100644 packages/test/src/setup.ts create mode 100644 packages/test/tsconfig.json create mode 100644 vitest.config.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1b42888..de79f9a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,6 +23,9 @@ jobs: - name: Install dependencies run: bun install --frozen-lockfile + - name: Install Playwright browsers + run: bunx playwright install chromium + - name: Generate Expo types run: bunx expo customize tsconfig.json working-directory: ./apps/native @@ -37,4 +40,9 @@ jobs: run: bunx turbo run check-types - name: Run tests - run: bunx turbo run test -- --coverage --coverage-reporter=lcov + run: bunx turbo run test -- --coverage + + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/AGENTS.md b/AGENTS.md index 088f9ea..ee6929c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -22,7 +22,7 @@ cd packages/db && bun run db:migrate # Run Drizzle migrations cd packages/db && bun run db:studio # Open Drizzle Studio (visual DB browser) ``` -**Use Bun, not Node.js** — `bun `, `bun test`, `bun install`, `bun run