Rinda · 앱린다 E2E 하네스 검증 · 2026-06-19

Playwright Agents 하네스 플로우 — 실측 리포트

네이버페이 발표 "AI 에이전트용 Playwright E2E 하네스"를 send-grid-test 레포에 실제 적용. planner→generator→healer 전 사이클을 로컬에서 돌린 단계별 시간·성과와 효과·장단점.

6/6
최종 passed · flaky 0
6R
healer 자가수정 라운드
12.5s
안정화 번인(repeat3)
4종
자동 규명한 함정

01 단계별 시간 · 성과

실측(Playwright 실행 시간) + LLM 턴. 측정 합계 ≈ 2분, 수렴까지 healer 6라운드.

#단계시간결과·성과
1설치 init-agents~3splanner/generator/healer + 프롬프트4 + .mcp.json + seed (9산출물)
2seed 작성→통과3.1s로컬 fresh 인증 + /sequences 진입 PASS
3planner 계획서LLM 1턴specs/sequences-regression.md (시나리오 2종)
4generator specLLM 1턴campaign-list-regression.spec.ts 생성
5healer R1 locale번인 실패영어 렌더 진단 → locale: ko-KR
6healer R2~3 role·타이밍번인 2회 실패dialogalertdialog, 비동기 대기 강화
7healer R4 상태블로커 판정모달 영구 게이트 = "API seed 필요" 결론
8가드 재정의 번인5.4s3 passed + 3 skipped(fixme) PASS
9healer R5 API seed stub55.2sroute HIT하나 patch 무효 → 로그 추적
10healer R6 envelope 발견4.4sapiFetch {data} 구조 독해 → patch 위치 교정 PASS
11전체 번인 repeat331.7s3 passed +3 flaky (부하 타이밍)
12안정화 workers=212.5s6 passed · flaky 0 GREEN
성과: 변경 잦은 sequences 화면(최근 10커밋)에 주소 미등록(가드)·등록(목록) 양쪽 상태를 결정론적으로 검증하는 회귀 가드 확보 + 갭#2(API 상태 세팅) 해소. 산출 = 파일 5개 · 회귀 2개 · 재현성 6/6.

02 healer 6라운드 — "수정까지" 실증

단순 셀렉터 교정이 아니라 trace·aria·네트워크 로그·앱 소스를 읽어 원인 규명.

R진단 근거수정
1화면 영어 렌더locale: ko-KR 고정
2모달이 dialog 아닌 alertdialogrole 정정
3모달 비동기 늦게 등장대기 강화
4force·Escape에도 안 닫힘 = 상태 블로커"API seed 필요" 판정 (발표 교훈 실증)
5API seed stub인데 모달 잔존 → 로그 심어 추적route HIT하나 patch 무효 확인
6apiFetchenvelope {data} 벗김 (client.ts:153)patch를 data 레벨에 적용 → 통과
R5~6이 핵심: 로그를 심어 실제 호출을 추적하고 앱의 apiFetch 소스를 읽어 envelope 구조를 규명. 발표의 "트레이스·네트워크를 개발자도구처럼 디버깅"을 그대로 수행.

03 효과 · 장단점

지표
자동 규명한 함정4종 — locale · alertdialog role · 상태 블로커 · envelope 구조
1회 구축 후 반복 실행CI에서 LLM 비용 $0, 12.5s/회 결정론
재사용 자산legal-address.ts · overlays · seed → 타 테스트 즉시 재사용
최종 재현성6/6 passed · flaky 0

👍 장점

  1. 결정론적 센서 — 한 번 GREEN이면 CI 무한 무료·빠름·안정 (LLM 채점 대체)
  2. healer 자가수정 — trace 기반 6함정 순차 해결, 앱 소스까지 독해
  3. 테스트 = 살아있는 명세 — 가드 모달·목록 둘 다 스펙 역할
  4. 상태 세팅으로 독립성 — API seed로 주소 등록/미등록 자유 전환

👎 단점·한계

  1. 초기 하네스 선투자 — seed·오버레이·상태세팅 헬퍼 먼저 구축
  2. 수렴까지 반복 — healer 6R. 상태·envelope는 한 번에 못 풀고 소스 독해 필요
  3. MCP 완전자동은 세션 재시작 필요 — 이번엔 지침 수동 수행
  4. flaky 튜닝 — 로컬 부하로 workers/timeout 조정 필요
  5. 데이터 의존 깊이 — 캠페인 상세(#8876 KPI)는 fixme 미커버

04 ROI 결론

초기 구축 비용:  높음   (하네스 1회)
한계 회귀 비용:  ≈ 0    (CI 무료 반복, 12.5s)
손익분기:        변경 잦은 화면일수록 급격히 유리
                 → sequences(10커밋/월)는 명백히 ROI(+)
한 줄 요약: 검증이 병목인 AI 코딩 시대에 이 플로우는 "한 번 비싸게 깔고 무한히 싸게 검증"하는 구조. healer가 locale·role·타이밍은 자율 해결했고, 상태 블로커·envelope 같은 앱 내부 지식에서만 사람 개입이 필요 — 정확히 "사고는 위임해도 이해는 위임 못 한다"의 경계가 실측으로 드러남.