Rinda · 앱린다 E2E 전략 · 2026-06-19 · 종합 실측본
Playwright 2026 AI 생태계(Test Agents·MCP)를 send-grid-test 레포에 직접 적용. 코드화 vs MCP 자율 비교 → MCP 자율 테스트 실측 → planner/generator/healer 하네스 구축까지 전 과정을 측정하고, "QA를 완전히 없앨 수 있는가"에 답합니다.
인프라·문서·모킹은 상위권, 그러나 테스트 케이스 설계·실행은 100% 수동이었다.
| 축 | 현황 | 수준 |
|---|---|---|
| 아키텍처 | 헥사고날 6포트 → 단일 어댑터 (디자인 변경 시 1곳 수정) | 🟢 |
| 문서/가이드 | GUIDELINES(345줄)·README·TEST-DESIGN-PLAN | 🟢 |
| 외부 모킹 | page.route SSE/결정론 응답 8~14파일 | 🟢 |
| 트레이스 아티팩트 | retain-on-failure + 정적서버 URL | 🟢 |
| Playwright Agents | planner/generator/healer 보유 | 🟢 |
| 변경→코드 자동생성 | gen-scenarios.mjs JSON → generator spec | 🟡 |
| API 상태 사전세팅 | legal-address.ts 상태세팅 헬퍼 | 🟢 |
| Agent | 역할 |
|---|---|
| Planner | 앱 탐색 → specs/*.md 계획서 |
| Generator | 계획 → 실행 가능 spec 코드 |
| Healer | 실패 재생·진단·패치·반복 |
npx playwright init-agents --loop=claude
LLM이 accessibility tree 스냅샷으로 실제 브라우저를 "보고" 구동 — 스크린샷보다 토큰 효율·결정론.
MS(250K+) 안전 기본값 · playwriter(45K+) shadow DOM 관통·human handoff
| 항목 | MCP 자율 | 코드화 | 비고 |
|---|---|---|---|
| 테스트당 토큰 | ~114K | ~27K | MCP가 accessibility tree 인라인 |
| 50-test 계획 | $4–7 | 1회성 | planner+generator |
| 생성 후 반복 | 매번 토큰 | $0 | CI 무한 무료 |
로그인 → 라우트 자율 수집 → 화면별 accessibility snapshot·스크린샷·콘솔·네트워크·axe 수집 → 시각 분석.
| 지표 | 결과 |
|---|---|
| 속도 | 순회당 78.3초 (편차 <1%), 화면당 13초 |
| 정확도(재현성) | 100% — 13개 이슈 시그니처 3회 전부 동일, flaky 0 |
| 성능 | LCP 415~725ms·TTFB 4~21ms (렌더 양호) / networkidle 미수렴(지속 네트워크) |
| # | 이슈 |
|---|---|
| bug | 대시보드 "Missing: ready" 번역키 raw 노출 (#8896) |
| a11y | button-name(critical 13)·color-contrast(~190)·nested-interactive(11) (#8897) |
| perf | 전 화면 networkidle 미수렴 (#8898) |
email-replies·buyer-search·content "빈 화면 버그" → 실제론 존재하지 않는 경로(정상 404), AI가 잘못 짚음.init-agents 설치 → seed → 최근 sequences 커밋 회귀 → healer 자가수정 → 번인.
| R | 진단 | 수정 | 자율? |
|---|---|---|---|
| 1 | 화면 영어 렌더 | locale: ko-KR | 🟢 |
| 2~3 | dialog가 아닌 alertdialog·비동기 | role·대기 정정 | 🟢 |
| 4 | 모달 영구 차단 = 상태 블로커 | "API seed 필요" 판정 | 🟡 |
| 5~6 | route HIT하나 무효 → apiFetch envelope {data} | patch를 data 레벨에 → 통과 | 🔴 |
legal-address.ts 헬퍼로 해소 → 최종 6 passed·flaky 0.| 단계 | 시간 | 성과 |
|---|---|---|
| 설치 init-agents | ~3s | 9 산출물 |
| seed 통과 | 3.1s | 로컬 인증 검증 |
| healer 6R 수렴 | 번인 다회 | 4 함정 규명 |
| 최종 안정화(workers=2) | 12.5s | 6 passed·flaky 0 |
초기 구축 비용: 높음 (하네스 1회: seed·상태세팅·오버레이)
한계 회귀 비용: ≈ 0 (CI 무료 반복, 12.5s)
손익분기: 변경 잦은 화면일수록 급격히 유리
→ sequences(10커밋/월)는 명백히 ROI(+)
우리 실측이 보여준 사람이 아직 필요한 3개 지점:
| 지점 | 실측 근거 |
|---|---|
| ① 오탐 검수 | MCP 자율이 오탐 2건 생성(없는 경로·오독) → 검증 게이트로만 차단 |
| ② 도메인·내부지식 | healer가 상태 블로커·apiFetch envelope는 자율 해결 못 함(사람이 규명) |
| ③ 프로덕션 영향 판단 | CI green ≠ 안전. 이 PR이 실제 사용자에 주는 영향은 사람 몫 |
제시된 단계가 전부 우리가 실측한 것과 매핑됩니다:
gen-scenarios.mjs 변경 파일 카테고리화| 단계 | 액션 | 상태 |
|---|---|---|
| 1 | init-agents + seed + API 상태세팅 헬퍼 | 완료 |
| 2 | 크리티컬 플로우(sequences 등) 회귀 코드화 확장 | 진행 |
| 3 | 주간 PR → gen-scenarios → planner 자동 트리거 | 다음 |
| 4 | CI 실패 → PR 코멘트 + trace 아티팩트 → healer 루프 | 다음 |
| 5 | MCP 네이티브 자동 실행(playwright-test) + 화면 검수 대시보드 | 목표 |