148 lines
3.8 KiB
Markdown
148 lines
3.8 KiB
Markdown
---
|
|
description: >
|
|
Automatically execute tests after file modifications and invoke /fix command if tests fail using SlashCommand tool.
|
|
Streamlines test-fix cycle with automatic conditional execution. Can be triggered via hooks in settings.json.
|
|
Use after code changes to verify functionality and automatically attempt fixes on failure.
|
|
ファイル変更後に自動的にテストを実行し、失敗時に/fixコマンドを呼び出す。
|
|
allowed-tools: SlashCommand, Bash(npm test:*), Bash(yarn test:*), Bash(pnpm test:*)
|
|
model: inherit
|
|
---
|
|
|
|
# /auto-test - Automatic Test Runner with SlashCommand Integration
|
|
|
|
## Purpose
|
|
|
|
Systematically execute tests after file modifications and explicitly invoke `/fix` command when issues are detected through automated workflow orchestration.
|
|
|
|
## Workflow Instructions
|
|
|
|
Follow this sequence when invoked:
|
|
|
|
### Step 1: Execute Tests
|
|
|
|
Run the project's test command:
|
|
|
|
```bash
|
|
# Auto-detect and run tests
|
|
if [ -f "package.json" ] && grep -q "\"test\":" package.json; then
|
|
npm test || yarn test || pnpm test
|
|
elif [ -f "pubspec.yaml" ]; then
|
|
flutter test
|
|
elif [ -f "Makefile" ] && grep -q "test:" Makefile; then
|
|
make test
|
|
else
|
|
echo "No test command found"
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
### Step 2: Analyze Test Results
|
|
|
|
After test execution:
|
|
|
|
- Parse the output for test failures
|
|
- Count failed tests
|
|
- Extract error messages and stack traces
|
|
|
|
### Step 3: Invoke /fix if Tests Fail
|
|
|
|
**IMPORTANT**: If any tests fail, you MUST use the SlashCommand tool to invoke `/fix`:
|
|
|
|
1. Prepare context for /fix:
|
|
- Failed test names
|
|
- Error messages
|
|
- Relevant file paths
|
|
|
|
2. **Use SlashCommand tool with this exact format**:
|
|
|
|
```markdown
|
|
Use the SlashCommand tool to execute: /fix
|
|
|
|
Context to pass to /fix:
|
|
- Failed tests: [list test names]
|
|
- Error messages: [specific error details]
|
|
- Affected files: [file paths from stack traces]
|
|
```
|
|
|
|
3. Wait for /fix command to complete
|
|
|
|
4. Re-run tests to verify fixes
|
|
|
|
## Example Execution
|
|
|
|
```markdown
|
|
User: /auto-test
|
|
|
|
Claude: Running tests...
|
|
[Executes: npm test]
|
|
|
|
Result: 3 tests failed out of 15 total
|
|
|
|
Claude: Tests failed. Using SlashCommand tool to invoke /fix...
|
|
[Uses SlashCommand tool to call: /fix]
|
|
|
|
Context passed to /fix:
|
|
- Failed tests: auth.test.ts::login, auth.test.ts::logout, user.test.ts::profile
|
|
- Error messages:
|
|
- Expected 200, got 401 in auth.test.ts:42
|
|
- Undefined user object in user.test.ts:28
|
|
- Affected files: src/auth.ts, src/user.ts
|
|
|
|
[/fix command executes and applies fixes]
|
|
|
|
Claude: Re-running tests...
|
|
[Executes: npm test]
|
|
|
|
Result: All 15 tests passed ✓
|
|
```
|
|
|
|
## Requirements for SlashCommand Tool
|
|
|
|
- `/fix` command must be available in `.claude/commands/`
|
|
- `/fix` must have proper `allowed-tools` configured
|
|
- This command requires `SlashCommand` to be in the allow list in settings.json permissions
|
|
|
|
## Usage Patterns
|
|
|
|
```bash
|
|
# Manual execution
|
|
/auto-test
|
|
|
|
# Automatic trigger after file modifications (via hooks)
|
|
# Explicitly enable by configuring settings.json
|
|
```
|
|
|
|
## Hook Integration Configuration
|
|
|
|
Explicitly enable automatic execution by adding to settings.json:
|
|
|
|
```json
|
|
{
|
|
"hooks": {
|
|
"PostToolUse": [
|
|
{
|
|
"matcher": "Write|Edit|MultiEdit",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "claude --command '/auto-test'"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
## Key Benefits
|
|
|
|
- 🚀 **Complete Automation**: Eliminates manual test execution after file changes
|
|
- 🔄 **Continuous Execution**: Automatically attempts fixes upon test failures
|
|
- 📊 **Maximized Efficiency**: Accelerates development cycle significantly
|
|
|
|
## Critical Notes
|
|
|
|
- Strictly requires SlashCommand tool availability
|
|
- Test commands are intelligently auto-detected based on environment
|
|
- `/fix` command is explicitly invoked when corrections are necessary
|