- UiaPlayerHost.Hotkey now recognizes enter/tab/esc/space/arrows/F1-F9 - Live run generated an actual Box geometry in EG-BIM Modeler (milestone) - Gap F/G/H documented for follow-up (issue #13) - PROGRESS: first E2E success row Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.8 KiB
2026-04-08 Smoke Test 2회차 — 첫 E2E 성공
- 이슈: #12 smoke 2회차 라이브 검증
- 소요 시간: ~1시간 (재개 ~15분 + 진단/fix ~30분 + 재실행 ~10분)
- Context 사용량: ~480k tokens (orchestrator 누적)
결과 — 첫 완전 E2E 성공 🎉
scenarios/box-v5-clean.yaml (7-step) 재생으로 실제 3D Box geometry가 EG-BIM Modeler에 생성됨. 객체 트리 뷰에 UnCategorize / #Group 엔트리 확인, 커맨드라인에 "1개의 매쉬가 선택에 추가" 메시지.
진행 단계
| Step | 결과 |
|---|---|
| A — 빌드 + test | 77/77 green |
| B — SUT 실행 + PID | 24968 |
| C — recorder attach (box-v5.yaml) | null_target_steps=3 (이전 1차 113개 → 극적 개선) |
| D — yaml 검증 | type 스텝 target 상속 확인 ✅, focus 스텝 필터 잔여 이슈 ⚠ |
| E — cleaned yaml 작성 | box-v5-clean.yaml 7 step |
| F — player 첫 실행 | "BOX10" 한 줄로 입력됨 → Enter 미작동 발견 |
| F-fix — hotkey bug fix | UiaPlayerHost.Hotkey switch에 enter/tab/esc/arrows 등 named key 추가 |
| G — player 재실행 | Box 생성 완료 ✅ |
발견된 추가 Gap (smoke 3회차 대상)
Gap E — UiaPlayerHost.Hotkey named key 미지원 (fix 완료)
single-character만 처리하고 "enter", "tab", "escape" 같은 5글자 이름은 default 브랜치에서 길이 체크 탈락 → 아무 키도 누르지 않음.
Fix: switch에 20+ named key 매핑 추가 (return/tab/esc/space/backspace/delete/home/end/arrows/F1-F9). commit 대기 중.
Gap F — recorder focus_change 필터 미작동
box-v5.yaml 상단에 VS Code / PowerShell / 기타 창의 focus_change 스텝 40+ 개. Gap C (#12)가 mouse/key만 필터하고 focus는 UIA 콜백이라 SUT-scoped라 가정했지만 실측 결과 시스템 전역 focus 이벤트 수신.
Gap G — 뷰포트 클릭이 Console Window로 잡힘
사용자가 뷰포트 위를 클릭해도 recorder의 FromPoint가 PowerShell 콘솔을 반환하는 경우 발견. Console이 최근 활성이었거나 top-level z-order 때문으로 추정. WindowFromPoint 기반 필터도 부족.
Gap H — cleaned yaml의 offset은 추측값
뷰포트 클릭 offset (0.35, 0.55), (0.5, 0.35)는 orchestrator가 임의 지정. 실제 geometry가 원본과 다른 모양 (길쭉한 박스)으로 생성된 원인. 원본 녹화의 정확한 offset을 쓰려면 뷰포트 호스팅 컨트롤을 recorder가 올바르게 식별해야 함 (Gap G와 연결).
결정적 진전
이번 라운드가 입증한 것:
- recorder + player 코어 파이프라인이 실전 작동
- UiaPathResolver ancestor chain 매칭이 정확 (CommandBox/CB 정확히 찾음)
- DragCollapser type target 상속 완벽 작동
- FlaUI 입력 합성이 안정적 (clicks/type/hotkey)
- harness design 사이클의 가치 — 샌드박스 77 tests green에도 라이브에서 hotkey bug 발견, 즉석 fix, 재실행으로 E2E 성공
Box 모양이 다른 이유
좌표 재현의 본질적 한계가 아님. 단순히 cleaned yaml의 offset이 추측값이었기 때문. recorder가 뷰포트를 올바른 컨트롤로 잡기만 하면 offset_norm으로 완벽 재현 가능.
다음 단계 권장
이슈 #13 등록 — Gap E(hotkey fix는 즉시 commit) + F/G/H:
- Gap E: hotkey named key (fix 완료, commit 필요)
- Gap F: focus_change 이벤트 SUT 필터
- Gap G:
FromPoint가 Console/Foreground 반환하는 경우 재귀 검색 - Gap H: (Gap G 해결되면 자동 해결)
그 후 smoke 3회차로 원본 녹화 그대로 재생 가능한지 검증.
종합 평가
Smoke 2회차 성공. PoC가 샌드박스에서만 아니라 실전에서도 기초 경로 동작함을 실증. E2E 최초 Box 생성은 프로젝트 milestone.