# E2E Test Infrastructure Scaffold Workflow workflow: id: e2e-scaffold name: E2E Test Infrastructure Scaffold version: 1.0 module: bmgd agent: game-qa description: | Scaffold complete E2E testing infrastructure for an existing game project. Creates test fixtures, scenario builders, input simulators, and async assertion utilities tailored to the project's architecture. triggers: - "ES" - "e2e-scaffold" - "scaffold e2e" - "e2e infrastructure" - "setup e2e" preflight: - "Test framework initialized (run `test-framework` workflow first)" - "Game has identifiable state manager" - "Main gameplay scene exists" # Paths are relative to this workflow file's location knowledge_fragments: - "../../../gametest/knowledge/e2e-testing.md" - "../../../gametest/knowledge/unity-testing.md" - "../../../gametest/knowledge/unreal-testing.md" - "../../../gametest/knowledge/godot-testing.md" inputs: game_state_class: description: "Primary game state manager class name" required: true example: "GameStateManager" main_scene: description: "Scene name where core gameplay occurs" required: true example: "GameScene" input_system: description: "Input system in use" required: false default: "auto-detect" options: - "unity-input-system" - "unity-legacy" - "unreal-enhanced" - "godot-input" - "custom" # Output paths vary by engine. Generate files matching detected engine. outputs: unity: condition: "engine == 'unity'" infrastructure_files: description: "Generated E2E infrastructure classes" files: - "Tests/PlayMode/E2E/Infrastructure/GameE2ETestFixture.cs" - "Tests/PlayMode/E2E/Infrastructure/ScenarioBuilder.cs" - "Tests/PlayMode/E2E/Infrastructure/InputSimulator.cs" - "Tests/PlayMode/E2E/Infrastructure/AsyncAssert.cs" assembly_definition: description: "E2E test assembly configuration" files: - "Tests/PlayMode/E2E/E2E.asmdef" example_test: description: "Working example E2E test" files: - "Tests/PlayMode/E2E/ExampleE2ETest.cs" documentation: description: "E2E testing README" files: - "Tests/PlayMode/E2E/README.md" unreal: condition: "engine == 'unreal'" infrastructure_files: description: "Generated E2E infrastructure classes" files: - "Source/{ProjectName}/Tests/E2E/GameE2ETestBase.h" - "Source/{ProjectName}/Tests/E2E/GameE2ETestBase.cpp" - "Source/{ProjectName}/Tests/E2E/ScenarioBuilder.h" - "Source/{ProjectName}/Tests/E2E/ScenarioBuilder.cpp" - "Source/{ProjectName}/Tests/E2E/InputSimulator.h" - "Source/{ProjectName}/Tests/E2E/InputSimulator.cpp" - "Source/{ProjectName}/Tests/E2E/AsyncAssert.h" build_configuration: description: "E2E test build configuration" files: - "Source/{ProjectName}/Tests/E2E/{ProjectName}E2ETests.Build.cs" example_test: description: "Working example E2E test" files: - "Source/{ProjectName}/Tests/E2E/ExampleE2ETest.cpp" documentation: description: "E2E testing README" files: - "Source/{ProjectName}/Tests/E2E/README.md" godot: condition: "engine == 'godot'" infrastructure_files: description: "Generated E2E infrastructure classes" files: - "tests/e2e/infrastructure/game_e2e_test_fixture.gd" - "tests/e2e/infrastructure/scenario_builder.gd" - "tests/e2e/infrastructure/input_simulator.gd" - "tests/e2e/infrastructure/async_assert.gd" example_test: description: "Working example E2E test" files: - "tests/e2e/scenarios/example_e2e_test.gd" documentation: description: "E2E testing README" files: - "tests/e2e/README.md" steps: - id: analyze name: "Analyze Game Architecture" instruction_file: "instructions.md#step-1-analyze-game-architecture" - id: scaffold name: "Generate Infrastructure" instruction_file: "instructions.md#step-2-generate-infrastructure" - id: example name: "Generate Example Test" instruction_file: "instructions.md#step-3-generate-example-test" - id: document name: "Generate Documentation" instruction_file: "instructions.md#step-4-generate-documentation" - id: complete name: "Output Summary" instruction_file: "instructions.md#step-5-output-summary" validation: checklist: "checklist.md"