2026 OpenClaw 실전:
HTML 리포터·첨부·stderr 한 PR 요약
대상 프론트 CI 유지자. JUnit·trace 게이트는 수치엔 강하지만 UI·용량 증거는 약합니다. HTML 트리·첨부 바이트 상한·stderr 지문을 Node 24와 OpenClaw 게이트웨이로 한 코멘트에 묶습니다. 비교 표·여섯 단계·FAQ로 재현합니다. JUnit HowTo·블로그·홈.
00 통증
리포트 팽창
스크린과 trace가 쌓이면 아티팩트가 기하급수로 커져 업로드 시간과 비용이 흔들립니다.
HTML 병합 경쟁
병렬 샤드가 같은 playwright-report를 덮으면 HTML 병합이 비결정적으로 깨집니다.
토큰 과다
요약 스크립트가 광범위 PAT를 들고 있으면 감사와 롤백 비용이 큽니다.
01 게이트 비교: JUnit·trace vs HTML·첨부
JUnit·trace 파이프라인은 회귀 속도에 강하고 HTML·첨부 축은 시각 증거와 용량 계약에 강합니다. 한 저장소에 공존시키되 PR 코멘트 템플릿은 축별로 나눕니다.
| 축 | JUnit·trace 게이트 | HTML·첨부·stderr 게이트 |
|---|---|---|
| 핵심 산출물 | results.xml·trace-index JSON | playwright-report 트리·스크린 zip |
| 실패 신호 | 케이스 카운트·스택 상단 | 첨부 초과 플래그·stderr 지문 변화 |
| 용량 통제 | 로그 압축 위주 | 바이트 상한·폴백 썸네일만 유지 |
| 적합 팀 | 단위·API 회귀 우선 | UI·접근성·시각 회귀 우선 |
02 산출물 디렉터리 규약
저장소 루트에 playwright-report/·blob-report/·test-results/를 고정하고 샤드는 접미사 폴더로 분리합니다. 원격 Mac 임대 러너도 동일 상대 경로를 써 로컬과 로그를 맞춥니다. HTML 엔트리 존재 검사로 빈 병합을 차단합니다.
03 임계 파라미터
zip 합산 바이트와 스크린 장수 상한을 환경 변수로 노출합니다. 초과 시 전체 HTML 대신 요약 표와 실패 스위트 링크만 남기고 바이너리는 드롭합니다. stderr는 마지막 이백 줄을 타임스탬프 제거 후 해시합니다.
04 병합 템플릿
OpenClaw 게이트웨이에 넘길 Markdown은 섹션 순서를 고정합니다. 요약·임계 위반 표·index 상대 링크·stderr 지문·재실행 명령을 같은 순서로 채웁니다. 머리에 HTML 멱등 마커를 두어 중복 코멘트를 막습니다.
05 권한과 토큰 최소화
PR 코멘트만 필요하면 토큰 스코프는 이슈 쓰기와 단일 저장소로 줄입니다. OIDC 단기 토큰을 우선하고 평문 비밀은 러너 시크릿에만 둡니다. Node 24 실행 파일 경로를 이미지에 고정합니다.
06 재현 단계
- 런타임: 맥 러너
node24·코어팩 고정 - 머지: 샤드 폴더 후
npx playwright merge-reports단일 HTML - 임계: zip·스크린 초과 시 요약 모드
- stderr: 타임스탬프 제거 꼬리 해시 한 줄
- 게이트웨이: OpenClaw HTTP 또는 CLI 래퍼로 템플릿 채워 PR 게시
- 검증: 동일 커밋 재실행 시 코멘트 한 개인지 확인
07 FAQ: HTML 병합·임계
Q 빈 병합 A 머지 잡 단일·존재 검사 Q 임계 후 증거 A 실패만 썸네일·로그 링크 Q JUnit 글 A XML은 HowTo HTML·바이트는 본문