Smoke 2회차 첫 E2E 성공(2026-04-08_smoke-2회차-첫-e2e-성공.md)은 scenarios/box-v5-clean.yaml로 달성했다. 그러나 이는 원본 box-v5.yaml(676줄)을 AI로 수작업 정리해 54줄로 축약한 파일이다. 즉 raw 레코딩 그대로는 재생 불가였던 상태.
이슈 #13에서 root cause 3건을 수정했다:
Gap E — Hotkey 매핑 누락 (enter/tab/esc/arrows)
Gap F — recorder focus_change 이벤트가 시스템 전역으로 수신되어 VS Code/PowerShell 경로 다수 포함 → FocusEventFilter로 SUT ProcessId 필터
Gap G — viewport 클릭이 top-level z-order(ConsoleWindowClass)로 잡힘 → WindowPointResolver SUT scope fallback
목표
box-v5.yaml(cleanup 없이 raw 그대로)을 player로 재생해 Box geometry가 생성되는 것을 검증한다. 성공 시 cleanup 단계를 워크플로우에서 제거할 수 있다.
Definition of Done
사용자 라이브 환경에서 dotnet run --project src/Recordingtest.Player -- --scenario scenarios/box-v5.yaml --output-dir artifacts/replay-v5-raw --no-launch 실행
SUT에 Box geometry가 생성된다(엔진 상태/저장파일로 확인)
실패 시 남은 gap을 재분석해 recorder/player 측 fix로 해결 (시나리오 편집이 아닌)
scenarios/box-v5.yaml (raw, 676줄) vs scenarios/box-v5-clean.yaml (54줄)
## 배경
Smoke 2회차 첫 E2E 성공(`2026-04-08_smoke-2회차-첫-e2e-성공.md`)은 `scenarios/box-v5-clean.yaml`로 달성했다. 그러나 이는 원본 `box-v5.yaml`(676줄)을 AI로 수작업 정리해 54줄로 축약한 파일이다. 즉 **raw 레코딩 그대로는 재생 불가**였던 상태.
이슈 #13에서 root cause 3건을 수정했다:
- Gap E — Hotkey 매핑 누락 (enter/tab/esc/arrows)
- Gap F — recorder focus_change 이벤트가 시스템 전역으로 수신되어 VS Code/PowerShell 경로 다수 포함 → `FocusEventFilter`로 SUT ProcessId 필터
- Gap G — viewport 클릭이 top-level z-order(ConsoleWindowClass)로 잡힘 → `WindowPointResolver` SUT scope fallback
## 목표
`box-v5.yaml`(**cleanup 없이 raw 그대로**)을 player로 재생해 Box geometry가 생성되는 것을 검증한다. 성공 시 cleanup 단계를 워크플로우에서 제거할 수 있다.
## Definition of Done
1. 사용자 라이브 환경에서 `dotnet run --project src/Recordingtest.Player -- --scenario scenarios/box-v5.yaml --output-dir artifacts/replay-v5-raw --no-launch` 실행
2. SUT에 Box geometry가 생성된다(엔진 상태/저장파일로 확인)
3. 실패 시 남은 gap을 재분석해 recorder/player 측 fix로 해결 (시나리오 편집이 아닌)
## 비목표
- recorder 출력 포맷 변경
- normalizer 확장
## 관련
- #13 (선행 fix)
- `docs/history/2026-04-08_smoke-2회차-첫-e2e-성공.md`
- `scenarios/box-v5.yaml` (raw, 676줄) vs `scenarios/box-v5-clean.yaml` (54줄)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
배경
Smoke 2회차 첫 E2E 성공(
2026-04-08_smoke-2회차-첫-e2e-성공.md)은scenarios/box-v5-clean.yaml로 달성했다. 그러나 이는 원본box-v5.yaml(676줄)을 AI로 수작업 정리해 54줄로 축약한 파일이다. 즉 raw 레코딩 그대로는 재생 불가였던 상태.이슈 #13에서 root cause 3건을 수정했다:
FocusEventFilter로 SUT ProcessId 필터WindowPointResolverSUT scope fallback목표
box-v5.yaml(cleanup 없이 raw 그대로)을 player로 재생해 Box geometry가 생성되는 것을 검증한다. 성공 시 cleanup 단계를 워크플로우에서 제거할 수 있다.Definition of Done
dotnet run --project src/Recordingtest.Player -- --scenario scenarios/box-v5.yaml --output-dir artifacts/replay-v5-raw --no-launch실행비목표
관련
docs/history/2026-04-08_smoke-2회차-첫-e2e-성공.mdscenarios/box-v5.yaml(raw, 676줄) vsscenarios/box-v5-clean.yaml(54줄)Raw 시나리오 E2E 성공 🎉
scenarios/box-v6.yaml원본(AI 후처리 없음) → Player 재생 → Box geometry 생성 확인.해결 방식: recorder를 재공사하는 대신 Player가 record→replay gap을 흡수하도록 포스트프로세싱 추가. (recorder Gap I-1은 follow-up.)
변경 (commit
70bf570)host.Type()Step.RawCoord필드 추가UiaPlayerHost.BringSutToForeground()(SetForeground + Focus + 600ms settle) — 재생 시작 전 1회Step.Ts+IPlayerHost.Delay(150ms~3s 클램프). 엔진 내부Thread.Sleep금지 DoD 유지하려 host로 위임라이브 결과
1차 시도 실패 / 2차 성공. foreground settle이 경계선(600ms) — 1차에 "BOX" 타이핑이 부분 누락됨. Follow-up 등록.
Follow-up
GetForegroundWindow == sut_hwnd능동 대기 또는 Keyboard warm-up. PLAN.md P1.Automation.FocusedElement직접 쿼리해 typeRes 채우기. PLAN.md P1.토큰 사용량
DoD 달성도
Raw box-v6.yaml 재생 명령 실행✓SUT에 Box geometry 생성✓ (2차 시도)시나리오 편집 없이 해결✓ (recorder는 이번 수정 없음, player만)Close 가능 — 안정화 follow-up은 별개 이슈로 추적.