-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathvitest.config.ts
More file actions
107 lines (92 loc) · 2.16 KB
/
vitest.config.ts
File metadata and controls
107 lines (92 loc) · 2.16 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
105
106
107
import { defineConfig } from "vitest/config";
import path from "path";
export default defineConfig({
test: {
// Test environment
environment: "node",
// Global test setup
setupFiles: ["./tests/setup.ts"],
// Include test files
include: ["tests/**/*.test.ts"],
// Exclude patterns
exclude: ["node_modules", "dist"],
// Test timeout (ms)
testTimeout: 30000,
// Hook timeout (ms)
hookTimeout: 30000,
// Run tests in sequence for DB tests
sequence: {
shuffle: false,
},
// Coverage configuration
coverage: {
provider: "v8",
reporter: ["text", "json", "html", "lcov"],
reportsDirectory: "./coverage",
include: ["src/**/*.ts"],
exclude: [
"src/**/*.d.ts",
"src/**/types.ts",
"src/**/index.ts",
"src/**/*.test.ts",
"src/workers.ts",
],
thresholds: {
// Overall thresholds
lines: 80,
branches: 70,
functions: 80,
statements: 80,
},
},
// Global variables available in tests
globals: true,
// Reporter
reporters: ["verbose"],
// Pool configuration
pool: "forks",
poolOptions: {
forks: {
singleFork: true, // Run all tests in a single fork for shared DB state
},
},
// Test type groups for selective running
typecheck: {
enabled: false,
},
},
// Path aliases matching tsconfig
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
"@tests": path.resolve(__dirname, "./tests"),
},
},
// ESBuild configuration
esbuild: {
target: "node20",
},
});
// Export test group configurations for use with vitest workspaces
export const testGroups = {
unit: {
include: ["tests/unit/**/*.test.ts"],
name: "unit",
},
integration: {
include: ["tests/integration/**/*.test.ts"],
name: "integration",
},
e2e: {
include: ["tests/e2e/**/*.test.ts"],
name: "e2e",
},
api: {
include: ["tests/api/**/*.test.ts"],
name: "api",
},
services: {
include: ["tests/services/**/*.test.ts"],
name: "services",
},
};