1- # Cursor AI 도구 모음
1+ # Cursor AI 테스트 생성 도구
22
3- 이 디렉토리는 Cursor AI를 활용한 개발 도구들을 모아놓은 곳입니다.
3+ 이 디렉토리는 Cursor AI를 활용하여 ** Githru VSCode Extension ** 프로젝트의 테스트 코드를 자동 생성하는 도구들을 모아놓은 곳입니다.
44
5- ## 📁 구조
5+ ## 📁 프로젝트 구조
66
77```
8- .cursor/
9- ├── rules/ # Cursor 룰 파일들
10- │ └── testing.mdc # 테스트 관련 룰
11- ├── templates/ # AI 프롬프트 템플릿들
12- │ ├── test.playwright.md # E2E 테스트 생성 템플릿
13- │ ├── test.unit.md # Unit 테스트 생성 템플릿
14- │ ├── test.integration.md # 통합 테스트 생성 템플릿
15- │ └── README.md # 이 파일
16- └── generated-tests/ # 템플릿으로 생성된 테스트들
17- ├── e2e/ # E2E 테스트
18- ├── unit/ # 단위 테스트
19- └── integration/ # 통합 테스트
8+ githru-vscode-ext/
9+ ├── .cursor/ # Cursor AI 도구들
10+ │ ├── rules/
11+ │ │ └── testing.mdc # 테스트 작성 규칙
12+ │ └── templates/
13+ │ ├── test.playwright.md # E2E 테스트 템플릿
14+ │ └── README.md # 이 파일
15+ ├── packages/
16+ │ ├── view/ # React 웹뷰 패키지
17+ │ │ ├── src/
18+ │ │ │ ├── components/ # React 컴포넌트들
19+ │ │ │ ├── store/ # Zustand 상태 관리
20+ │ │ │ └── fake-assets/ # 테스트용 모킹 데이터
21+ │ │ └── tests/ # 실제 테스트 파일들
22+ │ │ ├── pr-commit-detail.e2e.spec.ts
23+ │ │ ├── temporal-filter.e2e.spec.ts
24+ │ │ └── fakeAsset.ts # 테스트 헬퍼 함수들
25+ │ ├── analysis-engine/ # 분석 엔진 패키지
26+ │ └── vscode/ # VSCode 확장 패키지
2027```
2128
22- ## 🚀 사용 방법
29+ ## 🚀 빠른 시작 (Quick Start)
2330
24- ### 1. E2E 테스트 생성
31+ ### 1. E2E 테스트 생성 (Playwright)
2532
26- 1 . 템플릿 파일을 열어서 테스트 시나리오를 작성합니다
27- 2 . Cursor Agent (⌃+I)에 붙여넣습니다
28- 3 . AI가 자동으로 ` .cursor/generated-tests/e2e/ ` 디렉토리에 파일을 생성하고 저장합니다
33+ ** 템플릿 파일** : ` .cursor/templates/test.playwright.md `
2934
30- ### 2. Unit 테스트 생성
35+ 1 . ** 템플릿 열기** : ` .cursor/templates/test.playwright.md ` 파일을 엽니다
36+ 2 . ** 시나리오 작성** : 아래 예시를 참고해 테스트 시나리오를 작성합니다
37+ 3 . ** AI 실행** : ` ⌃+I ` (Cursor Agent)를 누르고 템플릿을 붙여넣습니다
38+ 4 . ** 파일 생성** : AI가 자동으로 ` packages/view/tests/ ` 에 테스트 파일을 생성합니다
3139
32- ** 템플릿 파일 ** : ` templates/test.unit.md `
40+ ## 📝 사용 예시
3341
34- 1 . 템플릿 파일을 열어서 테스트 시나리오를 작성합니다
35- 2 . Cursor Agent (⌃+I)에 붙여넣습니다
36- 3 . AI가 자동으로 ` .cursor/generated-tests/unit/ ` 디렉토리에 파일을 생성하고 저장합니다
37-
38- ### 3. 통합 테스트 생성
39-
40- ** 템플릿 파일** : ` templates/test.integration.md `
41-
42- 1 . 템플릿 파일을 열어서 테스트 시나리오를 작성합니다
43- 2 . Cursor Agent (⌃+I)에 붙여넣습니다
44- 3 . AI가 자동으로 ` .cursor/generated-tests/integration/ ` 디렉토리에 파일을 생성하고 저장합니다
45-
46- ** 예시** :
42+ ### E2E 테스트 예시 (TemporalFilter)
4743
4844``` markdown
4945Context:
@@ -61,132 +57,83 @@ Constraints:
6157- VSCode webview environment
6258```
6359
64- ** BranchSelector 예시** :
65-
66- ``` markdown
67- Context:
60+ ** 결과** : ` packages/view/tests/temporal-filter.e2e.spec.ts ` 파일 생성
6861
69- - 테스트 대상: BranchSelector 컴포넌트
70- - 시나리오:
71- - [ ] 브랜치 목록이 로드되어야 한다
72- - [ ] 브랜치 선택 시 데이터가 갱신되어야 한다
73- - [ ] 로딩 중에는 스피너가 표시되어야 한다
74-
75- Constraints:
76-
77- - Zustand state only (no other state libs)
78- - Mock external dependencies (GitHub API, file system)
79- - VSCode webview environment
80- ```
62+ ## 🔧 테스트 룰 및 규칙
8163
82- ### 2. 테스트 룰 적용
64+ ### 자동 적용되는 룰
8365
84- ** 룰 파일** : ` rules/testing.mdc `
66+ ** 룰 파일** : ` .cursor/ rules/testing.mdc`
8567
8668- Cursor가 자동으로 이 룰을 적용하여 일관된 테스트 코드를 생성합니다
87- - Jest + RTL + Playwright 패턴을 따릅니다
88- - VSCode webview 환경에 최적화되어 있습니다
89-
90- ## 📋 생성된 테스트 관리
69+ - ** Jest + RTL + Playwright** 패턴을 따릅니다
70+ - ** VSCode webview 환경** 에 최적화되어 있습니다
71+ - ** Zustand 상태 관리** 와 ** 외부 의존성 모킹** 을 자동으로 처리합니다
9172
9273### 파일 명명 규칙
9374
94- - E2E 테스트: ` {component-name}.e2e.spec.ts `
95- - 단위 테스트: ` {component-name}.test.tsx `
96- - 통합 테스트: ` {component-name}.spec.tsx `
75+ - ** E2E 테스트** : ` {component-name}.e2e.spec.ts `
9776
98- ### 디렉토리 구조
77+ ### 실제 테스트 파일 위치
9978
10079```
101- packages/view/tests/ # 실제 테스트 파일 위치
102- ├── branch-selector.e2e.spec.ts # ✅ 완료된 BranchSelector E2E 테스트
103- ├── temporal-filter-working.e2e.spec.ts # ✅ 완료된 TemporalFilter E2E 테스트
104- └── branch-selector.e2e.spec copy.ts # 기존 테스트 백업
105-
106- .cursor/generated-tests/ # 템플릿으로 생성된 테스트들 (참고용)
107- ├── e2e/ # E2E 테스트들
108- │ ├── temporal-filter.e2e.spec.ts
109- │ └── branch-selector.e2e.spec.ts
110- ├── unit/ # 단위 테스트들
111- │ ├── statistics.test.tsx
112- │ └── theme-selector.test.tsx
113- └── integration/ # 통합 테스트들
114- └── webview-communication.spec.ts
80+ packages/view/tests/
11581```
11682
117- ### ✅ 완료된 테스트 현황
118-
119- #### BranchSelector E2E 테스트 (` branch-selector.e2e.spec.ts ` )
120-
121- - ** 테스트 시나리오** : 5개 (4개 통과, 1개 스킵)
122- 1 . ✅ 브랜치 목록이 로드되어야 한다
123- 2 . ✅ 브랜치 선택 시 데이터가 갱신되어야 한다
124- 3 . ✅ 로딩 중에는 스피너가 표시되어야 한다
125- 4 . ✅ 브랜치 선택 시 IDE 메시지가 전송되어야 한다
126- 5 . ⏭️ 브랜치 목록이 비어있을 때 적절한 처리가 되어야 한다 (스킵)
127-
128- #### TemporalFilter E2E 테스트 (` temporal-filter-working.e2e.spec.ts ` )
129-
130- - ** 테스트 시나리오** : 2개 (모두 통과)
131- 1 . ✅ 기간 브러시 필터링이 정상 작동해야 한다
132- 2 . ✅ 브러시 필터링 후 통계가 갱신되어야 한다
133-
134- ## 🔧 커스터마이징
135-
136- ### 새로운 템플릿 추가
137-
138- 1 . ` templates/ ` 디렉토리에 새 ` .md ` 파일 생성
139- 2 . 프롬프트 템플릿 작성
140- 3 . 이 README에 사용법 추가
141-
142- ### 룰 수정
143-
144- 1 . ` rules/testing.mdc ` 파일 편집
145- 2 . 프로젝트 요구사항에 맞게 가이드라인 조정
146-
147- ## 📚 참고 자료
148-
149- - [ Cursor 공식 문서] ( https://cursor.sh/docs )
150- - [ Playwright 테스트 가이드] ( https://playwright.dev/docs/intro )
151- - [ Jest + RTL 가이드] ( https://testing-library.com/docs/react-testing-library/intro/ )
152- - [ Zustand 테스트 패턴] ( https://github.com/pmndrs/zustand/blob/main/docs/guides/testing.md )
153-
15483## 🎯 테스트 실행 방법
15584
15685### E2E 테스트 실행
15786
15887``` bash
159- # 특정 컴포넌트 테스트 실행
160- npm run test:e2e -- --grep " BranchSelector "
88+ # packages/view 디렉토리로 이동
89+ cd packages/view
16190
16291# 모든 E2E 테스트 실행
16392npm run test:e2e
16493
165- # 테스트 리포트 확인
166- npx playwright show-report
94+ # 특정 테스트 실행
95+ npm run test:e2e -- tests/pr-commit-detail.e2e.spec.ts
96+ npm run test:e2e -- tests/temporal-filter.e2e.spec.ts
97+
98+ # 특정 브라우저에서 실행
99+ npm run test:e2e -- --project=chromium
100+ npm run test:e2e -- --project=webkit
167101```
168102
169103### 테스트 결과 확인
170104
171105``` bash
172- # 마지막 실행 결과 확인
106+ # 테스트 리포트 확인
173107npx playwright show-report
174108
175- # 특정 브라우저에서 테스트 실행
176- npx playwright test --project=chromium
109+ # 헤드리스 모드로 실행
110+ npm run test:e2e -- --headed
111+
112+ # 디버그 모드로 실행
113+ npm run test:e2e -- --debug
177114```
178115
179- ## ⚠️ 주의사항
116+ ## 🔧 커스터마이징
117+
118+ ### 새로운 템플릿 추가
119+
120+ 1 . ` .cursor/templates/ ` 디렉토리에 새 ` .md ` 파일 생성
121+ 2 . 프롬프트 템플릿 작성
122+ 3 . 이 README에 사용법 추가
180123
181- - 생성된 테스트는 반드시 실제 실행해보고 검증하세요
182- - 프로젝트별 특성에 맞게 셀렉터와 로직을 조정하세요
183- - VSCode webview 환경의 제약사항을 고려하세요
184- - 로딩 상태가 너무 빠를 경우 스피너 테스트가 스킵될 수 있습니다
185- - 브랜치 목록이 1개만 있을 경우 선택 테스트가 스킵됩니다
124+ ** 현재 사용 가능한 템플릿** :
186125
187- ## 🚀 다음 단계
126+ - ` test.playwright.md ` : E2E 테스트 생성용
127+
128+ ### 룰 수정
129+
130+ 1 . ` .cursor/rules/testing.mdc ` 파일 편집
131+ 2 . 프로젝트 요구사항에 맞게 가이드라인 조정
132+
133+ ## ⚠️ 주의사항
188134
189- 1 . ** Unit 테스트 추가** : BranchSelector 컴포넌트의 개별 함수들에 대한 단위 테스트
190- 2 . ** Integration 테스트** : VSCode webview와의 통신 테스트
191- 3 . ** 다른 컴포넌트 테스트** : Statistics, ThemeSelector 등 추가 컴포넌트 테스트
192- 4 . ** CI/CD 통합** : GitHub Actions에서 자동 테스트 실행 설정
135+ - ** 생성된 테스트는 반드시 실제 실행해보고 검증하세요**
136+ - ** VSCode webview 환경의 제약사항** 을 고려하세요
137+ - ** Zustand 상태 관리** 와 ** 외부 의존성 모킹** 이 자동으로 적용됩니다
138+ - ** 로딩 상태가 너무 빠를 경우** 스피너 테스트가 스킵될 수 있습니다
139+ - ** 실제 DOM 구조** 에 맞춰 셀렉터가 자동으로 조정됩니다
0 commit comments