# 2026-04-07 — test-runner Generator (Issue #8) - 이슈: #8 - 작업: `Recordingtest.Runner` PoC 구현 (player + normalizer + diff-reporter 통합 파이프라인) - 담당: Generator - 소요 시간: 약 30분 - Context 사용량: 약 60k tokens ## 산출물 - `src/Recordingtest.Runner/` 콘솔 exe - `RunnerOptions`, `RunReport`, `ScenarioResult` - `INormalizer`, `IDiffer`, `IRunnerHostFactory` 어댑터 인터페이스 - `DefaultNormalizer`, `DefaultDiffer`, `DefaultHostFactory` - `TestRunner` (`RunAll`, `WriteJsonReport`, `WriteMarkdownReport`, `ToExitCode`) - `Program` (CLI: `--scenarios/--baselines/--out/--profile/--no-launch`) - `tests/Recordingtest.Runner.Tests/` (xUnit, 6 tests, all green) - `recordingtest.sln`에 두 프로젝트 추가 ## 검증 - `dotnet build` green - `dotnet test` 6/6 통과 - `Thread.Sleep` / `Task.Delay` 0건 (grep 확인) - `report.json` 카멜케이스 + 스키마 테스트 포함 - Exit code: 0 = all pass, 1 = any fail, 2 = any error ## 메모 - 베이스라인은 사전 정규화되었다고 가정하지 않고, 매 실행 시 received와 동일 프로파일로 재정규화한다. (TestRunner.cs 상단 주석 참조) - `--no-launch` 의미는 player 책임이므로 runner는 옵션만 파싱해 보관한다.