# 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)