Skip to content

Commit d5454cc

Browse files
haksungjangclaude
andcommitted
test: VCR 카세트 방식 E2E 테스트 구현 및 녹화 완료
- test-agent-e2e.py: Cassette 클래스 추가 (녹화/재생/이미녹화됨 모드) - 카세트 이름을 fixture 파일 stem 기준으로 변경 (agent명 기준 충돌 해소) - --record 플래그 추가, 카세트 존재 시 SKIP으로 덮어쓰기 방지 - Rate limit 429 오류 시 최대 5회 자동 재시도 (60s 단위 증가) - API 키 없으면 재생 모드로 동작 (FAIL 대신 SKIP) - agent-e2e-test.yml: ANTHROPIC_API_KEY 없이도 CI 통과하도록 수정 - tests/cassettes/: 12개 fixture 카세트 녹화 완료 - .gitignore: venv/ .venv 추가 Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
1 parent a3c39ef commit d5454cc

16 files changed

Lines changed: 2457 additions & 45 deletions

.claude/scripts/test-agent-e2e.py

Lines changed: 180 additions & 41 deletions
Large diffs are not rendered by default.

.github/workflows/agent-e2e-test.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,12 @@ jobs:
3434

3535
- name: Run E2E tests (single agent)
3636
if: ${{ github.event.inputs.agent != '' }}
37-
env:
38-
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
3937
run: |
4038
python3 .claude/scripts/test-agent-e2e.py \
4139
--agent "${{ github.event.inputs.agent }}" \
4240
--verbose
4341
4442
- name: Run E2E tests (all fixtures)
4543
if: ${{ github.event.inputs.agent == '' }}
46-
env:
47-
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
4844
run: |
4945
python3 .claude/scripts/test-agent-e2e.py --all --verbose

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,7 @@ website/node_modules/
4545
!.yarn/versions
4646
docs/.claude/settings.local.json
4747
agents/**/settings.local.json
48+
49+
# python
50+
venv/
51+
.venv

tests/cassettes/.gitkeep

Whitespace-only changes.

tests/cassettes/02-organization-designer.json

Lines changed: 184 additions & 0 deletions
Large diffs are not rendered by default.

tests/cassettes/03-policy-generator.json

Lines changed: 150 additions & 0 deletions
Large diffs are not rendered by default.

tests/cassettes/04-process-designer-branch-A.json

Lines changed: 264 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"turn_count": 8,
3+
"turns": [
4+
{
5+
"content": [
6+
{
7+
"type": "text",
8+
"text": "# 오픈소스 프로세스 문서 생성기에 오신 것을 환영합니다! 🎉\n\n이 agent는 귀사의 **오픈소스 컴플라이언스 프로세스 문서**를 자동으로 생성합니다.\n\n## 📋 생성될 문서 (4~7개)\n\n| 문서 | 설명 | 생성 조건 |\n|------|------|-----------|\n| `usage-approval.md` | 오픈소스 사용 승인 절차 | 항상 생성 |\n| `distribution-checklist.md` | 배포 전 체크리스트 | 항상 생성 |\n| `vulnerability-response.md` | 취약점 대응 절차 | 항상 생성 |\n| `inquiry-response.md` | 외부 문의 대응 절차 | 항상 생성 |\n| `process-diagram.md` | Mermaid 흐름도 | 항상 생성 |\n| `contribution-process.md` | 오픈소스 기여 절차 | Q5 \"예\" 시 |\n| `project-publication-process.md` | 사내 프로젝트 공개 절차 | Q6 \"예\" 시 |\n\n## ✅ 충족되는 ISO 요건\n\n- **ISO/IEC 5230**: 라이선스 의무사항 검토·이행·보관·기여 절차\n- **ISO/IEC 18974**: 취약점 탐지·대응·CVD 절차\n\n---\n\n총 **7개의 질문**에 답변해 주시면 문서 생성을 시작합니다.\n\n그럼 첫 번째 질문을 시작하겠습니다! 👇\n\n---\n\n### ❓ 질문 1 / 7\n\n**현재 사용 중인 CI/CD 도구는 무엇인가요?**\n\n1. GitHub Actions\n2. Jenkins\n3. GitLab CI\n4. 없음\n5. 기타 (직접 입력)"
9+
}
10+
],
11+
"stop_reason": "end_turn"
12+
},
13+
{
14+
"content": [
15+
{
16+
"type": "text",
17+
"text": "감사합니다! ✅ **Jenkins** 로 기록했습니다.\n\n---\n\n### ❓ 질문 2 / 7\n\n**소프트웨어 배포 주기는 어떻게 되나요?**\n\n1. 매일\n2. 주간\n3. 격주 (2주 1회)\n4. 월간\n5. 비정기"
18+
}
19+
],
20+
"stop_reason": "end_turn"
21+
},
22+
{
23+
"content": [
24+
{
25+
"type": "text",
26+
"text": "감사합니다! ✅ **월간** 배포 주기로 기록했습니다.\n\n---\n\n### ❓ 질문 3 / 7\n\n**이슈 트래커를 사용하고 있나요?**\n\n1. GitHub Issues\n2. Jira\n3. 없음\n4. 기타 (직접 입력)"
27+
}
28+
],
29+
"stop_reason": "end_turn"
30+
},
31+
{
32+
"content": [
33+
{
34+
"type": "text",
35+
"text": "감사합니다! ✅ **Jira** 로 기록했습니다.\n\n---\n\n### ❓ 질문 4 / 7\n\n**오픈소스 사용 승인 결재 단계가 필요한가요?**\n\n1. 담당자 단독 결정\n2. 팀장 승인\n3. 위원회 승인"
36+
}
37+
],
38+
"stop_reason": "end_turn"
39+
},
40+
{
41+
"content": [
42+
{
43+
"type": "text",
44+
"text": "감사합니다! ✅ **담당자 단독** 승인으로 기록했습니다.\n\n---\n\n### ❓ 질문 5 / 7\n\n**외부 오픈소스 프로젝트에 기여할 계획이 있나요?**\n\n1. 예 — 기여 절차 문서 생성\n2. 아니오"
45+
}
46+
],
47+
"stop_reason": "end_turn"
48+
},
49+
{
50+
"content": [
51+
{
52+
"type": "text",
53+
"text": "감사합니다! ✅ **기여 절차 문서 생성 제외**로 기록했습니다.\n\n---\n\n### ❓ 질문 6 / 7\n\n**사내 소프트웨어를 오픈소스로 공개할 계획이 있나요?**\n\n1. 예 — 공개 절차 문서 생성\n2. 아니오"
54+
}
55+
],
56+
"stop_reason": "end_turn"
57+
},
58+
{
59+
"content": [
60+
{
61+
"type": "text",
62+
"text": "감사합니다! ✅ **공개 절차 문서 생성 제외**로 기록했습니다.\n\n---\n\n### ❓ 질문 7 / 7\n\n**외부 라이선스·취약점 문의 수신 채널이 준비되어 있나요?**\n\n1. 예 — 이미 운영 중인 이메일 주소 입력 (예: [email protected])\n2. 아직 없음 — 절차 문서 생성 시 채널 설정 포함"
63+
}
64+
],
65+
"stop_reason": "end_turn"
66+
},
67+
{
68+
"content": [
69+
{
70+
"type": "text",
71+
"text": "운영 중인 **이메일 주소**를 입력해 주세요.\n\n(예: `[email protected]`)"
72+
}
73+
],
74+
"stop_reason": "end_turn"
75+
}
76+
]
77+
}

tests/cassettes/04-process-designer-openwave.json

Lines changed: 263 additions & 0 deletions
Large diffs are not rendered by default.

tests/cassettes/05-sbom-analyst.json

Lines changed: 141 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)