Files
recordingtest/docs/history/2026-04-07_이슈11-smoke-gap-fix-generator.md

1.9 KiB

2026-04-07 이슈 #11 — smoke gap fix (Generator)

  • 관련 이슈: #11
  • 역할: Generator
  • 소요 시간: ~45분
  • Context 사용량: ~70k tokens

무엇을 했나

EG-BIM Modeler 스모크 테스트에서 노출된 4개 통합 갭 수정.

recorder

  • KeyTranslator 추가: Win32 VK → 문자/키 이름 (A-Z/0-9/F1-F24/Enter/Tab/Esc/Arrows/...). 대문자 컨벤션 채택.
  • DragCollapser.key_down 재작성:
    • 연속 printable key_down은 단일 type 스텝으로 누적 (BOX 등)
    • 모디파이어(Ctrl/Shift/Alt/Win)는 상태 추적, 단독 스텝 미방출
    • 조합 시 ctrl+c 형태의 hotkey 스텝
    • 명명 키(enter/tab/...) → hotkey 스텝
    • ScenarioStep.RawVk 필드 추가 (진단용)
  • Program.cs:
    • [STAThread] 추가 (UIA3 쓰레드 친화성)
    • unresolved_paths (리졸버 실행 후 null) + no_resolver_attempt (키 이벤트/automation null) 분리 카운터
    • null_target_steps 최종 집계 출력
    • 키 이벤트는 의미 없는 좌표(0,0)로 리졸버 호출 방지

player

  • StepKind.Wheel, StepKind.Focus 추가
  • PlayerEngine.ExecuteStep:
    • null target + target 필요 종류(Click/Drag/Type/Focus)는 경고 후 skip (데스크탑 오클릭 방지)
    • Wheel/Focus 케이스 no-op 로그 (이슈 #11 코멘트)

테스트

  • RecorderTests: KeyTranslator, printable→"BOX", ctrl+c→hotkey
  • PlayerEngineTests: NullTarget_Skips, Wheel/Focus 파싱, Wheel 실행
  • SmokeRegressionTests 신규 파일: 실제 recorder output 모사 yaml → 전체 파이프라인

결과

  • 빌드: 경고 0, 오류 0 (TreatWarningsAsErrors 유지)
  • 테스트: 53 → 60 (전원 통과)

미결

  • Hotkey 스텝에 target이 null일 때도 현재는 실행됨(모디파이어 전역 키 가정). 필요 시 추후 정책 조정.
  • recorder 실사용에서 target이 여전히 null인 경우 root cause는 STA/automation 부재일 수 있어 smoke 재실행 확인 필요.