From 724ba31da05a24b58d9cda4bcf1724c3a947f625 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Sun, 10 May 2026 17:42:22 +0200 Subject: [PATCH] =?UTF-8?q?test(server):=20hermetic=20env=20defaults=20?= =?UTF-8?q?=E2=80=94=20tests=20no=20longer=20require=20local=20.env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit config.ts requires JWT_SECRET at module-load time. Since `.env` is gitignored it doesn't propagate to git worktrees, fresh clones, or CI without secrets — producing 200+ confusing cascade failures (vitest module-mock errors that look unrelated to the real cause). Add a vitest setupFile that sets JWT_SECRET to a fixed test-only value via `??=`, so a real .env still wins where one exists. Tests are now hermetic: clone the repo, `pnpm install`, `pnpm --filter server test` → 477/477 pass. --- packages/server/test/setup-env.ts | 7 +++++++ packages/server/vitest.config.ts | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 packages/server/test/setup-env.ts create mode 100644 packages/server/vitest.config.ts diff --git a/packages/server/test/setup-env.ts b/packages/server/test/setup-env.ts new file mode 100644 index 00000000..16c5d2c3 --- /dev/null +++ b/packages/server/test/setup-env.ts @@ -0,0 +1,7 @@ +// Vitest setup: provides test-only defaults for env vars that config.ts +// requires at module-load time. Without this, every test that transitively +// imports a server module aborts during import when .env is absent (fresh +// worktrees, CI without secrets, contributor first-run). Real .env values +// still take precedence — `??=` only fills holes. + +process.env.JWT_SECRET ??= 'test-only-jwt-secret-not-for-production-use!!'; diff --git a/packages/server/vitest.config.ts b/packages/server/vitest.config.ts new file mode 100644 index 00000000..9605564b --- /dev/null +++ b/packages/server/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + setupFiles: ['./test/setup-env.ts'], + }, +});