- CLAUDE.md with collaboration rules and Planner/Generator/Evaluator cycle - .claude/ agents, commands, skills, hooks per Claude Code conventions - Sprint Contracts for sut-prober, normalizer, recorder, player, diff-reporter - SUT catalog (EG-BIM Modeler, 187 plugins) and .gitignore excluding SUT tree - PROGRESS.md / PLAN.md as shared agent handoff state - Solution scaffold targeting sut-prober PoC Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Sprint Contract — player
Owner: Generator Depends on: recorder 스키마 확정 Issue: #2
Goal
recorder가 생성한 시나리오 yaml을 SUT에 재생해 결과 저장 파일을 생성한다. 타이밍은 고정 sleep 금지, UIA/이벤트 기반 동기화.
Definition of Done
Recordingtest.Player콘솔이--scenario <path> [--output-dir <path>]받음- 각 step 재생 전
wait_for(uia 이벤트/엘리먼트 property) 대기 구현 target.uia_path로 엘리먼트 재탐색 후offset_norm으로 좌표 계산해 입력 전달- 재생 중 예외 발생 시 시나리오 스텝 index + 엘리먼트 탐색 실패 이유를 아티팩트로 기록
- 체크포인트 step에서 현재 저장 파일을
<output-dir>/checkpoint-<n>.*로 복사 - 재생 완료 시 exit code 0, 실패 시 non-zero + 아티팩트 경로 출력
- 동일 시나리오 10회 재생 시 9회 이상 성공 (flaky 허용 상한)
Interfaces
- Inputs: 시나리오 yaml, 아티팩트 출력 디렉터리
- Outputs: checkpoint 저장 파일, 실패 아티팩트(스크린샷, UIA 덤프, 로그)
- Side effects: SUT 프로세스 실행/종료
Out of scope
- 정규화 (normalizer의 몫)
- diff (diff-reporter의 몫)
- 리포트 집계 (test-runner의 몫)
Evaluation plan
- recorder로 만든 간단 시나리오(Box 생성 저장)를 10회 재생 → 9회 이상 완료 파일 생성
- 의도적으로 잘못된
uia_path를 넣어 실패 → 아티팩트에 탐색 실패 이유 기록 확인 - 체크포인트 2개 시나리오 재생 → 각 checkpoint 파일 존재 확인
- 고정 sleep 호출 grep으로 0건 확인
Risks
- plugin 로드 지연 → 첫 step 전 "plugin ready" 신호 필요
- 시작 상태 초기화 (임시 프로젝트 파일 삭제) 미비 시 누적 오염
- 재생 중 모달 대화상자 출현 시 대응 정책 필요