bmad-method 6.0.0-alpha.17 → 6.0.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/package.json +1 -1
  3. package/src/modules/bmgd/_module-installer/installer.js +160 -0
  4. package/src/modules/bmgd/_module-installer/platform-specifics/claude-code.js +23 -0
  5. package/src/modules/bmgd/_module-installer/platform-specifics/windsurf.js +18 -0
  6. package/src/modules/bmgd/agents/game-architect.agent.yaml +23 -8
  7. package/src/modules/bmgd/agents/game-designer.agent.yaml +38 -18
  8. package/src/modules/bmgd/agents/game-dev.agent.yaml +30 -14
  9. package/src/modules/bmgd/agents/game-qa.agent.yaml +64 -0
  10. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +27 -39
  11. package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +56 -0
  12. package/src/modules/bmgd/docs/README.md +180 -0
  13. package/src/modules/bmgd/docs/agents-guide.md +407 -0
  14. package/src/modules/bmgd/docs/game-types-guide.md +503 -0
  15. package/src/modules/bmgd/docs/glossary.md +294 -0
  16. package/src/modules/bmgd/docs/quick-flow-guide.md +288 -0
  17. package/src/modules/bmgd/docs/quick-start.md +250 -0
  18. package/src/modules/bmgd/docs/troubleshooting.md +259 -0
  19. package/src/modules/bmgd/docs/workflow-overview.jpg +0 -0
  20. package/src/modules/bmgd/docs/workflows-guide.md +463 -0
  21. package/src/modules/bmgd/gametest/knowledge/balance-testing.md +220 -0
  22. package/src/modules/bmgd/gametest/knowledge/certification-testing.md +319 -0
  23. package/src/modules/bmgd/gametest/knowledge/compatibility-testing.md +228 -0
  24. package/src/modules/bmgd/gametest/knowledge/godot-testing.md +376 -0
  25. package/src/modules/bmgd/gametest/knowledge/input-testing.md +315 -0
  26. package/src/modules/bmgd/gametest/knowledge/localization-testing.md +304 -0
  27. package/src/modules/bmgd/gametest/knowledge/multiplayer-testing.md +322 -0
  28. package/src/modules/bmgd/gametest/knowledge/performance-testing.md +204 -0
  29. package/src/modules/bmgd/gametest/knowledge/playtesting.md +384 -0
  30. package/src/modules/bmgd/gametest/knowledge/qa-automation.md +190 -0
  31. package/src/modules/bmgd/gametest/knowledge/regression-testing.md +280 -0
  32. package/src/modules/bmgd/gametest/knowledge/save-testing.md +280 -0
  33. package/src/modules/bmgd/gametest/knowledge/smoke-testing.md +404 -0
  34. package/src/modules/bmgd/gametest/knowledge/test-priorities.md +271 -0
  35. package/src/modules/bmgd/gametest/knowledge/unity-testing.md +383 -0
  36. package/src/modules/bmgd/gametest/knowledge/unreal-testing.md +388 -0
  37. package/src/modules/bmgd/gametest/qa-index.csv +17 -0
  38. package/src/modules/bmgd/module.yaml +25 -9
  39. package/src/modules/bmgd/teams/default-party.csv +2 -0
  40. package/src/modules/bmgd/teams/team-gamedev.yaml +12 -1
  41. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +164 -0
  42. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +210 -0
  43. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +289 -0
  44. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +275 -0
  45. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +49 -0
  46. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +29 -8
  47. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +223 -0
  48. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +151 -0
  49. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +218 -0
  50. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +218 -0
  51. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +231 -0
  52. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +242 -0
  53. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +224 -0
  54. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +282 -0
  55. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +296 -0
  56. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +62 -0
  57. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +40 -9
  58. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +248 -0
  59. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +173 -0
  60. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +332 -0
  61. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +245 -0
  62. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +229 -0
  63. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +258 -0
  64. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +249 -0
  65. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +266 -0
  66. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +272 -0
  67. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +264 -0
  68. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +255 -0
  69. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +275 -0
  70. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +284 -0
  71. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +250 -0
  72. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +335 -0
  73. package/src/modules/bmgd/workflows/2-design/gdd/workflow.md +61 -0
  74. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +27 -7
  75. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +228 -0
  76. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +163 -0
  77. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +262 -0
  78. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +238 -0
  79. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +297 -0
  80. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +262 -0
  81. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +250 -0
  82. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +244 -0
  83. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +264 -0
  84. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +254 -0
  85. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +262 -0
  86. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +331 -0
  87. package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +57 -0
  88. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +53 -8
  89. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +223 -0
  90. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +153 -0
  91. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +262 -0
  92. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +290 -0
  93. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +300 -0
  94. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +319 -0
  95. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +304 -0
  96. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +349 -0
  97. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +293 -0
  98. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +302 -0
  99. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +55 -0
  100. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +50 -21
  101. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +23 -0
  102. package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +225 -0
  103. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +18 -15
  104. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
  105. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +1 -1
  106. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +11 -6
  107. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +332 -214
  108. package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
  109. package/src/modules/bmgd/workflows/4-production/create-story/template.md +3 -5
  110. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +12 -7
  111. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +65 -23
  112. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
  113. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +13 -3
  114. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +4 -4
  115. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +12 -7
  116. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +32 -41
  117. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +13 -13
  118. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +6 -1
  119. package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +229 -0
  120. package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +35 -0
  121. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +140 -0
  122. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +27 -0
  123. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/checklist.md +37 -0
  124. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/instructions.md +220 -0
  125. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +45 -0
  126. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/checklist.md +26 -0
  127. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/instructions.md +156 -0
  128. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +36 -0
  129. package/src/modules/bmgd/workflows/gametest/automate/checklist.md +93 -0
  130. package/src/modules/bmgd/workflows/gametest/automate/instructions.md +317 -0
  131. package/src/modules/bmgd/workflows/gametest/automate/workflow.yaml +50 -0
  132. package/src/modules/bmgd/workflows/gametest/performance/checklist.md +96 -0
  133. package/src/modules/bmgd/workflows/gametest/performance/instructions.md +323 -0
  134. package/src/modules/bmgd/workflows/gametest/performance/performance-template.md +256 -0
  135. package/src/modules/bmgd/workflows/gametest/performance/workflow.yaml +48 -0
  136. package/src/modules/bmgd/workflows/gametest/playtest-plan/checklist.md +93 -0
  137. package/src/modules/bmgd/workflows/gametest/playtest-plan/instructions.md +297 -0
  138. package/src/modules/bmgd/workflows/gametest/playtest-plan/playtest-template.md +208 -0
  139. package/src/modules/bmgd/workflows/gametest/playtest-plan/workflow.yaml +59 -0
  140. package/src/modules/bmgd/workflows/gametest/test-design/checklist.md +98 -0
  141. package/src/modules/bmgd/workflows/gametest/test-design/instructions.md +280 -0
  142. package/src/modules/bmgd/workflows/gametest/test-design/test-design-template.md +205 -0
  143. package/src/modules/bmgd/workflows/gametest/test-design/workflow.yaml +47 -0
  144. package/src/modules/bmgd/workflows/gametest/test-framework/checklist.md +103 -0
  145. package/src/modules/bmgd/workflows/gametest/test-framework/instructions.md +348 -0
  146. package/src/modules/bmgd/workflows/gametest/test-framework/workflow.yaml +48 -0
  147. package/src/modules/bmgd/workflows/gametest/test-review/checklist.md +87 -0
  148. package/src/modules/bmgd/workflows/gametest/test-review/instructions.md +272 -0
  149. package/src/modules/bmgd/workflows/gametest/test-review/test-review-template.md +203 -0
  150. package/src/modules/bmgd/workflows/gametest/test-review/workflow.yaml +48 -0
  151. package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +299 -0
  152. package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +29 -0
  153. package/src/modules/bmgd/workflows/workflow-status/instructions.md +395 -0
  154. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-brownfield.yaml +65 -0
  155. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-greenfield.yaml +71 -0
  156. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +29 -0
  157. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-greenfield.yaml +39 -0
  158. package/src/modules/bmgd/workflows/workflow-status/project-levels.yaml +63 -0
  159. package/src/modules/bmgd/workflows/workflow-status/workflow-status-template.yaml +24 -0
  160. package/src/modules/bmgd/workflows/workflow-status/workflow.yaml +30 -0
  161. package/tools/cli/commands/install.js +9 -0
  162. package/tools/cli/installers/lib/core/installer.js +109 -109
  163. package/tools/cli/installers/lib/core/installer.js.bak +3204 -0
  164. package/tools/cli/installers/lib/modules/manager.js +16 -4
  165. package/tools/cli/lib/agent/compiler.js +99 -0
  166. package/tools/cli/lib/ui.js +78 -27
  167. package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +0 -502
  168. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +0 -398
  169. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +0 -256
  170. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +0 -267
  171. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +0 -17
  172. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +0 -164
  173. package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +0 -76
  174. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +0 -58
  175. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +0 -16
  176. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +0 -34
  177. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +0 -209
  178. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +0 -63
  179. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +0 -111
  180. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +0 -28
  181. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +0 -117
  182. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +0 -25
  183. /package/src/modules/bmgd/workflows/1-preproduction/game-brief/{template.md → templates/game-brief-template.md} +0 -0
  184. /package/src/modules/bmgd/workflows/2-design/gdd/{gdd-template.md → templates/gdd-template.md} +0 -0
  185. /package/src/modules/bmgd/workflows/2-design/narrative/{narrative-template.md → templates/narrative-template.md} +0 -0
  186. /package/src/modules/bmgd/workflows/3-technical/game-architecture/{architecture-template.md → templates/architecture-template.md} +0 -0
@@ -0,0 +1,317 @@
1
+ <!-- Powered by BMAD-CORE™ -->
2
+
3
+ # Game Test Automation
4
+
5
+ **Workflow ID**: `_bmad/bmgd/gametest/automate`
6
+ **Version**: 1.0 (BMad v6)
7
+
8
+ ---
9
+
10
+ ## Overview
11
+
12
+ Generate automated test code for game projects based on test design scenarios or by analyzing existing game code. Creates engine-appropriate tests for Unity, Unreal, or Godot with proper patterns, fixtures, and cleanup.
13
+
14
+ ---
15
+
16
+ ## Preflight Requirements
17
+
18
+ - ✅ Test framework already initialized (run `framework` workflow first)
19
+ - ✅ Test scenarios defined (from `test-design` or ad-hoc)
20
+ - ✅ Game code accessible for analysis
21
+
22
+ ---
23
+
24
+ ## Step 1: Analyze Codebase
25
+
26
+ ### Actions
27
+
28
+ 1. **Detect Game Engine**
29
+ - Check for engine-specific project files
30
+ - Load appropriate knowledge fragments
31
+
32
+ 2. **Identify Testable Systems**
33
+ - Pure logic classes (calculators, managers)
34
+ - State machines (AI, gameplay)
35
+ - Data structures (inventory, save data)
36
+
37
+ 3. **Locate Existing Tests**
38
+ - Find test directory structure
39
+ - Identify test patterns already in use
40
+ - Check for test helpers/fixtures
41
+
42
+ ---
43
+
44
+ ## Step 2: Generate Unit Tests
45
+
46
+ ### Unity (C#)
47
+
48
+ **Knowledge Base Reference**: `knowledge/unity-testing.md`
49
+
50
+ ```csharp
51
+ using NUnit.Framework;
52
+
53
+ [TestFixture]
54
+ public class {ClassName}Tests
55
+ {
56
+ private {ClassName} _sut; // System Under Test
57
+
58
+ [SetUp]
59
+ public void Setup()
60
+ {
61
+ _sut = new {ClassName}();
62
+ }
63
+
64
+ [Test]
65
+ public void {MethodName}_When{Condition}_Should{Expectation}()
66
+ {
67
+ // Arrange
68
+ {setup_code}
69
+
70
+ // Act
71
+ var result = _sut.{MethodName}({parameters});
72
+
73
+ // Assert
74
+ Assert.AreEqual({expected}, result);
75
+ }
76
+
77
+ [TestCase({input1}, {expected1})]
78
+ [TestCase({input2}, {expected2})]
79
+ public void {MethodName}_Parameterized({inputType} input, {outputType} expected)
80
+ {
81
+ var result = _sut.{MethodName}(input);
82
+ Assert.AreEqual(expected, result);
83
+ }
84
+ }
85
+ ```
86
+
87
+ ### Unreal (C++)
88
+
89
+ **Knowledge Base Reference**: `knowledge/unreal-testing.md`
90
+
91
+ ```cpp
92
+ #include "Misc/AutomationTest.h"
93
+
94
+ IMPLEMENT_SIMPLE_AUTOMATION_TEST(
95
+ F{ClassName}{MethodName}Test,
96
+ "{ProjectName}.{Category}.{TestName}",
97
+ EAutomationTestFlags::ApplicationContextMask |
98
+ EAutomationTestFlags::ProductFilter
99
+ )
100
+
101
+ bool F{ClassName}{MethodName}Test::RunTest(const FString& Parameters)
102
+ {
103
+ // Arrange
104
+ {setup_code}
105
+
106
+ // Act
107
+ auto Result = {ClassName}::{MethodName}({parameters});
108
+
109
+ // Assert
110
+ TestEqual("{assertion_message}", Result, {expected});
111
+
112
+ return true;
113
+ }
114
+ ```
115
+
116
+ ### Godot (GDScript)
117
+
118
+ **Knowledge Base Reference**: `knowledge/godot-testing.md`
119
+
120
+ ```gdscript
121
+ extends GutTest
122
+
123
+ var _sut: {ClassName}
124
+
125
+ func before_each():
126
+ _sut = {ClassName}.new()
127
+
128
+ func after_each():
129
+ _sut.free()
130
+
131
+ func test_{method_name}_when_{condition}_should_{expectation}():
132
+ # Arrange
133
+ {setup_code}
134
+
135
+ # Act
136
+ var result = _sut.{method_name}({parameters})
137
+
138
+ # Assert
139
+ assert_eq(result, {expected}, "{assertion_message}")
140
+
141
+ func test_{method_name}_parameterized():
142
+ var test_cases = [
143
+ {{"input": {input1}, "expected": {expected1}}},
144
+ {{"input": {input2}, "expected": {expected2}}}
145
+ ]
146
+
147
+ for tc in test_cases:
148
+ var result = _sut.{method_name}(tc.input)
149
+ assert_eq(result, tc.expected)
150
+ ```
151
+
152
+ ---
153
+
154
+ ## Step 3: Generate Integration Tests
155
+
156
+ ### Scene/Level Testing
157
+
158
+ **Unity Play Mode**:
159
+
160
+ ```csharp
161
+ [UnityTest]
162
+ public IEnumerator {SceneName}_Loads_WithoutErrors()
163
+ {
164
+ SceneManager.LoadScene("{scene_name}");
165
+ yield return new WaitForSeconds(2f);
166
+
167
+ var errors = GameObject.FindObjectsOfType<ErrorHandler>()
168
+ .Where(e => e.HasErrors);
169
+
170
+ Assert.IsEmpty(errors, "Scene should load without errors");
171
+ }
172
+ ```
173
+
174
+ **Unreal Functional Test**:
175
+
176
+ ```cpp
177
+ void A{TestName}::StartTest()
178
+ {
179
+ Super::StartTest();
180
+
181
+ // Setup test scenario
182
+ {setup}
183
+
184
+ // Verify conditions
185
+ if ({condition})
186
+ {
187
+ FinishTest(EFunctionalTestResult::Succeeded, "{message}");
188
+ }
189
+ else
190
+ {
191
+ FinishTest(EFunctionalTestResult::Failed, "{failure_message}");
192
+ }
193
+ }
194
+ ```
195
+
196
+ **Godot Integration**:
197
+
198
+ ```gdscript
199
+ func test_{feature}_integration():
200
+ var scene = load("res://scenes/{scene}.tscn").instantiate()
201
+ add_child(scene)
202
+
203
+ # Wait for scene ready
204
+ await get_tree().process_frame
205
+
206
+ # Test interaction
207
+ {test_code}
208
+
209
+ # Cleanup
210
+ scene.queue_free()
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Step 4: Generate Smoke Tests
216
+
217
+ Create critical path tests that run on every build:
218
+
219
+ ```
220
+ Smoke Test Criteria:
221
+ 1. Game launches without crash
222
+ 2. Main menu is navigable
223
+ 3. New game starts successfully
224
+ 4. Core gameplay loop executes
225
+ 5. Save/load works
226
+ ```
227
+
228
+ ### Example Smoke Test
229
+
230
+ ```csharp
231
+ // Unity
232
+ [UnityTest, Timeout(60000)]
233
+ public IEnumerator Smoke_NewGame_StartsSuccessfully()
234
+ {
235
+ // Load main menu
236
+ SceneManager.LoadScene("MainMenu");
237
+ yield return new WaitForSeconds(2f);
238
+
239
+ // Start new game
240
+ var newGameButton = GameObject.Find("NewGameButton");
241
+ newGameButton.GetComponent<Button>().onClick.Invoke();
242
+
243
+ yield return new WaitForSeconds(5f);
244
+
245
+ // Verify gameplay loaded
246
+ var player = GameObject.FindWithTag("Player");
247
+ Assert.IsNotNull(player, "Player should exist after new game");
248
+ }
249
+ ```
250
+
251
+ ---
252
+
253
+ ## Step 5: Generate Test Report
254
+
255
+ After generating tests, create summary:
256
+
257
+ ```markdown
258
+ ## Automation Summary
259
+
260
+ **Engine**: {Unity | Unreal | Godot}
261
+ **Tests Generated**: {count}
262
+
263
+ ### Test Distribution
264
+
265
+ | Type | Count | Coverage |
266
+ | ----------- | ----- | ------------- |
267
+ | Unit Tests | {n} | {systems} |
268
+ | Integration | {n} | {features} |
269
+ | Smoke Tests | {n} | Critical path |
270
+
271
+ ### Files Created
272
+
273
+ - `tests/unit/{file1}.{ext}`
274
+ - `tests/unit/{file2}.{ext}`
275
+ - `tests/integration/{file3}.{ext}`
276
+
277
+ ### Next Steps
278
+
279
+ 1. Review generated tests
280
+ 2. Fill in test-specific logic
281
+ 3. Run tests to verify
282
+ 4. Add to CI pipeline
283
+ ```
284
+
285
+ ---
286
+
287
+ ## Test Patterns
288
+
289
+ ### Common Patterns to Generate
290
+
291
+ 1. **Calculator/Logic Tests** - Pure functions
292
+ 2. **State Machine Tests** - State transitions
293
+ 3. **Event Tests** - Signal/delegate firing
294
+ 4. **Resource Tests** - ScriptableObject/Resource validation
295
+ 5. **Serialization Tests** - Save/load round-trip
296
+
297
+ ### Anti-Patterns to Avoid
298
+
299
+ - Testing engine functionality
300
+ - Hard-coded waits (use signals/events)
301
+ - Tests that depend on execution order
302
+ - Tests without cleanup
303
+
304
+ ---
305
+
306
+ ## Deliverables
307
+
308
+ 1. **Unit Test Files** - Per-class test coverage
309
+ 2. **Integration Test Files** - Feature-level tests
310
+ 3. **Smoke Test Suite** - Critical path validation
311
+ 4. **Automation Summary** - Coverage report
312
+
313
+ ---
314
+
315
+ ## Validation
316
+
317
+ Refer to `checklist.md` for validation criteria.
@@ -0,0 +1,50 @@
1
+ # Game QA workflow: automate
2
+ name: gametest-automate
3
+ description: "Generate automated game tests for Unity, Unreal, or Godot based on test design scenarios"
4
+ author: "BMad"
5
+
6
+ # Critical variables from config
7
+ config_source: "{project-root}/_bmad/bmgd/config.yaml"
8
+ output_folder: "{config_source}:output_folder"
9
+ user_name: "{config_source}:user_name"
10
+ communication_language: "{config_source}:communication_language"
11
+ document_output_language: "{config_source}:document_output_language"
12
+ date: system-generated
13
+
14
+ # Workflow components
15
+ installed_path: "{project-root}/_bmad/bmgd/workflows/gametest/automate"
16
+ instructions: "{installed_path}/instructions.md"
17
+ validation: "{installed_path}/checklist.md"
18
+
19
+ # Variables and inputs
20
+ variables:
21
+ test_dir: "{project-root}/tests"
22
+ source_dir: "{project-root}/src"
23
+ coverage_target: "critical-paths" # critical-paths, comprehensive, selective
24
+ game_engine: "auto" # auto, unity, unreal, godot
25
+
26
+ # Output configuration
27
+ default_output_file: "{output_folder}/automation-summary.md"
28
+
29
+ # Required tools
30
+ required_tools:
31
+ - read_file
32
+ - write_file
33
+ - create_directory
34
+ - list_files
35
+ - search_repo
36
+ - glob
37
+
38
+ tags:
39
+ - qa
40
+ - automation
41
+ - game-testing
42
+ - regression
43
+ - coverage
44
+
45
+ execution_hints:
46
+ interactive: false
47
+ autonomous: true
48
+ iterative: true
49
+
50
+ web_bundle: false
@@ -0,0 +1,96 @@
1
+ # Performance Testing - Validation Checklist
2
+
3
+ ---
4
+
5
+ ## Prerequisites
6
+
7
+ - [ ] Target platforms identified
8
+ - [ ] Hardware specs defined (min/recommended)
9
+ - [ ] Performance targets established
10
+ - [ ] Profiling tools available
11
+
12
+ ---
13
+
14
+ ## Target Definition
15
+
16
+ - [ ] Frame rate targets per platform
17
+ - [ ] Memory budgets per platform
18
+ - [ ] Loading time targets defined
19
+ - [ ] Regression thresholds set
20
+
21
+ ---
22
+
23
+ ## Test Scenarios
24
+
25
+ ### Frame Rate Tests
26
+
27
+ - [ ] Stress test scenarios created
28
+ - [ ] Worst-case scenarios identified
29
+ - [ ] Benchmark levels available
30
+ - [ ] Automated tests possible
31
+
32
+ ### Memory Tests
33
+
34
+ - [ ] Leak detection scenarios
35
+ - [ ] Extended play scenarios
36
+ - [ ] Level transition tests
37
+ - [ ] Maximum content scenarios
38
+
39
+ ### Loading Tests
40
+
41
+ - [ ] Cold boot test defined
42
+ - [ ] Level load tests defined
43
+ - [ ] Save/load tests defined
44
+ - [ ] Fast travel tests (if applicable)
45
+
46
+ ---
47
+
48
+ ## Methodology
49
+
50
+ - [ ] Automated test framework identified
51
+ - [ ] Manual profiling checklist created
52
+ - [ ] Measurement tools specified
53
+ - [ ] Data collection process defined
54
+
55
+ ---
56
+
57
+ ## Benchmarks
58
+
59
+ - [ ] Benchmark scenarios defined
60
+ - [ ] Baseline metrics captured
61
+ - [ ] Regression criteria established
62
+ - [ ] CI integration planned
63
+
64
+ ---
65
+
66
+ ## Platform Coverage
67
+
68
+ - [ ] PC specs covered (min/recommended)
69
+ - [ ] Console modes tested (performance/quality)
70
+ - [ ] Mobile tiers addressed
71
+ - [ ] Platform-specific issues documented
72
+
73
+ ---
74
+
75
+ ## Documentation
76
+
77
+ - [ ] Performance test plan complete
78
+ - [ ] Targets documented
79
+ - [ ] Scenarios detailed
80
+ - [ ] Methodology explained
81
+ - [ ] Schedule defined
82
+
83
+ ---
84
+
85
+ ## Completion Criteria
86
+
87
+ - [ ] All platforms have performance targets
88
+ - [ ] Test scenarios cover critical areas
89
+ - [ ] Baseline metrics captured
90
+ - [ ] Automated tests in CI
91
+
92
+ ---
93
+
94
+ **Completed by:** {name}
95
+ **Date:** {date}
96
+ **Platforms:** {list}