AI 기반 프론트엔드 테스트 자동화 파트너
@hsna/prompt는 프론트엔드 코드를 분석하여, AI(Claude, Cursor, ChatGPT)에게 테스트 작성을 요청하기 위한 최적화된 프롬프트를 생성해주는 CLI 도구입니다.
복잡한 컨텍스트 설정, 파일 읽기, 포맷팅을 자동화하여 "명령어 입력 → AI에게 붙여넣기" 만으로 테스트 코드를 생산할 수 있습니다.
- 📋 Auto Copy: 생성된 프롬프트를 시스템 클립보드에 즉시 복사합니다.
- 🧠 Context Aware:
project-manifest.yaml설정을 자동으로 읽어 프로젝트 컨벤션을 준수합니다. - 🚀 Zero Config:
npx로 즉시 실행 가능합니다.
설치할 필요 없이 npx로 바로 실행하세요.
# 1. 프로젝트 초기 설정 (최초 1회)
npx @hsna/prompt init
# 2. ATDD 시나리오 생성 요청
npx @hsna/prompt atdd src/app/login/page.tsx💡 경로에 특수문자(괄호, 공백 등)가 포함된 경우 따옴표로 감싸세요:
npx @hsna/prompt atdd "app/(public)/user/login/page.tsx" npx @hsna/prompt plan "src/components/My Component.tsx"
프로젝트의 기술 스택(Framework, Testing Library, Path Alias 등)을 분석하기 위한 프롬프트를 생성합니다.
npx @hsna/prompt init- Output:
project-convention-scanner.md내용 복사 - Action:
- AI에게 붙여넣고, 결과물인
project-manifest.yaml을 루트에 저장하세요. - 자동으로 생성된
project-test-lessons.md파일을 확인하세요. (AI 오답노트)
- AI에게 붙여넣고, 결과물인
구현된 소스 코드를 분석하여 수용 테스트(Acceptance Test) 시나리오 설계를 요청합니다.
수용 테스트란? 코드의 내부 구현 방식보다는 **"사용자가 어떤 행동을 했을 때 무엇이 보여야 하는가(Given-When-Then)"**에 집중하여 비즈니스 요구사항을 검증하는 테스트입니다.
npx @hsna/prompt atdd <source_path>- Example:
npx @hsna/prompt atdd app/login/page.tsx npx @hsna/prompt atdd "app/(auth)/login/page.tsx" # 특수문자 포함 시 따옴표 사용
- Output: 소스 코드 + ATDD 생성 프롬프트 결합 후 복사
작성된 ATDD 시나리오를 바탕으로 테스트 라우팅(Unit vs UI vs E2E) 계획을 수립합니다.
npx @hsna/prompt plan <source_path>- Example:
npx @hsna/prompt plan app/login/page.tsx npx @hsna/prompt plan "app/(public)/user/login/page.tsx" # 특수문자 포함 시 따옴표 사용
- Prerequisite: 같은 경로(또는
project-manifest.yaml의testPaths.dirName설정)에.atdd.md파일이 있어야 합니다. - Output: ATDD 파일 + 소스 코드 + Routing 프롬프트 결합 후 복사
실제 테스트 코드(Spec) 작성을 요청합니다. 설계된 Plan에 따라 UI 테스트와 Unit 테스트를 구분해 요청하세요.
npx @hsna/prompt gen <source_path> [options]Options:
--type ui(Default): React Component, Hook(Integration) 테스트--type unit: 순수 함수, Utils, Store Logic 테스트
Plan 파일 요구사항:
| 타입 | Plan 파일 | 설명 |
|---|---|---|
--type ui |
필수 | ATDD → Plan 워크플로우 필요 |
--type unit |
선택적 | Plan 없이 소스 코드만으로 테스트 생성 가능 |
# UI 테스트 생성 (기본값) - Plan 파일 필요
npx @hsna/prompt gen app/login/page.tsx
npx @hsna/prompt gen "app/(public)/user/login/page.tsx" # 특수문자 포함 시 따옴표 사용
# Unit 테스트 생성 - Plan 파일 선택적
npx @hsna/prompt gen libs/utils/date.ts --type unit # Plan 없이 바로 실행 가능
npx @hsna/prompt gen src/hooks/useAuth.ts --type unit💡 순수 함수/유틸 테스트:
--type unit은 Plan 파일 없이도 소스 코드를 분석하여 테스트 케이스를 자동 도출합니다.
테스트 실패 로그를 분석하여 **"오답노트(Lessons Learned)"**를 갱신합니다. AI가 스스로 실수를 교정하고, 다음 테스트 생성 시 더 높은 정확도를 갖게 합니다.
npx @hsna/prompt learn <source_path>- Process:
- 해당 소스 파일의 테스트(
npm test ...)를 자동으로 실행합니다. - 테스트가 실패하면, 에러 로그와 소스 코드를 분석하는 프롬프트를 생성합니다.
- AI에게 붙여넣으면, AI가
project-test-lessons.md에 교훈을 추가합니다.
- 해당 소스 파일의 테스트(
- Example:
npx @hsna/prompt learn src/app/login/page.tsx
복잡한 UI 컴포넌트는 전체 워크플로우를 따릅니다.
- Code: 기능을 구현합니다. (예:
Login.tsx) - ATDD:
npx @hsna/prompt atdd Login.tsx➡️ AI에게 붙여넣기 ➡️Login.atdd.md저장 - Plan:
npx @hsna/prompt plan Login.tsx➡️ AI에게 붙여넣기 ➡️Login.test-plan.md저장 - Test:
npx @hsna/prompt gen Login.tsx➡️ AI에게 붙여넣기 ➡️Login.test.tsx저장 & 실행 - Learn (If Failed):
npx @hsna/prompt learn Login.tsx➡️ AI에게 붙여넣기 ➡️project-test-lessons.md업데이트 ➡️ Retry Step 4
순수 함수, 유틸, Hook 등은 ATDD/Plan 없이 바로 테스트를 생성할 수 있습니다.
- Code: 유틸 함수를 구현합니다. (예:
formatDate.ts) - Test:
npx @hsna/prompt gen formatDate.ts --type unit➡️ AI에게 붙여넣기 ➡️formatDate.test.ts저장 & 실행 - Learn (If Failed):
npx @hsna/prompt learn formatDate.ts➡️ Retry Step 2
이 프로젝트에 기여하거나 로컬에서 수정하여 사용하고 싶다면 아래 절차를 따르세요.
# 저장소 클론
git clone https://github.com/Rencar-dev/test-prompt-cli.git
cd test-prompt-cli
# 의존성 설치 (npm 권장)
npm install개발 중인 명령어를 로컬에서 테스트해볼 수 있습니다.
# 로컬 링크 연결
npm link
# 아무 경로에서나 실행 가능
prompt atdd ...main브랜치에서 기능 브랜치(feature/new-command) 생성- 작업 완료 후
main으로 Pull Request - Merge 시 GitHub Actions를 통해 NPM Registry(또는 GitHub Packages)로 자동 배포
This project is licensed under the MIT License.