diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 7b4513d8a..e114edb69 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -19,6 +19,10 @@ env: LOCAL_STORAGE_PATH: /tmp/reactive-resume-e2e-storage # The assistant spec talks to a scripted provider on 127.0.0.1. FLAG_ALLOW_UNSAFE_AI_BASE_URL: "true" + # Real-database unit suites. The cover-letter suite works in its own schema; the OAuth flow suite writes + # signing keys under its own secret, so it gets a database the e2e server never reads. + COVER_LETTER_TEST_DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres + OAUTH_TEST_DATABASE_URL: postgresql://postgres:postgres@localhost:5432/oauth_test jobs: e2e: @@ -80,6 +84,11 @@ jobs: - name: Run Database Migrations run: pnpm db:migrate + - name: Prepare OAuth Test Database + run: | + psql "$DATABASE_URL" -c "CREATE DATABASE oauth_test" + DATABASE_URL="$OAUTH_TEST_DATABASE_URL" pnpm db:migrate + # Runs every workspace package, not a hand-maintained filter list, so a package # cannot silently lose coverage by being left out. Serial execution: the PDF # rasterization and API rate-limit suites time out when several packages' Vitest diff --git a/apps/server/package.json b/apps/server/package.json index a59712c62..37e00eac5 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -11,7 +11,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/apps/web/package.json b/apps/web/package.json index d23ca5539..c7bae8f43 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -11,7 +11,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests", "lingui:extract": "lingui extract --clean --overwrite" }, diff --git a/packages/ai/package.json b/packages/ai/package.json index 206a11996..f7845c8d7 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -15,7 +15,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/api/package.json b/packages/api/package.json index 366600559..9f8a382f0 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -20,7 +20,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/api/turbo.json b/packages/api/turbo.json index 289d66b03..8351a2086 100644 --- a/packages/api/turbo.json +++ b/packages/api/turbo.json @@ -1,4 +1,13 @@ { "extends": ["//"], - "tags": ["runtime:server", "role:api"] + "tags": ["runtime:server", "role:api"], + "tasks": { + "test": { "env": ["COVER_LETTER_TEST_DATABASE_URL"] }, + "test:coverage": { "env": ["COVER_LETTER_TEST_DATABASE_URL"] }, + "test:agent": { "env": ["COVER_LETTER_TEST_DATABASE_URL"] }, + "test:ci": { + "cache": false, + "env": ["COVER_LETTER_TEST_DATABASE_URL"] + } + } } diff --git a/packages/auth/package.json b/packages/auth/package.json index 743594ba3..557ace1ab 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -11,7 +11,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/db/package.json b/packages/db/package.json index e9f680bbe..76690c752 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -21,7 +21,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/docx/package.json b/packages/docx/package.json index 76f38ccd6..da102ac96 100644 --- a/packages/docx/package.json +++ b/packages/docx/package.json @@ -10,7 +10,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/dsh-plugin/package.json b/packages/dsh-plugin/package.json index 0484212d5..346fdca2e 100644 --- a/packages/dsh-plugin/package.json +++ b/packages/dsh-plugin/package.json @@ -45,7 +45,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests", "prepublishOnly": "pnpm build" }, diff --git a/packages/email/package.json b/packages/email/package.json index 67570ccd5..4440356a3 100644 --- a/packages/email/package.json +++ b/packages/email/package.json @@ -12,7 +12,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/env/package.json b/packages/env/package.json index fd31165d8..b54135599 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -10,7 +10,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/fonts/package.json b/packages/fonts/package.json index 0141eb6b3..a02310d2e 100644 --- a/packages/fonts/package.json +++ b/packages/fonts/package.json @@ -10,7 +10,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/import/package.json b/packages/import/package.json index cac807528..371fd54e9 100644 --- a/packages/import/package.json +++ b/packages/import/package.json @@ -14,7 +14,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/mcp/package.json b/packages/mcp/package.json index bb7f1a57f..648ebd5b8 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -12,7 +12,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/pdf/package.json b/packages/pdf/package.json index db9285dc8..d5f150193 100644 --- a/packages/pdf/package.json +++ b/packages/pdf/package.json @@ -21,7 +21,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/resume/package.json b/packages/resume/package.json index 64885a0c6..6121695d7 100644 --- a/packages/resume/package.json +++ b/packages/resume/package.json @@ -22,7 +22,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/schema/package.json b/packages/schema/package.json index 60e359f06..1af7a1211 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -15,7 +15,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/ui/package.json b/packages/ui/package.json index b2d052a43..d0fa7d700 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -14,7 +14,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/packages/utils/package.json b/packages/utils/package.json index f2f17bbe0..b0585c8d7 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -17,7 +17,7 @@ "typecheck": "tsgo --noEmit", "test": "vitest run --passWithNoTests", "test:coverage": "vitest run --coverage --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests" }, "dependencies": { diff --git a/tooling/package.json b/tooling/package.json index c0630c2e0..42bbeb4b1 100644 --- a/tooling/package.json +++ b/tooling/package.json @@ -7,7 +7,7 @@ "db:reset": "tsx database/reset.ts", "docs:gen": "tsx semantic-css/generate-reference.ts", "test": "vitest run --passWithNoTests", - "test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", + "test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests", "typecheck": "tsgo --noEmit", "pdf:translations": "tsx locales/generate.ts", "icons:build": "tsx icons/material-symbols.ts",