Compare commits

...

2 Commits

Author SHA1 Message Date
Michal
bf0a60bc0a fix(test): switch workspace runner to vitest 4 \projects\ field
Some checks failed
CI/CD / typecheck (pull_request) Successful in 57s
CI/CD / test (pull_request) Successful in 1m7s
CI/CD / lint (pull_request) Successful in 2m43s
CI/CD / smoke (pull_request) Failing after 1m45s
CI/CD / build (pull_request) Successful in 5m43s
CI/CD / publish (pull_request) Has been skipped
The workspace-level \`pnpm test:run\` (which fulldeploy.sh runs as a
gate) was failing with \`localStorage is not defined\` on the new
src/web tests. Two intertwined causes:

1. vitest 4 deprecated \`vitest.workspace.ts\`. The file was being
   silently ignored, so per-package configs (cli, mcpd, mcplocal)
   weren't being honored under workspace mode either — the root
   config was being used for all of them.

2. With the root config in charge, src/web/tests ran with the default
   Node environment, no \`localStorage\` global, so the api wrapper's
   test setup blew up.

Fix:
- Move workspace projects into the root \`vitest.config.ts\` under the
  new \`projects\` array (the vitest 4 replacement).
- Add a proper \`src/web/vitest.config.ts\` (vitest 4 doesn't auto-pick
  up vite.config.ts as a test config in workspace mode, even though
  per-package \`pnpm --filter\` does).
- Exclude \`src/web/tests/**\` from the root-level include so we don't
  double-run them under the wrong env.

After: \`pnpm test:run\` runs 1999/1999 across 149 files (was 1992/1996
with 4 web failures). Per-package runs unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 21:31:27 +01:00
c0ba0a9040 feat: web prompt editor + agent personalities (#58)
Some checks failed
CI/CD / typecheck (push) Successful in 56s
CI/CD / test (push) Failing after 1m10s
CI/CD / lint (push) Successful in 2m34s
CI/CD / smoke (push) Has been skipped
CI/CD / build (push) Has been skipped
CI/CD / publish (push) Has been skipped
2026-04-26 20:21:53 +00:00
4 changed files with 32 additions and 1 deletions

View File

@@ -37,5 +37,6 @@ export default defineConfig({
environment: 'jsdom', environment: 'jsdom',
globals: true, globals: true,
setupFiles: ['./tests/setup.ts'], setupFiles: ['./tests/setup.ts'],
include: ['tests/**/*.test.{ts,tsx}'],
}, },
}); });

14
src/web/vitest.config.ts Normal file
View File

@@ -0,0 +1,14 @@
/// <reference types="vitest/config" />
import { defineProject } from 'vitest/config';
import react from '@vitejs/plugin-react';
export default defineProject({
plugins: [react()],
test: {
name: 'web',
include: ['tests/**/*.test.{ts,tsx}'],
environment: 'jsdom',
globals: true,
setupFiles: ['./tests/setup.ts'],
},
});

View File

@@ -9,8 +9,20 @@ export default defineConfig({
exclude: ['**/node_modules/**', '**/dist/**', '**/*.config.*'], exclude: ['**/node_modules/**', '**/dist/**', '**/*.config.*'],
}, },
include: ['src/*/tests/**/*.test.ts', 'tests/**/*.test.ts'], include: ['src/*/tests/**/*.test.ts', 'tests/**/*.test.ts'],
exclude: ['**/node_modules/**', '**/smoke/**', 'src/db/tests/**'], // src/web tests need jsdom; they're run via the web package's own
// vitest.config.ts under the projects entry below.
exclude: ['**/node_modules/**', '**/smoke/**', 'src/db/tests/**', 'src/web/tests/**'],
testTimeout: 10000, testTimeout: 10000,
// Vitest 4 uses `projects` (in-config) instead of vitest.workspace.ts.
// Each project below is rooted in a workspace package; vitest reads
// its `vitest.config.ts` (or vite.config.ts) for the test config.
projects: [
'src/shared',
'src/cli',
'src/mcpd',
'src/mcplocal',
'src/web',
],
// DB tests require a test database; run them explicitly via: // DB tests require a test database; run them explicitly via:
// pnpm --filter db exec vitest run // pnpm --filter db exec vitest run
// globalSetup: ['src/db/tests/global-setup.ts'], // globalSetup: ['src/db/tests/global-setup.ts'],

View File

@@ -6,4 +6,8 @@ export default defineWorkspace([
'src/cli', 'src/cli',
'src/mcpd', 'src/mcpd',
'src/mcplocal', 'src/mcplocal',
// src/web has its own vite.config.ts with `environment: 'jsdom'` —
// listing it here makes the workspace runner pick that up so the
// browser-y tests get the right globals (localStorage, document).
'src/web',
]); ]);