start-vibing 2.0.11 → 2.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -177
- package/dist/cli.js +19 -2
- package/package.json +42 -42
- package/template/.claude/CLAUDE.md +174 -174
- package/template/.claude/agents/01-orchestration/agent-selector.md +130 -130
- package/template/.claude/agents/01-orchestration/checkpoint-manager.md +142 -142
- package/template/.claude/agents/01-orchestration/context-manager.md +138 -138
- package/template/.claude/agents/01-orchestration/error-recovery.md +182 -182
- package/template/.claude/agents/01-orchestration/orchestrator.md +114 -114
- package/template/.claude/agents/01-orchestration/parallel-coordinator.md +141 -141
- package/template/.claude/agents/01-orchestration/task-decomposer.md +121 -121
- package/template/.claude/agents/01-orchestration/workflow-router.md +114 -114
- package/template/.claude/agents/02-typescript/bun-runtime-expert.md +197 -197
- package/template/.claude/agents/02-typescript/esm-resolver.md +193 -193
- package/template/.claude/agents/02-typescript/import-alias-enforcer.md +158 -158
- package/template/.claude/agents/02-typescript/ts-generics-helper.md +183 -183
- package/template/.claude/agents/02-typescript/ts-migration-helper.md +238 -238
- package/template/.claude/agents/02-typescript/ts-strict-checker.md +180 -180
- package/template/.claude/agents/02-typescript/ts-types-analyzer.md +199 -199
- package/template/.claude/agents/02-typescript/type-definition-writer.md +187 -187
- package/template/.claude/agents/02-typescript/zod-schema-designer.md +212 -212
- package/template/.claude/agents/02-typescript/zod-validator.md +158 -158
- package/template/.claude/agents/03-testing/playwright-assertions.md +265 -265
- package/template/.claude/agents/03-testing/playwright-e2e.md +247 -247
- package/template/.claude/agents/03-testing/playwright-fixtures.md +234 -234
- package/template/.claude/agents/03-testing/playwright-multi-viewport.md +256 -256
- package/template/.claude/agents/03-testing/playwright-page-objects.md +247 -247
- package/template/.claude/agents/03-testing/test-cleanup-manager.md +248 -248
- package/template/.claude/agents/03-testing/test-data-generator.md +254 -254
- package/template/.claude/agents/03-testing/tester-integration.md +278 -278
- package/template/.claude/agents/03-testing/tester-unit.md +207 -207
- package/template/.claude/agents/03-testing/vitest-config.md +287 -287
- package/template/.claude/agents/04-docker/container-health.md +255 -255
- package/template/.claude/agents/04-docker/deployment-validator.md +225 -225
- package/template/.claude/agents/04-docker/docker-compose-designer.md +281 -281
- package/template/.claude/agents/04-docker/docker-env-manager.md +235 -235
- package/template/.claude/agents/04-docker/docker-multi-stage.md +241 -241
- package/template/.claude/agents/04-docker/dockerfile-optimizer.md +208 -208
- package/template/.claude/agents/05-database/database-seeder.md +273 -273
- package/template/.claude/agents/05-database/mongodb-query-optimizer.md +230 -230
- package/template/.claude/agents/05-database/mongoose-aggregation.md +306 -306
- package/template/.claude/agents/05-database/mongoose-index-optimizer.md +182 -182
- package/template/.claude/agents/05-database/mongoose-schema-designer.md +267 -267
- package/template/.claude/agents/06-security/auth-session-validator.md +68 -68
- package/template/.claude/agents/06-security/input-sanitizer.md +80 -80
- package/template/.claude/agents/06-security/owasp-checker.md +97 -97
- package/template/.claude/agents/06-security/permission-auditor.md +100 -100
- package/template/.claude/agents/06-security/security-auditor.md +84 -84
- package/template/.claude/agents/06-security/sensitive-data-scanner.md +83 -83
- package/template/.claude/agents/07-documentation/api-documenter.md +136 -136
- package/template/.claude/agents/07-documentation/changelog-manager.md +105 -105
- package/template/.claude/agents/07-documentation/documenter.md +76 -76
- package/template/.claude/agents/07-documentation/domain-updater.md +81 -81
- package/template/.claude/agents/07-documentation/jsdoc-generator.md +114 -114
- package/template/.claude/agents/07-documentation/readme-generator.md +135 -135
- package/template/.claude/agents/08-git/branch-manager.md +58 -58
- package/template/.claude/agents/08-git/commit-manager.md +63 -63
- package/template/.claude/agents/08-git/pr-creator.md +76 -76
- package/template/.claude/agents/09-quality/code-reviewer.md +71 -71
- package/template/.claude/agents/09-quality/quality-checker.md +67 -67
- package/template/.claude/agents/10-research/best-practices-finder.md +89 -89
- package/template/.claude/agents/10-research/competitor-analyzer.md +106 -106
- package/template/.claude/agents/10-research/pattern-researcher.md +93 -93
- package/template/.claude/agents/10-research/research-cache-manager.md +76 -76
- package/template/.claude/agents/10-research/research-web.md +98 -98
- package/template/.claude/agents/10-research/tech-evaluator.md +101 -101
- package/template/.claude/agents/11-ui-ux/accessibility-auditor.md +136 -136
- package/template/.claude/agents/11-ui-ux/design-system-enforcer.md +125 -125
- package/template/.claude/agents/11-ui-ux/skeleton-generator.md +118 -118
- package/template/.claude/agents/11-ui-ux/ui-desktop.md +132 -132
- package/template/.claude/agents/11-ui-ux/ui-mobile.md +98 -98
- package/template/.claude/agents/11-ui-ux/ui-tablet.md +110 -110
- package/template/.claude/agents/12-performance/api-latency-analyzer.md +156 -156
- package/template/.claude/agents/12-performance/bundle-analyzer.md +113 -113
- package/template/.claude/agents/12-performance/memory-leak-detector.md +137 -137
- package/template/.claude/agents/12-performance/performance-profiler.md +115 -115
- package/template/.claude/agents/12-performance/query-optimizer.md +124 -124
- package/template/.claude/agents/12-performance/render-optimizer.md +154 -154
- package/template/.claude/agents/13-debugging/build-error-fixer.md +207 -207
- package/template/.claude/agents/13-debugging/debugger.md +149 -149
- package/template/.claude/agents/13-debugging/error-stack-analyzer.md +141 -141
- package/template/.claude/agents/13-debugging/network-debugger.md +208 -208
- package/template/.claude/agents/13-debugging/runtime-error-fixer.md +181 -181
- package/template/.claude/agents/13-debugging/type-error-resolver.md +185 -185
- package/template/.claude/agents/14-validation/final-validator.md +93 -93
- package/template/.claude/agents/_backup/analyzer.md +134 -134
- package/template/.claude/agents/_backup/code-reviewer.md +279 -279
- package/template/.claude/agents/_backup/commit-manager.md +219 -219
- package/template/.claude/agents/_backup/debugger.md +280 -280
- package/template/.claude/agents/_backup/documenter.md +237 -237
- package/template/.claude/agents/_backup/domain-updater.md +197 -197
- package/template/.claude/agents/_backup/final-validator.md +169 -169
- package/template/.claude/agents/_backup/orchestrator.md +149 -149
- package/template/.claude/agents/_backup/performance.md +232 -232
- package/template/.claude/agents/_backup/quality-checker.md +240 -240
- package/template/.claude/agents/_backup/research.md +315 -315
- package/template/.claude/agents/_backup/security-auditor.md +192 -192
- package/template/.claude/agents/_backup/tester.md +566 -566
- package/template/.claude/agents/_backup/ui-ux-reviewer.md +247 -247
- package/template/.claude/config/README.md +30 -30
- package/template/.claude/config/mcp-config.json +344 -344
- package/template/.claude/config/project-config.json +53 -53
- package/template/.claude/config/quality-gates.json +46 -46
- package/template/.claude/config/security-rules.json +45 -45
- package/template/.claude/config/testing-config.json +164 -164
- package/template/.claude/hooks/SETUP.md +126 -126
- package/template/.claude/hooks/run-hook.ts +176 -176
- package/template/.claude/hooks/stop-validator.ts +914 -824
- package/template/.claude/hooks/user-prompt-submit.ts +886 -886
- package/template/.claude/scripts/mcp-quick-install.ts +151 -151
- package/template/.claude/scripts/setup-mcps.ts +651 -651
- package/template/.claude/settings.json +275 -275
- package/template/.claude/skills/bun-runtime/SKILL.md +430 -430
- package/template/.claude/skills/codebase-knowledge/domains/claude-system.md +431 -431
- package/template/.claude/skills/codebase-knowledge/domains/mcp-integration.md +295 -295
- package/template/.claude/skills/debugging-patterns/SKILL.md +485 -485
- package/template/.claude/skills/docker-patterns/SKILL.md +555 -555
- package/template/.claude/skills/git-workflow/SKILL.md +454 -454
- package/template/.claude/skills/mongoose-patterns/SKILL.md +499 -499
- package/template/.claude/skills/nextjs-app-router/SKILL.md +327 -327
- package/template/.claude/skills/performance-patterns/SKILL.md +547 -547
- package/template/.claude/skills/playwright-automation/SKILL.md +438 -438
- package/template/.claude/skills/react-patterns/SKILL.md +389 -389
- package/template/.claude/skills/research-cache/SKILL.md +222 -222
- package/template/.claude/skills/shadcn-ui/SKILL.md +511 -511
- package/template/.claude/skills/tailwind-patterns/SKILL.md +465 -465
- package/template/.claude/skills/test-coverage/SKILL.md +467 -467
- package/template/.claude/skills/trpc-api/SKILL.md +434 -434
- package/template/.claude/skills/typescript-strict/SKILL.md +367 -367
- package/template/.claude/skills/zod-validation/SKILL.md +403 -403
- package/template/CLAUDE.md +117 -117
|
@@ -1,287 +1,287 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: vitest-config
|
|
3
|
-
description: 'AUTOMATICALLY invoke when setting up tests or coverage issues arise. Triggers: test setup needed, coverage configuration, vitest config missing. Configures Vitest properly for the project. PROACTIVELY sets up test infrastructure.'
|
|
4
|
-
model: haiku
|
|
5
|
-
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
-
skills: test-coverage
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Vitest Config Agent
|
|
10
|
-
|
|
11
|
-
You configure Vitest for optimal unit testing.
|
|
12
|
-
|
|
13
|
-
## Basic Configuration
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
// vitest.config.ts
|
|
17
|
-
import { defineConfig } from 'vitest/config';
|
|
18
|
-
import { resolve } from 'path';
|
|
19
|
-
|
|
20
|
-
export default defineConfig({
|
|
21
|
-
test: {
|
|
22
|
-
// Test environment
|
|
23
|
-
environment: 'node',
|
|
24
|
-
|
|
25
|
-
// Global test setup
|
|
26
|
-
globals: true,
|
|
27
|
-
|
|
28
|
-
// Test file patterns
|
|
29
|
-
include: ['tests/unit/**/*.test.ts'],
|
|
30
|
-
exclude: ['node_modules', 'tests/e2e'],
|
|
31
|
-
|
|
32
|
-
// Setup files
|
|
33
|
-
setupFiles: ['./tests/unit/setup.ts'],
|
|
34
|
-
|
|
35
|
-
// Coverage
|
|
36
|
-
coverage: {
|
|
37
|
-
provider: 'v8',
|
|
38
|
-
reporter: ['text', 'json', 'html'],
|
|
39
|
-
include: ['src/**/*.ts'],
|
|
40
|
-
exclude: ['src/**/*.d.ts', 'src/**/*.test.ts'],
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
// Timeouts
|
|
44
|
-
testTimeout: 10000,
|
|
45
|
-
hookTimeout: 10000,
|
|
46
|
-
|
|
47
|
-
// Parallelization
|
|
48
|
-
pool: 'threads',
|
|
49
|
-
poolOptions: {
|
|
50
|
-
threads: {
|
|
51
|
-
singleThread: false,
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
resolve: {
|
|
57
|
-
alias: {
|
|
58
|
-
$types: resolve(__dirname, './types'),
|
|
59
|
-
'@common': resolve(__dirname, './common'),
|
|
60
|
-
'@db': resolve(__dirname, './common/db'),
|
|
61
|
-
'@': resolve(__dirname, './src'),
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Setup File
|
|
68
|
-
|
|
69
|
-
```typescript
|
|
70
|
-
// tests/unit/setup.ts
|
|
71
|
-
import { beforeAll, afterAll, beforeEach, vi } from 'vitest';
|
|
72
|
-
|
|
73
|
-
// Global mocks
|
|
74
|
-
vi.mock('@common', () => ({
|
|
75
|
-
logger: {
|
|
76
|
-
info: vi.fn(),
|
|
77
|
-
error: vi.fn(),
|
|
78
|
-
warn: vi.fn(),
|
|
79
|
-
debug: vi.fn(),
|
|
80
|
-
},
|
|
81
|
-
}));
|
|
82
|
-
|
|
83
|
-
// Reset mocks between tests
|
|
84
|
-
beforeEach(() => {
|
|
85
|
-
vi.clearAllMocks();
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
// Cleanup
|
|
89
|
-
afterAll(() => {
|
|
90
|
-
vi.restoreAllMocks();
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
// Extend expect if needed
|
|
94
|
-
// expect.extend({ customMatcher });
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Path Aliases in Tests
|
|
98
|
-
|
|
99
|
-
```typescript
|
|
100
|
-
// vitest.config.ts
|
|
101
|
-
import { defineConfig } from 'vitest/config';
|
|
102
|
-
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
103
|
-
|
|
104
|
-
export default defineConfig({
|
|
105
|
-
plugins: [tsconfigPaths()],
|
|
106
|
-
test: {
|
|
107
|
-
// ...
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Coverage Configuration
|
|
113
|
-
|
|
114
|
-
```typescript
|
|
115
|
-
// vitest.config.ts
|
|
116
|
-
export default defineConfig({
|
|
117
|
-
test: {
|
|
118
|
-
coverage: {
|
|
119
|
-
provider: 'v8',
|
|
120
|
-
reporter: ['text', 'json', 'html', 'lcov'],
|
|
121
|
-
|
|
122
|
-
// What to include
|
|
123
|
-
include: ['src/**/*.ts', '!src/**/*.d.ts', '!src/**/*.test.ts', '!src/index.ts'],
|
|
124
|
-
|
|
125
|
-
// Thresholds
|
|
126
|
-
thresholds: {
|
|
127
|
-
lines: 80,
|
|
128
|
-
functions: 80,
|
|
129
|
-
branches: 80,
|
|
130
|
-
statements: 80,
|
|
131
|
-
},
|
|
132
|
-
|
|
133
|
-
// Output directory
|
|
134
|
-
reportsDirectory: './coverage',
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Environment Configuration
|
|
141
|
-
|
|
142
|
-
```typescript
|
|
143
|
-
// For DOM testing
|
|
144
|
-
export default defineConfig({
|
|
145
|
-
test: {
|
|
146
|
-
environment: 'jsdom',
|
|
147
|
-
environmentOptions: {
|
|
148
|
-
jsdom: {
|
|
149
|
-
url: 'http://localhost:3000',
|
|
150
|
-
},
|
|
151
|
-
},
|
|
152
|
-
},
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
// For Node testing (default)
|
|
156
|
-
export default defineConfig({
|
|
157
|
-
test: {
|
|
158
|
-
environment: 'node',
|
|
159
|
-
},
|
|
160
|
-
});
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## Mocking Configuration
|
|
164
|
-
|
|
165
|
-
```typescript
|
|
166
|
-
// vitest.config.ts
|
|
167
|
-
export default defineConfig({
|
|
168
|
-
test: {
|
|
169
|
-
// Mock all modules in __mocks__ folder
|
|
170
|
-
mockReset: true,
|
|
171
|
-
|
|
172
|
-
// Auto-mock configuration
|
|
173
|
-
deps: {
|
|
174
|
-
inline: ['some-esm-package'],
|
|
175
|
-
},
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
## Multiple Test Configurations
|
|
181
|
-
|
|
182
|
-
```typescript
|
|
183
|
-
// vitest.config.ts
|
|
184
|
-
import { defineConfig } from 'vitest/config';
|
|
185
|
-
|
|
186
|
-
export default defineConfig({
|
|
187
|
-
test: {
|
|
188
|
-
include: ['tests/unit/**/*.test.ts'],
|
|
189
|
-
},
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
// vitest.integration.config.ts
|
|
193
|
-
import { defineConfig, mergeConfig } from 'vitest/config';
|
|
194
|
-
import baseConfig from './vitest.config';
|
|
195
|
-
|
|
196
|
-
export default mergeConfig(
|
|
197
|
-
baseConfig,
|
|
198
|
-
defineConfig({
|
|
199
|
-
test: {
|
|
200
|
-
include: ['tests/integration/**/*.test.ts'],
|
|
201
|
-
testTimeout: 30000,
|
|
202
|
-
hookTimeout: 30000,
|
|
203
|
-
},
|
|
204
|
-
})
|
|
205
|
-
);
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Package.json Scripts
|
|
209
|
-
|
|
210
|
-
```json
|
|
211
|
-
{
|
|
212
|
-
"scripts": {
|
|
213
|
-
"test": "vitest run",
|
|
214
|
-
"test:watch": "vitest",
|
|
215
|
-
"test:coverage": "vitest run --coverage",
|
|
216
|
-
"test:ui": "vitest --ui",
|
|
217
|
-
"test:integration": "vitest run --config vitest.integration.config.ts"
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
## TypeScript Configuration
|
|
223
|
-
|
|
224
|
-
```json
|
|
225
|
-
// tsconfig.json
|
|
226
|
-
{
|
|
227
|
-
"compilerOptions": {
|
|
228
|
-
"types": ["vitest/globals"]
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
```typescript
|
|
234
|
-
// Or in vitest.config.ts
|
|
235
|
-
export default defineConfig({
|
|
236
|
-
test: {
|
|
237
|
-
globals: true,
|
|
238
|
-
typecheck: {
|
|
239
|
-
include: ['tests/**/*.test.ts'],
|
|
240
|
-
},
|
|
241
|
-
},
|
|
242
|
-
});
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
## Reporter Configuration
|
|
246
|
-
|
|
247
|
-
```typescript
|
|
248
|
-
export default defineConfig({
|
|
249
|
-
test: {
|
|
250
|
-
reporters: ['default', 'html', 'json'],
|
|
251
|
-
outputFile: {
|
|
252
|
-
html: './test-results/index.html',
|
|
253
|
-
json: './test-results/results.json',
|
|
254
|
-
},
|
|
255
|
-
},
|
|
256
|
-
});
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
## Running Tests
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
# Run all tests
|
|
263
|
-
bun run test
|
|
264
|
-
|
|
265
|
-
# Run specific file
|
|
266
|
-
bun run test tests/unit/utils/helper.test.ts
|
|
267
|
-
|
|
268
|
-
# Run with pattern
|
|
269
|
-
bun run test --grep "should validate"
|
|
270
|
-
|
|
271
|
-
# Watch mode
|
|
272
|
-
bun run test:watch
|
|
273
|
-
|
|
274
|
-
# With coverage
|
|
275
|
-
bun run test:coverage
|
|
276
|
-
|
|
277
|
-
# UI mode
|
|
278
|
-
bun run test:ui
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
## Critical Rules
|
|
282
|
-
|
|
283
|
-
1. **PATH ALIASES** - Match tsconfig.json aliases
|
|
284
|
-
2. **GLOBALS** - Enable for describe, it, expect
|
|
285
|
-
3. **COVERAGE** - Set meaningful thresholds
|
|
286
|
-
4. **SETUP FILES** - Common mocks and cleanup
|
|
287
|
-
5. **ISOLATION** - Reset mocks between tests
|
|
1
|
+
---
|
|
2
|
+
name: vitest-config
|
|
3
|
+
description: 'AUTOMATICALLY invoke when setting up tests or coverage issues arise. Triggers: test setup needed, coverage configuration, vitest config missing. Configures Vitest properly for the project. PROACTIVELY sets up test infrastructure.'
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
skills: test-coverage
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Vitest Config Agent
|
|
10
|
+
|
|
11
|
+
You configure Vitest for optimal unit testing.
|
|
12
|
+
|
|
13
|
+
## Basic Configuration
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
// vitest.config.ts
|
|
17
|
+
import { defineConfig } from 'vitest/config';
|
|
18
|
+
import { resolve } from 'path';
|
|
19
|
+
|
|
20
|
+
export default defineConfig({
|
|
21
|
+
test: {
|
|
22
|
+
// Test environment
|
|
23
|
+
environment: 'node',
|
|
24
|
+
|
|
25
|
+
// Global test setup
|
|
26
|
+
globals: true,
|
|
27
|
+
|
|
28
|
+
// Test file patterns
|
|
29
|
+
include: ['tests/unit/**/*.test.ts'],
|
|
30
|
+
exclude: ['node_modules', 'tests/e2e'],
|
|
31
|
+
|
|
32
|
+
// Setup files
|
|
33
|
+
setupFiles: ['./tests/unit/setup.ts'],
|
|
34
|
+
|
|
35
|
+
// Coverage
|
|
36
|
+
coverage: {
|
|
37
|
+
provider: 'v8',
|
|
38
|
+
reporter: ['text', 'json', 'html'],
|
|
39
|
+
include: ['src/**/*.ts'],
|
|
40
|
+
exclude: ['src/**/*.d.ts', 'src/**/*.test.ts'],
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
// Timeouts
|
|
44
|
+
testTimeout: 10000,
|
|
45
|
+
hookTimeout: 10000,
|
|
46
|
+
|
|
47
|
+
// Parallelization
|
|
48
|
+
pool: 'threads',
|
|
49
|
+
poolOptions: {
|
|
50
|
+
threads: {
|
|
51
|
+
singleThread: false,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
resolve: {
|
|
57
|
+
alias: {
|
|
58
|
+
$types: resolve(__dirname, './types'),
|
|
59
|
+
'@common': resolve(__dirname, './common'),
|
|
60
|
+
'@db': resolve(__dirname, './common/db'),
|
|
61
|
+
'@': resolve(__dirname, './src'),
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Setup File
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// tests/unit/setup.ts
|
|
71
|
+
import { beforeAll, afterAll, beforeEach, vi } from 'vitest';
|
|
72
|
+
|
|
73
|
+
// Global mocks
|
|
74
|
+
vi.mock('@common', () => ({
|
|
75
|
+
logger: {
|
|
76
|
+
info: vi.fn(),
|
|
77
|
+
error: vi.fn(),
|
|
78
|
+
warn: vi.fn(),
|
|
79
|
+
debug: vi.fn(),
|
|
80
|
+
},
|
|
81
|
+
}));
|
|
82
|
+
|
|
83
|
+
// Reset mocks between tests
|
|
84
|
+
beforeEach(() => {
|
|
85
|
+
vi.clearAllMocks();
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Cleanup
|
|
89
|
+
afterAll(() => {
|
|
90
|
+
vi.restoreAllMocks();
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// Extend expect if needed
|
|
94
|
+
// expect.extend({ customMatcher });
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Path Aliases in Tests
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// vitest.config.ts
|
|
101
|
+
import { defineConfig } from 'vitest/config';
|
|
102
|
+
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
103
|
+
|
|
104
|
+
export default defineConfig({
|
|
105
|
+
plugins: [tsconfigPaths()],
|
|
106
|
+
test: {
|
|
107
|
+
// ...
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Coverage Configuration
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// vitest.config.ts
|
|
116
|
+
export default defineConfig({
|
|
117
|
+
test: {
|
|
118
|
+
coverage: {
|
|
119
|
+
provider: 'v8',
|
|
120
|
+
reporter: ['text', 'json', 'html', 'lcov'],
|
|
121
|
+
|
|
122
|
+
// What to include
|
|
123
|
+
include: ['src/**/*.ts', '!src/**/*.d.ts', '!src/**/*.test.ts', '!src/index.ts'],
|
|
124
|
+
|
|
125
|
+
// Thresholds
|
|
126
|
+
thresholds: {
|
|
127
|
+
lines: 80,
|
|
128
|
+
functions: 80,
|
|
129
|
+
branches: 80,
|
|
130
|
+
statements: 80,
|
|
131
|
+
},
|
|
132
|
+
|
|
133
|
+
// Output directory
|
|
134
|
+
reportsDirectory: './coverage',
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Environment Configuration
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
// For DOM testing
|
|
144
|
+
export default defineConfig({
|
|
145
|
+
test: {
|
|
146
|
+
environment: 'jsdom',
|
|
147
|
+
environmentOptions: {
|
|
148
|
+
jsdom: {
|
|
149
|
+
url: 'http://localhost:3000',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
// For Node testing (default)
|
|
156
|
+
export default defineConfig({
|
|
157
|
+
test: {
|
|
158
|
+
environment: 'node',
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Mocking Configuration
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
// vitest.config.ts
|
|
167
|
+
export default defineConfig({
|
|
168
|
+
test: {
|
|
169
|
+
// Mock all modules in __mocks__ folder
|
|
170
|
+
mockReset: true,
|
|
171
|
+
|
|
172
|
+
// Auto-mock configuration
|
|
173
|
+
deps: {
|
|
174
|
+
inline: ['some-esm-package'],
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Multiple Test Configurations
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
// vitest.config.ts
|
|
184
|
+
import { defineConfig } from 'vitest/config';
|
|
185
|
+
|
|
186
|
+
export default defineConfig({
|
|
187
|
+
test: {
|
|
188
|
+
include: ['tests/unit/**/*.test.ts'],
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
// vitest.integration.config.ts
|
|
193
|
+
import { defineConfig, mergeConfig } from 'vitest/config';
|
|
194
|
+
import baseConfig from './vitest.config';
|
|
195
|
+
|
|
196
|
+
export default mergeConfig(
|
|
197
|
+
baseConfig,
|
|
198
|
+
defineConfig({
|
|
199
|
+
test: {
|
|
200
|
+
include: ['tests/integration/**/*.test.ts'],
|
|
201
|
+
testTimeout: 30000,
|
|
202
|
+
hookTimeout: 30000,
|
|
203
|
+
},
|
|
204
|
+
})
|
|
205
|
+
);
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Package.json Scripts
|
|
209
|
+
|
|
210
|
+
```json
|
|
211
|
+
{
|
|
212
|
+
"scripts": {
|
|
213
|
+
"test": "vitest run",
|
|
214
|
+
"test:watch": "vitest",
|
|
215
|
+
"test:coverage": "vitest run --coverage",
|
|
216
|
+
"test:ui": "vitest --ui",
|
|
217
|
+
"test:integration": "vitest run --config vitest.integration.config.ts"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## TypeScript Configuration
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
// tsconfig.json
|
|
226
|
+
{
|
|
227
|
+
"compilerOptions": {
|
|
228
|
+
"types": ["vitest/globals"]
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
```typescript
|
|
234
|
+
// Or in vitest.config.ts
|
|
235
|
+
export default defineConfig({
|
|
236
|
+
test: {
|
|
237
|
+
globals: true,
|
|
238
|
+
typecheck: {
|
|
239
|
+
include: ['tests/**/*.test.ts'],
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Reporter Configuration
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
export default defineConfig({
|
|
249
|
+
test: {
|
|
250
|
+
reporters: ['default', 'html', 'json'],
|
|
251
|
+
outputFile: {
|
|
252
|
+
html: './test-results/index.html',
|
|
253
|
+
json: './test-results/results.json',
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## Running Tests
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# Run all tests
|
|
263
|
+
bun run test
|
|
264
|
+
|
|
265
|
+
# Run specific file
|
|
266
|
+
bun run test tests/unit/utils/helper.test.ts
|
|
267
|
+
|
|
268
|
+
# Run with pattern
|
|
269
|
+
bun run test --grep "should validate"
|
|
270
|
+
|
|
271
|
+
# Watch mode
|
|
272
|
+
bun run test:watch
|
|
273
|
+
|
|
274
|
+
# With coverage
|
|
275
|
+
bun run test:coverage
|
|
276
|
+
|
|
277
|
+
# UI mode
|
|
278
|
+
bun run test:ui
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Critical Rules
|
|
282
|
+
|
|
283
|
+
1. **PATH ALIASES** - Match tsconfig.json aliases
|
|
284
|
+
2. **GLOBALS** - Enable for describe, it, expect
|
|
285
|
+
3. **COVERAGE** - Set meaningful thresholds
|
|
286
|
+
4. **SETUP FILES** - Common mocks and cleanup
|
|
287
|
+
5. **ISOLATION** - Reset mocks between tests
|