10건 중 1건만 하고 '다 했다'고 답하는 일이 생겨요. 응답 전에 개수를 확인하는 단계를 둬요.
16:17
루브릭을 주고 반복
평가 기준을 주고 그 기준을 통과할 때까지 돌리게 해요.
25:28
의도와 다른 흔적 찾기
평가는 결과가 의도와 다르게 흐른 지점을 찾는 단계예요.
후보 5개를 요청했으면 5개가 저장됐는지를 코드가 세요. 말이 아니라 개수로 확인해요.
5주차 · 검증: 테스트·기준선·실제 화면 — 16
이번 주의 한 문장
'됐어요'는 증거와 함께 올 때만 '됐어요'예요.
테스트 결과, 기준선 비교, 화면 캡처. 셋 중 무엇이 있는지 먼저 물어요.
5주차 · 검증: 테스트·기준선·실제 화면 — 17
현장에서 있었던 일
테스트는 다 통과했는데, 휴대폰에선 누를 수 없었어요
상황
한 서비스의 결과 고르기 화면은 기능 테스트가 모두 통과했고, 에이전트도 '완료'라고 보고했어요.
무슨 일이
휴대폰 폭에서 확인 버튼이 화면 밖으로 밀려 사용자가 고를 수 없었어요. 테스트는 버튼이 '있는지'만 봤어요.
바꾼 것
완료 조건에 '390px 캡처를 보고서에 첨부'를 넣고, E2E가 버튼을 실제로 누르게 바꿨어요.
5주차 · 검증: 테스트·기준선·실제 화면 — 18
강사 시연 30분
콘텐츠 목록과 상태를 테스트부터 만들어요
볼 것: 먼저 실패하는 테스트, '완료' 보고와 실제의 차이, 캡처에서만 보이는 문제.
01
사람
전이 표
상태 전이 표를 먼저 쓰고 사람이 검토
02
AI
테스트 먼저
Vitest 테스트가 실패하는 걸 확인
03
AI
구현
테스트가 초록이 될 때까지 돌려요
04
코드
E2E·캡처
고르기까지 클릭, 390·1280px 캡처
05
코드
기준선
main 워크트리에서 같은 테스트
5주차 · 검증: 테스트·기준선·실제 화면 — 19
시연 프롬프트
강사가 실제로 치는 요청
# 1) 상태 전이 표부터 콘텐츠 상태 5개(만드는 중, 골라 주세요, 확인해 주세요, 올릴 준비 완료, 올림)의 허용 전이 표를 docs/states.md 에 써줘. 건너뛰기와 되돌리기는 금지야. 코드는 아직 쓰지 마.
# 2) 테스트 먼저 states.md 대로 lib/states.ts 의 canMove() 테스트를 Vitest로 먼저 써줘. 지금은 실패해야 해. 실패 출력까지 보여줘.
# 3) 증거와 함께 보고 구현 후 테스트 전체 결과, E2E 결과, 390px 캡처 경로를 보고서에 적어줘. 확인 못 한 건 '확인 못 함'으로 남겨.
5주차 · 검증: 테스트·기준선·실제 화면 — 20
실습 1 · 70분
목록·상태·검수·E2E를 완성해요
상태 전이 표 + canMove() 테스트 → 구현
콘텐츠 목록: 탭(전체·확인 필요·만드는 중·올릴 준비 완료·올림)
검수 스크립트: 절대 표현·오퍼 조건·태그↔내용·팩트시트 밖 숫자
LLM 판정: 사실 오류·제품↔소구 (반려 이유 한 줄 포함)
Playwright E2E 1개: 만들기 → 후보 5개 확인 → 이걸로 할게요
390px·1280px 캡처 + main 기준선 비교
완료 조건
전이 테스트 10개 이상 통과
검수 결과가 항목별로 저장됨
E2E가 CI에서 초록
캡처 2장과 기준선 표가 보고서에
5주차 · 검증: 테스트·기준선·실제 화면 — 21
실습 힌트
막히면 이렇게 요청해요
막힌 상황
이렇게 요청해요
테스트가 계속 실패해요
'실패 출력 전문을 보여주고, 원인 후보 3개를 확인 순서대로 적어줘'
E2E가 가끔 실패해요
'고정 대기를 없애고, 후보 5개가 보일 때까지 기다리게 바꿔줘'
LLM 검수가 들쭉날쭉해요
'판정을 JSON 스키마(통과·반려·불분명+이유)로 고정해줘'
에이전트가 '완료'라고만 해요
'실행한 명령과 출력, 캡처 경로를 그대로 붙여서 다시 보고해줘'
키 없이 테스트하고 싶어요
'LLM 호출을 가짜 응답으로 바꾸는 데모 모드를 만들어줘'
5주차 · 검증: 테스트·기준선·실제 화면 — 22
실습 2 · 도전 45분
슬라이드(이미지) 카드뉴스와 검증 보고서 자동화
형식 레지스트리에 '슬라이드(이미지)' 추가 (4~6장)
장마다 문구와 사진 자리, 첫 장은 질문형 제목
장 단위 검수: 8항목을 장마다 적용
npm run verify 하나로 테스트·E2E·캡처·기준선을 모아 reports/verify-날짜.md 생성
완료 조건
카드뉴스 후보 1세트 생성
장마다 검수 결과
verify 명령 한 번으로 보고서 생성
5주차 · 검증: 테스트·기준선·실제 화면 — 23
템플릿
검증 보고서
# 검증 보고서 — 콘텐츠 목록·상태 (YYYY-MM-DD) ## 바꾼 것 커밋 SHA와 한 줄 요약 ## 확인한 방법 - 규칙 테스트: npm test → 42 passed, 0 failed - E2E: npx playwright test → 1 passed - 화면: reports/390.png, reports/1280.png ## 기준선 main: 2 failed (기존) / 내 브랜치: 2 failed (같음) ## 검수 8항목 통과 6 · 반려 1(절대 표현) · 사람 확인 1 ## 확인 못 한 것 실제 휴대폰 기기, 이미지 모델 실호출 ## 다음에 할 일
5주차 · 검증: 테스트·기준선·실제 화면 — 24
안전 체크
이번 주 안전 체크
5주차 안전
여섯 가지를 같이 읽어요
테스트 비용 0원
가짜 LLM 응답으로
E2E는 로컬·프리뷰
게시 API 호출 없음
캡처는 샘플 데이터
실제 고객 정보 없음
키는 .env.local 에만
보고서·캡처에 없음
반려는 못 뒤집어요
에이전트가 '통과'로 못 바꿔요
실패 테스트 그대로
지우거나 skip 금지
5주차 · 검증: 테스트·기준선·실제 화면 — 25
흔한 실수
5주차에 자주 나오는 실수
실수
무슨 일이 생기나
대신 이렇게
테스트를 구현 뒤에 맡김
구현에 맞춘 테스트라 늘 통과해요
테스트를 먼저, 실패를 확인
'완료' 보고를 그대로 믿음
10건 중 1건만 된 채 넘어가요
개수·출력·캡처로 확인
실패 테스트를 skip
기준선이 몰래 나빠져요
실패는 보고서에 그대로
화면 확인 생략
휴대폰에서 버튼이 잘려도 몰라요
390px 캡처 필수
검수를 전부 LLM에
금칙어도 들쭉날쭉 걸러요
답이 정해진 건 스크립트로
5주차 · 검증: 테스트·기준선·실제 화면 — 26
문제 해결
자주 막히는 곳과 해결
증상
흔한 원인
해결
Playwright가 브라우저를 못 찾아요
브라우저 미설치
npx playwright install chromium
로컬은 통과, CI는 실패해요
서버가 뜨기 전에 테스트 시작
webServer 설정과 대기 조건 추가
Supabase 연결 오류
.env.local 누락·오타
.env.example 과 키 이름 대조
캡처가 빈 화면이에요
데이터가 오기 전에 촬영
목록 항목이 보일 때까지 기다린 뒤 촬영
LLM 검수가 JSON을 깨뜨려요
형식 지시 부족
Zod로 검증하고 실패 시 1회만 재시도
5주차 · 검증: 테스트·기준선·실제 화면 — 27
상급 노하우
루프 엔지니어링과 Jev: 검증이 끝날 때까지 도는 반복
기법
어떻게
왜
멈춤 조건부터
E2E 전부 통과, 테스트 파일 수정 금지, 20턴 안, 두 번 진전 없으면 보고
조건 없는 루프는 사용량만 태워요
목표 모드
/goal 콘텐츠 목록 E2E 통과: 별도 평가 모델이 매 턴 판정해요
끝났는지를 만든 쪽이 정하지 않아요
Stop 훅 관문
npx playwright test 가 실패하면 exit 2로 종료를 막아요 (stop_hook_active 확인)
'됐어요'를 코드가 판정해요
랄프 루프
형식을 하나씩 반복 구현, 상태는 파일과 git에, 최대 반복 수 필수
긴 작업에서도 컨텍스트가 썩지 않아요
카피 검수를 질문으로
검수 8항목 중 텍스트로 판정할 항목을 작은 질문으로 쪼개요 (Jev)
어느 항목이 틀렸는지 보여요
5주차 · 검증: 테스트·기준선·실제 화면 — 28
상급 노하우 · 예시
Jev로 카피 검수 쪼개기 + Stop 훅
심화 과제(선택): 지난 카피 20건에 텍스트 4항목 라벨을 직접 달고, Jev(또는 LLM + JSON 스키마)로 섀도 판정해 일치율을 비교해요