편집 후 테스트 실행기
Post-Tool입문Hook 타입: post-tool-use
편집 후 테스트 실행기는 모든 파일 쓰기 또는 편집 작업 후에 트리거됩니다. 일반적인 명명 규칙(*.test.ts, *.spec.ts, __tests__/*)을 사용하여 수정된 소스 파일에 해당하는 테스트 파일을 감지하고 해당 테스트만 실행합니다. 매칭되는 테스트 파일이 없으면 조용히 건너뜁니다. 이를 통해 편집이 기존 기능을 손상시키는지 즉시 피드백을 받아 회귀가 누적되기 전에 감지할 수 있습니다.
테스팅JestVitest회귀 테스트자동화
Hook 코드
#!/bin/bash
# Post-Edit Test Runner Hook
# Runs related tests after file edits
# Only trigger on file write/edit tools
if [[ "$TOOL_NAME" != "Edit" ]] && [[ "$TOOL_NAME" != "Write" ]]; then
exit 0
fi
FILE_PATH=$(echo "$TOOL_INPUT" | jq -r '.file_path // .path // empty')
if [ -z "$FILE_PATH" ]; then
exit 0
fi
# Skip non-source files
if ! echo "$FILE_PATH" | grep -qE '\.(ts|tsx|js|jsx|py)$'; then
exit 0
fi
# Skip test files themselves
if echo "$FILE_PATH" | grep -qE '\.(test|spec)\.(ts|tsx|js|jsx)$'; then
exit 0
fi
BASE_NAME=$(basename "$FILE_PATH" | sed 's/\.[^.]*$//')
DIR_NAME=$(dirname "$FILE_PATH")
# Find matching test files
TEST_FILE=""
for pattern in "$DIR_NAME/$BASE_NAME.test.ts" "$DIR_NAME/$BASE_NAME.spec.ts" "$DIR_NAME/__tests__/$BASE_NAME.test.ts"; do
if [ -f "$pattern" ]; then
TEST_FILE="$pattern"
break
fi
done
if [ -z "$TEST_FILE" ]; then
echo "No matching test file found for $FILE_PATH, skipping."
exit 0
fi
echo "Running tests: $TEST_FILE"
npx vitest run "$TEST_FILE" --reporter=verbose 2>&1 | tail -20
exit 0
이 Hook을 Claude Code 설정 또는 .claude/settings.json에 추가하면 활성화됩니다.
실행 미리보기
편집 후 테스트 실행기
편집 후 테스트 실행기에 대해
Claude Code Hooks는 Claude 작업 중 특정 이벤트에 반응하여 커스텀 셸 명령을 자동으로 실행합니다. 편집 후 테스트 실행기은(는) 입문 수준의 Post-Tool Hook으로, 개발 워크플로우의 핵심 시점에서 작업을 자동화하여 수동 단계를 줄이고 팀 전체의 일관성을 유지합니다.