home / skills / jmagly / aiwg / vitest-runner
/agentic/code/frameworks/sdlc-complete/extensions/javascript/skills/vitest-runner
This skill runs and manages Vitest test suites with coverage, reporting, and diagnostics to speed up JS/TS test automation.
npx playbooks add skill jmagly/aiwg --skill vitest-runnerReview the files below or copy the command above to add this skill to your agents.
---
name: vitest-runner
description: Execute JavaScript/TypeScript tests with Vitest, supporting coverage, watch mode, and parallel execution. Use for JS/TS test automation.
tools: Read, Write, Bash
---
# Vitest Runner Skill
## Purpose
Single responsibility: Execute and manage Vitest test suites with proper configuration, coverage reporting, and failure analysis. (BP-4)
## Grounding Checkpoint (Archetype 1 Mitigation)
Before executing, VERIFY:
- [ ] Node.js installed and version appropriate
- [ ] package.json exists with vitest dependency
- [ ] Test files exist (*.test.ts, *.spec.ts)
- [ ] vitest.config.ts or vite.config.ts present (optional)
**DO NOT run tests without verifying node_modules installed.**
## Uncertainty Escalation (Archetype 2 Mitigation)
ASK USER instead of guessing when:
- Multiple test configurations detected
- Coverage threshold unclear
- Watch mode vs single run
- Specific test patterns needed
**NEVER modify test configurations without user approval.**
## Context Scope (Archetype 3 Mitigation)
| Context Type | Included | Excluded |
|--------------|----------|----------|
| RELEVANT | Test files, vitest config, package.json | Application logic |
| PERIPHERAL | Coverage reports, test utilities | Build configs |
| DISTRACTOR | Deployment configs | Other frameworks |
## Workflow Steps
### Step 1: Environment Check (Grounding)
```bash
# Verify Node.js
node --version
npm --version
# Check vitest installed
npx vitest --version || npm install -D vitest
# List test files
find . -name "*.test.ts" -o -name "*.spec.ts" | grep -v node_modules | head -20
```
### Step 2: Discover Tests
```bash
# Show test collection
npx vitest --run --reporter=verbose --passWithNoTests 2>&1 | head -50
# List test files
npx vitest list
```
### Step 3: Execute Tests
**Basic execution:**
```bash
npx vitest run
```
**With coverage:**
```bash
npx vitest run --coverage
```
**Specific file or pattern:**
```bash
npx vitest run src/utils.test.ts
npx vitest run --grep "authentication"
```
**Watch mode:**
```bash
npx vitest --watch
```
**Parallel execution:**
```bash
npx vitest run --pool threads --poolOptions.threads.maxThreads 4
```
### Step 4: Analyze Results
```bash
# Verbose output with failures
npx vitest run --reporter=verbose 2>&1 | tee test_results.txt
# Extract failures
grep -E "^FAIL|AssertionError|Error:" test_results.txt
# Coverage summary
npx vitest run --coverage --coverage.reporter=text-summary
```
## Recovery Protocol (Archetype 4 Mitigation)
On error:
1. **PAUSE** - Capture test output
2. **DIAGNOSE** - Check error type:
- `Cannot find module` → Check imports, tsconfig paths
- `SyntaxError` → Check TypeScript compilation
- `Timeout` → Increase timeout or check async handling
- `ENOENT` → Check file paths, fixtures
3. **ADAPT** - Adjust test selection or configuration
4. **RETRY** - With narrower scope (max 3 attempts)
5. **ESCALATE** - Report failures with context
## Checkpoint Support
State saved to: `.aiwg/working/checkpoints/vitest-runner/`
```
checkpoints/vitest-runner/
├── test_collection.json # Discovered tests
├── test_results.json # Last run results
├── coverage_report.json # Coverage data
└── failure_analysis.md # Failure diagnostics
```
## Common Vitest Options
| Option | Purpose |
|--------|---------|
| `--run` | Single run (no watch) |
| `--watch` | Watch mode |
| `--coverage` | Generate coverage |
| `--reporter=verbose` | Detailed output |
| `--grep "pattern"` | Filter tests |
| `--bail` | Stop on first failure |
| `--update` | Update snapshots |
| `--ui` | Open UI |
## Configuration Templates
**vitest.config.ts:**
```typescript
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
include: ['**/*.{test,spec}.{js,ts}'],
exclude: ['node_modules', 'dist'],
coverage: {
provider: 'v8',
reporter: ['text', 'html', 'json'],
exclude: ['node_modules/', 'test/']
},
globals: true,
environment: 'node'
}
})
```
## References
- Vitest documentation: https://vitest.dev/
- REF-001: Production-Grade Agentic Workflows (BP-4 single responsibility)
- REF-002: LLM Failure Modes (Archetype 1 grounding)
This skill runs and manages JavaScript/TypeScript test suites using Vitest, handling discovery, execution, coverage reporting, watch mode, and parallel runs. It focuses on safe, reproducible test automation with built-in environment checks, failure analysis, and checkpointing. Use it to run targeted tests, collect coverage, and triage failures without modifying project code or configs without permission.
The skill first verifies Node.js, vitest presence, and that test files exist before any run. It discovers tests, supports listing or filtering by pattern, and executes runs with options for coverage, watch mode, and parallel pools. After execution it captures results and coverage, extracts failures, saves checkpoint artifacts, and provides a recovery protocol for common error types.
What should I check before running tests?
Verify Node.js is installed at the correct version, ensure package.json lists vitest, and confirm test files (*.test.ts, *.spec.ts) exist. Do not run tests without node_modules present.
What if tests fail with "Cannot find module" or SyntaxError?
Capture the test output, then check imports and tsconfig path mappings for missing modules. For SyntaxError, validate TypeScript compilation and transpilation settings; adjust timeouts for async-related errors.