mirror of
https://github.com/lobehub/lobehub.git
synced 2026-09-20 04:56:13 +08:00
aba9e8150c
* 👷 build: upgrade vitest to 5.0.0 Bump vitest and @vitest/coverage-v8 to 5.0.0 and migrate the configs for Vitest 4/5: drop the removed coverage.all option and replace poolOptions.forks.singleFork with maxWorkers/isolate. * 👷 build: shim jest-dom matcher types for vitest 5 Vitest 5 exposes Assertion<R, T> and no longer reads the jest.Matchers augmentation that @testing-library/jest-dom ships, so its matchers vanish from expect(). Re-declare them on the Vitest interface, and replace the removed describe.sequential with { concurrent: false }. * 👷 build: migrate the test suite to vitest 5 Vitest 5 (and @vitest/coverage-v8) replaces the esbuild dep optimizer with Rolldown, removed environmentMatchGlobs/coverage.all/poolOptions, forwards `new` to mock implementations, requires top-level vi.mock, and no longer resets automocks in restoreAllMocks. Migrate the root config to app/server projects with Rolldown optimizer options, shim the jest-dom matchers on Assertion<R, T>, and update the affected tests (constructor mocks, hoisted mocks, awaited assertions, explicit mock types, per-test mock defaults). * 👷 build: make the openapi knowledge-base FileService mock constructable tests/ was outside the per-area sweep; vitest 5 forwards `new` to the mock implementation, so the arrow implementation threw "is not a constructor". * 👷 build: point the CI blob-report artifacts at the vitest 5 output dir Vitest 5 writes blob reports to .vitest/blob instead of .vitest-reports, so the sharded jobs uploaded nothing and the merge jobs failed with ENOENT. Track the new directory in .gitignore too. * 👷 build: refresh the desktop lockfile for vitest 5 apps/desktop/pnpm-lock.yaml is committed and the desktop build action installs with --frozen-lockfile, so the vitest/override change has to be reflected in it. * 👷 build: keep the pre-vitest-4 coverage exclusions explicit Vitest 4+ ships an empty coverageConfigDefaults.exclude, so configs that spread it silently lost the default exclusions (node_modules, dist, *.config.*) and counted more files. Inline the previous list. * 🎨 style: format the migrated vitest configs * 👷 build: keep canary's new class mocks constructable under vitest 5 exploreGraph/dispatchAuthorization/scopedDevices (canary #19375, #19352) mock classes with arrow implementations; vitest 5 constructs the implementation when the mock is newed, so the arrows throw 'is not a constructor'.
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import path from 'node:path';
|
|
|
|
import { defineConfig } from 'vitest/config';
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
// Importing `@lobechat/agent-runtime` pulls in `@lobechat/context-engine`,
|
|
// which reaches `@lobechat/agent-templates` and its `.md` prompt files.
|
|
// Vitest would otherwise try to parse the Markdown as JavaScript. Mirrors
|
|
// the root config's `raw-md` plugin; the content is irrelevant to the CLI.
|
|
{
|
|
name: 'raw-md',
|
|
transform(_code: string, id: string) {
|
|
if (id.endsWith('.md')) return { code: 'export default ""', map: null };
|
|
},
|
|
},
|
|
],
|
|
resolve: {
|
|
alias: [
|
|
{
|
|
find: '@lobechat/device-gateway-client',
|
|
replacement: path.resolve(__dirname, '../../packages/device-gateway-client/src/index.ts'),
|
|
},
|
|
{
|
|
find: /^@lobechat\/local-file-shell$/,
|
|
replacement: path.resolve(__dirname, '../../packages/local-file-shell/src/index.ts'),
|
|
},
|
|
{
|
|
find: '@lobechat/file-loaders',
|
|
replacement: path.resolve(__dirname, '../../packages/file-loaders/src/index.ts'),
|
|
},
|
|
{
|
|
find: '@lobechat/tool-runtime',
|
|
replacement: path.resolve(__dirname, '../../packages/tool-runtime/src/index.ts'),
|
|
},
|
|
],
|
|
},
|
|
test: {
|
|
coverage: {
|
|
reporter: ['text', 'json', 'lcov', 'text-summary'],
|
|
},
|
|
environment: 'node',
|
|
setupFiles: ['./tests/setup.ts'],
|
|
// Suppress unhandled rejection warnings from Commander async actions with mocked process.exit
|
|
onConsoleLog: () => true,
|
|
},
|
|
});
|