Context
-
Project files: !find . -maxdepth 1 ( -name 'pyproject.toml' -o -name 'package.json' -o -name 'Cargo.toml' -o -name 'go.mod' )
-
Playwright config: !find . -maxdepth 1 -name 'playwright.config.*'
-
Vitest config: !find . -maxdepth 1 ( -name 'vitest.config.' -o -name 'vite.config.' )
-
Jest config: !find . -maxdepth 1 -name 'jest.config.*'
-
Pytest config: !find . -maxdepth 1 ( -name pyproject.toml -o -name setup.cfg ) -exec grep -l 'pytest' {} +
-
Package.json exists: !find . -maxdepth 1 -name 'package.json' -type f
Parameters
-
$1 (required): Test file path or pattern (e.g., login.spec.ts , tests/e2e/auth.spec.ts )
-
--serial : Force sequential execution with single worker (useful for WebGL, database tests)
-
--debug : Run in debug/headed mode for visual debugging
Your task
Run a single test file in fail-fast mode for rapid development iteration. Stop immediately on first failure to minimize feedback time.
- Detect test framework and construct command
Playwright (if playwright.config.* exists):
Standard fail-fast
bunx playwright test "$FILE" --max-failures=1 --reporter=line
With --serial (WebGL, shared state)
bunx playwright test "$FILE" --max-failures=1 --workers=1 --reporter=line
With --debug
bunx playwright test "$FILE" --max-failures=1 --headed --debug
Vitest (if vitest.config.* or vite.config.* exists):
Standard fail-fast
bunx vitest run "$FILE" --bail=1 --reporter=dot
With --serial
bunx vitest run "$FILE" --bail=1 --pool=forks --poolOptions.threads.singleThread --reporter=dot
With --debug
bunx vitest run "$FILE" --bail=1 --inspect-brk
Jest (if jest.config.* exists):
Standard fail-fast
bunx jest "$FILE" --bail --silent
With --serial
bunx jest "$FILE" --bail --runInBand --silent
With --debug
bunx jest "$FILE" --bail --runInBand
pytest (Python projects):
Standard fail-fast
python -m pytest "$FILE" -x -v --tb=short
With --serial (already serial by default)
python -m pytest "$FILE" -x -v --tb=short
With --debug
python -m pytest "$FILE" -x -v --tb=long -s
Cargo test (Rust projects):
Standard fail-fast
cargo test --test "$FILE" -- --test-threads=1
With --debug
cargo test --test "$FILE" -- --test-threads=1 --nocapture
Go test:
Standard fail-fast
go test -v -failfast "$FILE"
With --debug
go test -v -failfast "$FILE" -count=1
- Execute the test
Run the constructed command. Capture and display output.
- Analyze results
If the test passes:
Duration: Xs
Ready for next iteration or file.
If the test fails:
Duration: Xs
First failure: Test: [test name] Error: [brief error message] Location: [file:line]
Quick actions:
- Fix the issue and re-run: /test:focus [same file]
- Debug visually: /test:focus file --debug
- See full output: /test:run file
- Provide rerun command
Always show the exact command to rerun:
Rerun: /test:focus $FILE
Time savings context
Focused testing dramatically reduces feedback time:
Approach Typical Duration Use Case
/test:focus
2-30 seconds Iterating on single file
/test:quick
30 seconds Unit tests after changes
/test:full
5-30 minutes Before commit/PR
Agentic optimizations
Context Flags
Playwright fast --max-failures=1 --reporter=line
Playwright WebGL --max-failures=1 --workers=1 --reporter=line
Vitest fast --bail=1 --reporter=dot
Jest fast --bail --silent
pytest fast -x -v --tb=short
Error handling
-
If file not found: List similar test files with glob and suggest corrections
-
If framework not detected: Show available package.json scripts containing "test"
-
If test times out: Suggest --serial flag or increasing timeout