Files
recordingtest/docs/history/2026-04-07_이슈12-smoke2-fix-generator.md

2.6 KiB

2026-04-07 이슈 #12 Smoke 2회차 fix — Generator

  • 이슈: #12
  • : Generator (Planner/Generator/Evaluator 사이클)
  • 소요 시간: ~50분
  • Context 사용량: ~75k tokens

작업 요약

Smoke 1회차에서 발견된 4개 구조적 gap을 unit test 가능한 형태로 수정.

Gap 위치 수정
A Player full-path resolver UiaPathParser + IUiaTreeNode/UiaPathResolver 신규. UiaPlayerHost.ResolveElement가 FlaUI tree adapter로 segment chain descend
B Recorder type step target inheritance DragCollapserlastFocusPath/lastMousePath 추적, FlushType()이 typeRes 없을 때 fallback
C SUT 외 창 필터 IWindowFilter + SutProcessWindowFilter 도입, LowLevelHook.Filter가 mouse/key 모두 필터링. Program.cs에서 WindowFromPoint/GetForegroundWindow 와이어업
D UTF-8 BOM 없는 yaml 명시 ScenarioWriter.WriteToFilenew UTF8Encoding(false)로 저장

새 테스트 (10건)

Player.Tests:

  • UiaPathParser_ParsesMultiSegment_WithClassAndId
  • UiaPathParser_ParsesNameAttribute
  • UiaPathResolver_Descend_FindsNestedElement
  • UiaPathResolver_LastSegmentWithoutId_UsesClassName
  • UiaPathResolver_NotFound_ReturnsNull
  • SmokeRegression_BoxV4CleanLike_ParsesAndResolves

Recorder.Tests:

  • DragCollapser_TypeAfterFocusChange_InheritsTarget
  • DragCollapser_TypeAfterMouseDown_FallbackToMouseTarget
  • WindowFilter_ExternalCoord_DropsEvent
  • WindowFilter_SutCoord_KeepsEvent
  • ScenarioWriter_RoundTrip_PreservesKorean

빌드/테스트 결과

  • dotnet build recordingtest.sln — 0 warning, 0 error (TreatWarningsAsErrors)
  • dotnet test — 60 → 71 통과, 0 실패

변경 파일

  • src/Recordingtest.Player/UiaPathParser.cs (new)
  • src/Recordingtest.Player/IUiaPathResolver.cs (new — IUiaTreeNode+UiaPathResolver)
  • src/Recordingtest.Player/UiaPlayerHost.cs
  • src/Recordingtest.Recorder/DragCollapser.cs
  • src/Recordingtest.Recorder/ScenarioWriter.cs
  • src/Recordingtest.Recorder/WindowFilter.cs (new)
  • src/Recordingtest.Recorder/NativeMethods.cs (WindowFromPoint/GetForegroundWindow/GetWindowThreadProcessId)
  • src/Recordingtest.Recorder/LowLevelHook.cs (Filter property)
  • src/Recordingtest.Recorder/Program.cs (filter wiring)
  • tests/Recordingtest.Player.Tests/UiaPathResolverTests.cs (new)
  • tests/Recordingtest.Recorder.Tests/RecorderTests.cs (5 새 fact)
  • docs/guides/smoke-test.md (PowerShell UTF-8 팁)

다음 단계

  • /evaluate issue-12 (Evaluator)
  • 통과 시 PROGRESS.md/PLAN.md orchestrator가 갱신
  • 실제 SUT 위 smoke 2회차로 box-v4-clean.yaml 재생 검증