Smoke 2차 first E2E success + hotkey named key fix (#13)
- 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>
This commit is contained in:
65
docs/history/2026-04-08_smoke-2회차-첫-e2e-성공.md
Normal file
65
docs/history/2026-04-08_smoke-2회차-첫-e2e-성공.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 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와 연결).
|
||||
|
||||
## 결정적 진전
|
||||
|
||||
이번 라운드가 입증한 것:
|
||||
1. **recorder + player 코어 파이프라인이 실전 작동**
|
||||
2. **UiaPathResolver ancestor chain 매칭이 정확** (CommandBox/CB 정확히 찾음)
|
||||
3. **DragCollapser type target 상속 완벽 작동**
|
||||
4. **FlaUI 입력 합성이 안정적** (clicks/type/hotkey)
|
||||
5. **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.
|
||||
Reference in New Issue
Block a user