2.6 KiB
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 | DragCollapser에 lastFocusPath/lastMousePath 추적, FlushType()이 typeRes 없을 때 fallback |
| C | SUT 외 창 필터 | IWindowFilter + SutProcessWindowFilter 도입, LowLevelHook.Filter가 mouse/key 모두 필터링. Program.cs에서 WindowFromPoint/GetForegroundWindow 와이어업 |
| D | UTF-8 BOM 없는 yaml 명시 | ScenarioWriter.WriteToFile이 new UTF8Encoding(false)로 저장 |
새 테스트 (10건)
Player.Tests:
UiaPathParser_ParsesMultiSegment_WithClassAndIdUiaPathParser_ParsesNameAttributeUiaPathResolver_Descend_FindsNestedElementUiaPathResolver_LastSegmentWithoutId_UsesClassNameUiaPathResolver_NotFound_ReturnsNullSmokeRegression_BoxV4CleanLike_ParsesAndResolves
Recorder.Tests:
DragCollapser_TypeAfterFocusChange_InheritsTargetDragCollapser_TypeAfterMouseDown_FallbackToMouseTargetWindowFilter_ExternalCoord_DropsEventWindowFilter_SutCoord_KeepsEventScenarioWriter_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 재생 검증