-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvitest.config.ts
More file actions
104 lines (92 loc) · 3.2 KB
/
vitest.config.ts
File metadata and controls
104 lines (92 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import { resolve } from 'node:path';
import { defineConfig } from 'vitest/config';
/**
* Unified Vitest configuration for the entire HAVE SDK
*
* This configuration handles all SDK packages in the monorepo:
* - Infrastructure packages (utils, files, sql, ai, cache, etc.)
* - Service packages (ocr, pdf, spider, geo, translator, documents, logger)
*
* Benefits:
* - Single test runner for consistency
* - Simplified development workflow
* - Better IDE integration
*/
export default defineConfig({
plugins: [
// Core packages don't need Svelte plugin for testing
// Individual packages can add their own plugins if needed
],
test: {
// Global test setup
setupFiles: ['./vitest.setup.ts'],
// Include all test file types following the testing standard
// - *.test.ts: Unit tests
// - *.spec.ts: Integration tests
// - *.examples.test.ts: Cookbook/example tests
// - *.optional.test.ts: Optional tests (external APIs, slow tests)
include: [
'packages/*/src/**/*.{test,spec,examples.test,optional.test}.{ts,mts}',
],
// Exclude only what Vitest shouldn't handle
// Note: By default, optional tests are included. Use --grep pattern to exclude.
exclude: [
'**/node_modules/**',
'**/dist/**',
'**/docs/**',
'e2e-tests/**',
'test-results/**',
'playwright-report/**',
'**/*.d.ts',
'**/coverage/**',
],
// Environment configuration
environment: 'node',
// Timeouts for different test types
testTimeout: 30000, // Longer for potential OCR/PDF processing
hookTimeout: 30000, // Match testTimeout for slow CI environments
// Reporter configuration
reporters: ['default'],
// Coverage configuration
coverage: {
provider: 'v8',
include: ['packages/*/src/**/*.{js,ts}'],
exclude: [
'packages/*/src/**/*.{test,spec}.{js,ts}',
'packages/*/src/**/*.d.ts',
],
},
// Pool options for parallel execution
pool: 'forks',
poolOptions: {
forks: {
singleFork: true, // Run tests sequentially to avoid memory issues
isolate: true,
},
},
// Increase memory limit for OCR tests
maxWorkers: 1,
},
// Resolve workspace packages for testing
resolve: {
alias: {
'@have/config': resolve(__dirname, 'packages/config/src'),
'@have/utils': resolve(__dirname, 'packages/utils/src'),
'@have/files': resolve(__dirname, 'packages/files/src'),
'@have/cache': resolve(__dirname, 'packages/cache/src'),
'@have/sql': resolve(__dirname, 'packages/sql/src'),
'@have/ocr': resolve(__dirname, 'packages/ocr/src'),
'@have/pdf': resolve(__dirname, 'packages/pdf/src'),
'@have/ai': resolve(__dirname, 'packages/ai/src'),
'@have/spider': resolve(__dirname, 'packages/spider/src'),
'@have/geo': resolve(__dirname, 'packages/geo/src'),
'@have/translator': resolve(__dirname, 'packages/translator/src'),
'@have/documents': resolve(__dirname, 'packages/documents/src'),
'@have/logger': resolve(__dirname, 'packages/logger/src'),
},
},
// Optimize dependencies for faster test startup
optimizeDeps: {
include: ['vitest', '@have/utils', 'tesseract.js'],
},
});