Files
recordingtest/docs/history/2026-04-07_이슈7-player-generator.md
2026-04-07 14:28:11 +09:00

2.0 KiB

2026-04-07 이슈 #7 — player Generator

작업 개요

Sprint Contract docs/contracts/player.md 기준으로 Recordingtest.Player 콘솔 PoC + xUnit 테스트 구현.

산출물

  • src/Recordingtest.Player/
    • Recordingtest.Player.csproj (TFM net8.0-windows, FlaUI.Core/UIA3 4.0.0, YamlDotNet 16.1.3)
    • Model/Scenario.cs, Model/Step.cs (recorder 스키마와 동일 형상; 임시로 Player 내부에 위치)
    • ScenarioLoader.cs (YamlDotNet, snake_case)
    • IPlayerHost.cs (UIA/입력 추상화)
    • PlayerEngine.cs (스텝 루프; 고정 sleep 없음, 예외 시 CaptureFailureArtifacts 후 재던짐)
    • UiaPlayerHost.cs (FlaUI 실제 구현, 컴파일 전용)
    • Program.cs (CLI: --scenario --output-dir --no-launch)
  • tests/Recordingtest.Player.Tests/ (FakePlayerHost + 6개 테스트)
  • recordingtest.sln 에 두 프로젝트 등록

결과

  • dotnet build recordingtest.sln: 경고 0, 오류 0
  • dotnet test: 6/6 통과
    • Player_EmptyScenario_ExitsZero
    • Player_ClickStep_InvokesHostClickAtExpectedScreenPoint
    • Player_ResolveFailure_CapturesArtifacts
    • Player_CheckpointStep_InvokesCapture
    • Player_NoFixedSleep (PlayerEngine.cs 내 Thread.Sleep( / Task.Delay(TimeSpan.FromSeconds 0건)
    • Player_ScenarioLoader_ParsesSampleYaml

미충족 / untestable DoD

  • "동일 시나리오 10회 재생 시 9회 이상 성공" — 실제 SUT(EG-BIM Modeler) 기동이 PoC 샌드박스에서 금지되어 있어 단위 테스트로 검증 불가. Evaluator 가 partial/untestable 로 표기해야 함. 통합 환경에서 --no-launch 후 외부 러너로 검증 필요.
  • wait_for UIA 이벤트 매핑은 PoC 수준 (UiaPlayerHost 는 main window IsEnabled polling). 엔진 자체는 hint 문자열 그대로 host 에 위임하여 추후 확장 여지 있음.
  • UiaPlayerHost.ResolveElement 는 UIA path 의 마지막 @AutomationId 만 사용하는 단순 구현. 전체 path resolver 는 후속 작업.

소요 시간

약 15분

Context 사용량

약 30k tokens

관련 이슈

#7 (player PoC)