test-runner — хук для Claude Code: автозапуск тестов после правок
Хук запускает тесты сразу после того, как Claude изменил файл. Полезен, если не хочется вручную гонять проверки после каждой правки.
npx claude-code-templates@latest --hook testing/test-runnerЧто делает test-runner
Хук висит на событии PostToolUse с матчером Edit. Как только агент отредактировал файл, команда смотрит на расширение и на файлы проекта рядом.
Для .js и .ts нужен package.json — тогда запускается npm test, а если он не сработал, yarn test. Для .py проверяются pytest.ini, setup.cfg или pyproject.toml, и тесты идут через pytest по конкретному файлу. Для .rb достаточно Gemfile, дальше bundle exec rspec. Ошибки глушатся, так что хук не сломает сессию, но и не покажет, почему тесты упали.
Ставить его в проект без тестовой обвязки смысла мало: без package.json, pytest.ini или Gemfile не выполнится ни одна ветка.
Какие задачи решает
- прогнать тесты сразу после правки файла
- поймать регрессию, пока агент ещё держит контекст
- не переключаться в терминал ради
npm test - проверить один изменённый файл, а не весь набор
- поддержать Python и Ruby в одном проекте
Примеры запросов агенту
- Отредактируй
src/api/users.tsи прогони тесты после правки - Поправь
app/models/order.py, хук сам запустит pytest по этому файлу - Обнови
lib/parser.rbи проверь, что rspec проходит
Как установить test-runner
1Через claude-code-templates
npx claude-code-templates@latest --hook testing/test-runner2Вручную: положить файлы
.claude/settings.jsonБлок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json
По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду
Вопросы о test-runner
Как установить test-runner в Claude?
Выполните npx claude-code-templates@latest --hook testing/test-runner, затем проверьте .claude/settings.json — запись хука должна оказаться там.
Что делает test-runner?
После каждого редактирования файла запускает подходящую тестовую команду: npm test или yarn test для JS и TS, pytest для Python, bundle exec rspec для Ruby.
Почему тесты не запускаются?
Хук срабатывает только при наличии признаков проекта: package.json для JS и TS, pytest.ini, setup.cfg или pyproject.toml для Python, Gemfile для Ruby. Без них команда молча завершается.
Исходный текст
test-runner.json · MIT
{
"description": "Automatically run relevant tests after code changes. Detects test files and runs appropriate test commands based on file extensions and project structure.",
"hooks": {
"PostToolUse": [
{
"matcher": "Edit",
"hooks": [
{
"type": "command",
"command": "if [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.js || \"$CLAUDE_TOOL_FILE_PATH\" == *.ts ]] && [[ -f package.json ]]; then npm test 2>/dev/null || yarn test 2>/dev/null || true; elif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.py ]] && [[ -f pytest.ini || -f setup.cfg || -f pyproject.toml ]]; then pytest \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || python -m pytest \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; elif [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.rb ]] && [[ -f Gemfile ]]; then bundle exec rspec \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; fi"
}
]
}
]
}
}
© davila7 · MIT · davila7/claude-code-templates