create-byan-agent 2.1.0 → 2.1.1

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 (751) hide show
  1. package/API-BYAN-V2.md +741 -0
  2. package/BMAD-QUICK-REFERENCE.md +370 -0
  3. package/CHANGELOG-v2.1.0.md +371 -0
  4. package/LICENSE +21 -0
  5. package/MIGRATION-v2.0-to-v2.1.md +430 -0
  6. package/README-BYAN-V2.md +446 -0
  7. package/README.md +361 -0
  8. package/package.json +8 -6
  9. package/.github/agents/bmad-agent-bmad-master.md +0 -40
  10. package/.github/agents/bmad-agent-bmb-agent-builder.md +0 -15
  11. package/.github/agents/bmad-agent-bmb-module-builder.md +0 -15
  12. package/.github/agents/bmad-agent-bmb-workflow-builder.md +0 -15
  13. package/.github/agents/bmad-agent-bmm-analyst.md +0 -15
  14. package/.github/agents/bmad-agent-bmm-architect.md +0 -15
  15. package/.github/agents/bmad-agent-bmm-dev.md +0 -15
  16. package/.github/agents/bmad-agent-bmm-pm.md +0 -15
  17. package/.github/agents/bmad-agent-bmm-quick-flow-solo-dev.md +0 -15
  18. package/.github/agents/bmad-agent-bmm-quinn.md +0 -15
  19. package/.github/agents/bmad-agent-bmm-sm.md +0 -15
  20. package/.github/agents/bmad-agent-bmm-tech-writer.md +0 -15
  21. package/.github/agents/bmad-agent-bmm-ux-designer.md +0 -15
  22. package/.github/agents/bmad-agent-byan-test.md +0 -32
  23. package/.github/agents/bmad-agent-byan-v2.md +0 -44
  24. package/.github/agents/bmad-agent-byan.md +0 -251
  25. package/.github/agents/bmad-agent-carmack.md +0 -18
  26. package/.github/agents/bmad-agent-cis-brainstorming-coach.md +0 -15
  27. package/.github/agents/bmad-agent-cis-creative-problem-solver.md +0 -15
  28. package/.github/agents/bmad-agent-cis-design-thinking-coach.md +0 -15
  29. package/.github/agents/bmad-agent-cis-innovation-strategist.md +0 -15
  30. package/.github/agents/bmad-agent-cis-presentation-master.md +0 -15
  31. package/.github/agents/bmad-agent-cis-storyteller.md +0 -15
  32. package/.github/agents/bmad-agent-drawio.md +0 -44
  33. package/.github/agents/bmad-agent-marc.md +0 -98
  34. package/.github/agents/bmad-agent-patnote.md +0 -48
  35. package/.github/agents/bmad-agent-rachid.md +0 -47
  36. package/.github/agents/bmad-agent-tea-tea.md +0 -15
  37. package/.github/agents/bmad-agent-test-dynamic.md +0 -21
  38. package/.github/agents/franck.md +0 -379
  39. package/README.MD +0 -225
  40. package/__tests__/byan-v2/context/copilot-context.test.js +0 -327
  41. package/__tests__/byan-v2/context/session-state.test.js +0 -322
  42. package/__tests__/byan-v2/dispatcher/complexity-scorer.test.js +0 -358
  43. package/__tests__/byan-v2/dispatcher/five-whys-analyzer.test.js +0 -473
  44. package/__tests__/byan-v2/dispatcher/local-executor.test.js +0 -496
  45. package/__tests__/byan-v2/dispatcher/task-router.test.js +0 -265
  46. package/__tests__/byan-v2/dispatcher/task-tool-interface.test.js +0 -328
  47. package/__tests__/byan-v2/generation/agent-profile-validator.test.js +0 -386
  48. package/__tests__/byan-v2/generation/mantra-validator.test.js +0 -640
  49. package/__tests__/byan-v2/generation/profile-template.test.js +0 -338
  50. package/__tests__/byan-v2/integration/active-listening-flow.test.js +0 -577
  51. package/__tests__/byan-v2/integration/five-whys-flow.test.js +0 -559
  52. package/__tests__/byan-v2/integration/full-bmad-workflow.test.js +0 -903
  53. package/__tests__/byan-v2/integration/full-bmad-workflow.test.js.backup +0 -889
  54. package/__tests__/byan-v2/integration/glossary-flow.test.js +0 -479
  55. package/__tests__/byan-v2/integration/system-integration.test.js +0 -306
  56. package/__tests__/byan-v2/integration/voice-integration.test.js +0 -157
  57. package/__tests__/byan-v2/observability/error-tracker.test.js +0 -461
  58. package/__tests__/byan-v2/observability/logger.test.js +0 -419
  59. package/__tests__/byan-v2/observability/metrics-collector.test.js +0 -346
  60. package/__tests__/byan-v2/orchestrator/active-listener.test.js +0 -694
  61. package/__tests__/byan-v2/orchestrator/analysis-state.test.js +0 -493
  62. package/__tests__/byan-v2/orchestrator/generation-state.test.js +0 -518
  63. package/__tests__/byan-v2/orchestrator/glossary-builder.test.js +0 -464
  64. package/__tests__/byan-v2/orchestrator/interview-state.test.js +0 -470
  65. package/__tests__/byan-v2/orchestrator/state-machine.test.js +0 -495
  66. package/__tests__/cache.test.js +0 -241
  67. package/__tests__/context.test.js +0 -135
  68. package/__tests__/dashboard.test.js +0 -444
  69. package/__tests__/dispatcher.test.js +0 -245
  70. package/__tests__/integration.test.js +0 -163
  71. package/__tests__/metrics-collector.test.js +0 -433
  72. package/__tests__/structured-logger.test.js +0 -358
  73. package/__tests__/worker-pool.test.js +0 -343
  74. package/__tests__/workflow-executor.test.js +0 -356
  75. package/_bmad/_config/agent-manifest.csv +0 -25
  76. package/_bmad/_config/agents/bmb-agent-builder.customize.yaml +0 -41
  77. package/_bmad/_config/agents/bmb-module-builder.customize.yaml +0 -41
  78. package/_bmad/_config/agents/bmb-workflow-builder.customize.yaml +0 -41
  79. package/_bmad/_config/agents/bmm-analyst.customize.yaml +0 -41
  80. package/_bmad/_config/agents/bmm-architect.customize.yaml +0 -41
  81. package/_bmad/_config/agents/bmm-dev.customize.yaml +0 -41
  82. package/_bmad/_config/agents/bmm-pm.customize.yaml +0 -41
  83. package/_bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +0 -41
  84. package/_bmad/_config/agents/bmm-quinn.customize.yaml +0 -41
  85. package/_bmad/_config/agents/bmm-sm.customize.yaml +0 -41
  86. package/_bmad/_config/agents/bmm-tech-writer.customize.yaml +0 -41
  87. package/_bmad/_config/agents/bmm-ux-designer.customize.yaml +0 -41
  88. package/_bmad/_config/agents/byan.customize.yaml +0 -29
  89. package/_bmad/_config/agents/cis-brainstorming-coach.customize.yaml +0 -41
  90. package/_bmad/_config/agents/cis-creative-problem-solver.customize.yaml +0 -41
  91. package/_bmad/_config/agents/cis-design-thinking-coach.customize.yaml +0 -41
  92. package/_bmad/_config/agents/cis-innovation-strategist.customize.yaml +0 -41
  93. package/_bmad/_config/agents/cis-presentation-master.customize.yaml +0 -41
  94. package/_bmad/_config/agents/cis-storyteller.customize.yaml +0 -41
  95. package/_bmad/_config/agents/core-bmad-master.customize.yaml +0 -41
  96. package/_bmad/_config/agents/tea-tea.customize.yaml +0 -41
  97. package/_bmad/_config/bmad-help.csv +0 -72
  98. package/_bmad/_config/files-manifest.csv +0 -607
  99. package/_bmad/_config/ides/codex.yaml +0 -5
  100. package/_bmad/_config/manifest.yaml +0 -43
  101. package/_bmad/_config/task-manifest.csv +0 -9
  102. package/_bmad/_config/tool-manifest.csv +0 -1
  103. package/_bmad/_config/workflow-manifest.csv +0 -46
  104. package/_bmad/_memory/config.yaml +0 -11
  105. package/_bmad/_memory/storyteller-sidecar/stories-told.md +0 -7
  106. package/_bmad/_memory/storyteller-sidecar/story-preferences.md +0 -7
  107. package/_bmad/_memory/tech-writer-sidecar/documentation-standards.md +0 -224
  108. package/_bmad/bmb/agents/agent-builder.md +0 -59
  109. package/_bmad/bmb/agents/byan-test.md +0 -116
  110. package/_bmad/bmb/agents/byan.backup.20260202_212559.md +0 -215
  111. package/_bmad/bmb/agents/byan.md +0 -215
  112. package/_bmad/bmb/agents/byan.optimized-v2.md +0 -116
  113. package/_bmad/bmb/agents/byan.optimized.md +0 -189
  114. package/_bmad/bmb/agents/drawio.md +0 -359
  115. package/_bmad/bmb/agents/marc.md +0 -351
  116. package/_bmad/bmb/agents/module-builder.md +0 -60
  117. package/_bmad/bmb/agents/patnote.md +0 -495
  118. package/_bmad/bmb/agents/rachid.md +0 -184
  119. package/_bmad/bmb/agents/turbo-whisper-integration.md +0 -312
  120. package/_bmad/bmb/agents/workflow-builder.md +0 -61
  121. package/_bmad/bmb/config.yaml +0 -12
  122. package/_bmad/bmb/module-help.csv +0 -13
  123. package/_bmad/bmb/workflows/agent/data/agent-compilation.md +0 -273
  124. package/_bmad/bmb/workflows/agent/data/agent-menu-patterns.md +0 -233
  125. package/_bmad/bmb/workflows/agent/data/agent-metadata.md +0 -208
  126. package/_bmad/bmb/workflows/agent/data/brainstorm-context.md +0 -146
  127. package/_bmad/bmb/workflows/agent/data/communication-presets.csv +0 -61
  128. package/_bmad/bmb/workflows/agent/data/critical-actions.md +0 -120
  129. package/_bmad/bmb/workflows/agent/data/expert-agent-architecture.md +0 -236
  130. package/_bmad/bmb/workflows/agent/data/expert-agent-validation.md +0 -174
  131. package/_bmad/bmb/workflows/agent/data/module-agent-validation.md +0 -126
  132. package/_bmad/bmb/workflows/agent/data/persona-properties.md +0 -266
  133. package/_bmad/bmb/workflows/agent/data/principles-crafting.md +0 -292
  134. package/_bmad/bmb/workflows/agent/data/reference/module-examples/architect.md +0 -68
  135. package/_bmad/bmb/workflows/agent/data/simple-agent-architecture.md +0 -204
  136. package/_bmad/bmb/workflows/agent/data/simple-agent-validation.md +0 -133
  137. package/_bmad/bmb/workflows/agent/data/understanding-agent-types.md +0 -222
  138. package/_bmad/bmb/workflows/agent/steps-c/step-01-brainstorm.md +0 -128
  139. package/_bmad/bmb/workflows/agent/steps-c/step-02-discovery.md +0 -170
  140. package/_bmad/bmb/workflows/agent/steps-c/step-03-type-metadata.md +0 -296
  141. package/_bmad/bmb/workflows/agent/steps-c/step-04-persona.md +0 -212
  142. package/_bmad/bmb/workflows/agent/steps-c/step-05-commands-menu.md +0 -178
  143. package/_bmad/bmb/workflows/agent/steps-c/step-06-activation.md +0 -279
  144. package/_bmad/bmb/workflows/agent/steps-c/step-07a-build-simple.md +0 -187
  145. package/_bmad/bmb/workflows/agent/steps-c/step-07b-build-expert.md +0 -201
  146. package/_bmad/bmb/workflows/agent/steps-c/step-07c-build-module.md +0 -258
  147. package/_bmad/bmb/workflows/agent/steps-c/step-08-celebrate.md +0 -249
  148. package/_bmad/bmb/workflows/agent/steps-e/e-01-load-existing.md +0 -221
  149. package/_bmad/bmb/workflows/agent/steps-e/e-02-discover-edits.md +0 -193
  150. package/_bmad/bmb/workflows/agent/steps-e/e-03-placeholder.md +0 -1
  151. package/_bmad/bmb/workflows/agent/steps-e/e-04-type-metadata.md +0 -124
  152. package/_bmad/bmb/workflows/agent/steps-e/e-05-persona.md +0 -134
  153. package/_bmad/bmb/workflows/agent/steps-e/e-06-commands-menu.md +0 -122
  154. package/_bmad/bmb/workflows/agent/steps-e/e-07-activation.md +0 -125
  155. package/_bmad/bmb/workflows/agent/steps-e/e-08a-edit-simple.md +0 -137
  156. package/_bmad/bmb/workflows/agent/steps-e/e-08b-edit-expert.md +0 -119
  157. package/_bmad/bmb/workflows/agent/steps-e/e-08c-edit-module.md +0 -123
  158. package/_bmad/bmb/workflows/agent/steps-e/e-09-celebrate.md +0 -155
  159. package/_bmad/bmb/workflows/agent/steps-v/v-01-load-review.md +0 -136
  160. package/_bmad/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +0 -116
  161. package/_bmad/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +0 -124
  162. package/_bmad/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +0 -145
  163. package/_bmad/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +0 -136
  164. package/_bmad/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +0 -136
  165. package/_bmad/bmb/workflows/agent/steps-v/v-03-summary.md +0 -104
  166. package/_bmad/bmb/workflows/agent/templates/agent-plan.template.md +0 -5
  167. package/_bmad/bmb/workflows/agent/templates/expert-agent-template/expert-agent.template.md +0 -77
  168. package/_bmad/bmb/workflows/agent/templates/simple-agent.template.md +0 -72
  169. package/_bmad/bmb/workflows/agent/workflow.md +0 -123
  170. package/_bmad/bmb/workflows/byan/data/mantras.yaml +0 -272
  171. package/_bmad/bmb/workflows/byan/data/templates.yaml +0 -59
  172. package/_bmad/bmb/workflows/byan/delete-agent-workflow.md +0 -657
  173. package/_bmad/bmb/workflows/byan/edit-agent-workflow.md +0 -688
  174. package/_bmad/bmb/workflows/byan/interview-workflow.md +0 -753
  175. package/_bmad/bmb/workflows/byan/quick-create-workflow.md +0 -450
  176. package/_bmad/bmb/workflows/byan/templates/base-agent-template.md +0 -79
  177. package/_bmad/bmb/workflows/byan/validate-agent-workflow.md +0 -676
  178. package/_bmad/bmb/workflows/module/data/agent-architecture.md +0 -179
  179. package/_bmad/bmb/workflows/module/data/agent-spec-template.md +0 -79
  180. package/_bmad/bmb/workflows/module/data/module-installer-standards.md +0 -348
  181. package/_bmad/bmb/workflows/module/data/module-standards.md +0 -280
  182. package/_bmad/bmb/workflows/module/data/module-yaml-conventions.md +0 -392
  183. package/_bmad/bmb/workflows/module/steps-b/step-01-welcome.md +0 -147
  184. package/_bmad/bmb/workflows/module/steps-b/step-02-spark.md +0 -140
  185. package/_bmad/bmb/workflows/module/steps-b/step-03-module-type.md +0 -148
  186. package/_bmad/bmb/workflows/module/steps-b/step-04-vision.md +0 -82
  187. package/_bmad/bmb/workflows/module/steps-b/step-05-identity.md +0 -96
  188. package/_bmad/bmb/workflows/module/steps-b/step-06-users.md +0 -85
  189. package/_bmad/bmb/workflows/module/steps-b/step-07-value.md +0 -75
  190. package/_bmad/bmb/workflows/module/steps-b/step-08-agents.md +0 -96
  191. package/_bmad/bmb/workflows/module/steps-b/step-09-workflows.md +0 -82
  192. package/_bmad/bmb/workflows/module/steps-b/step-10-tools.md +0 -90
  193. package/_bmad/bmb/workflows/module/steps-b/step-11-scenarios.md +0 -83
  194. package/_bmad/bmb/workflows/module/steps-b/step-12-creative.md +0 -94
  195. package/_bmad/bmb/workflows/module/steps-b/step-13-review.md +0 -104
  196. package/_bmad/bmb/workflows/module/steps-b/step-14-finalize.md +0 -117
  197. package/_bmad/bmb/workflows/module/steps-c/step-01-load-brief.md +0 -178
  198. package/_bmad/bmb/workflows/module/steps-c/step-01b-continue.md +0 -83
  199. package/_bmad/bmb/workflows/module/steps-c/step-02-structure.md +0 -109
  200. package/_bmad/bmb/workflows/module/steps-c/step-03-config.md +0 -118
  201. package/_bmad/bmb/workflows/module/steps-c/step-04-installer.md +0 -160
  202. package/_bmad/bmb/workflows/module/steps-c/step-05-agents.md +0 -167
  203. package/_bmad/bmb/workflows/module/steps-c/step-06-workflows.md +0 -183
  204. package/_bmad/bmb/workflows/module/steps-c/step-07-docs.md +0 -402
  205. package/_bmad/bmb/workflows/module/steps-c/step-08-complete.md +0 -123
  206. package/_bmad/bmb/workflows/module/steps-e/step-01-load-target.md +0 -81
  207. package/_bmad/bmb/workflows/module/steps-e/step-02-select-edit.md +0 -77
  208. package/_bmad/bmb/workflows/module/steps-e/step-03-apply-edit.md +0 -77
  209. package/_bmad/bmb/workflows/module/steps-e/step-04-review.md +0 -80
  210. package/_bmad/bmb/workflows/module/steps-e/step-05-confirm.md +0 -75
  211. package/_bmad/bmb/workflows/module/steps-v/step-01-load-target.md +0 -96
  212. package/_bmad/bmb/workflows/module/steps-v/step-02-file-structure.md +0 -94
  213. package/_bmad/bmb/workflows/module/steps-v/step-03-module-yaml.md +0 -99
  214. package/_bmad/bmb/workflows/module/steps-v/step-04-agent-specs.md +0 -152
  215. package/_bmad/bmb/workflows/module/steps-v/step-05-workflow-specs.md +0 -152
  216. package/_bmad/bmb/workflows/module/steps-v/step-06-documentation.md +0 -143
  217. package/_bmad/bmb/workflows/module/steps-v/step-07-installation.md +0 -113
  218. package/_bmad/bmb/workflows/module/steps-v/step-08-report.md +0 -197
  219. package/_bmad/bmb/workflows/module/templates/brief-template.md +0 -154
  220. package/_bmad/bmb/workflows/module/templates/workflow-spec-template.md +0 -96
  221. package/_bmad/bmb/workflows/module/workflow.md +0 -100
  222. package/_bmad/bmb/workflows/turbo-whisper/configure-workflow.md +0 -488
  223. package/_bmad/bmb/workflows/turbo-whisper/docker-setup-workflow.md +0 -478
  224. package/_bmad/bmb/workflows/turbo-whisper/install-workflow.md +0 -426
  225. package/_bmad/bmb/workflows/turbo-whisper/integrate-workflow.md +0 -510
  226. package/_bmad/bmb/workflows/workflow/data/architecture.md +0 -152
  227. package/_bmad/bmb/workflows/workflow/data/common-workflow-tools.csv +0 -19
  228. package/_bmad/bmb/workflows/workflow/data/csv-data-file-standards.md +0 -81
  229. package/_bmad/bmb/workflows/workflow/data/frontmatter-standards.md +0 -225
  230. package/_bmad/bmb/workflows/workflow/data/input-discovery-standards.md +0 -269
  231. package/_bmad/bmb/workflows/workflow/data/intent-vs-prescriptive-spectrum.md +0 -50
  232. package/_bmad/bmb/workflows/workflow/data/menu-handling-standards.md +0 -167
  233. package/_bmad/bmb/workflows/workflow/data/output-format-standards.md +0 -188
  234. package/_bmad/bmb/workflows/workflow/data/step-file-rules.md +0 -235
  235. package/_bmad/bmb/workflows/workflow/data/step-type-patterns.md +0 -311
  236. package/_bmad/bmb/workflows/workflow/data/subprocess-optimization-patterns.md +0 -386
  237. package/_bmad/bmb/workflows/workflow/data/trimodal-workflow-structure.md +0 -209
  238. package/_bmad/bmb/workflows/workflow/data/workflow-chaining-standards.md +0 -271
  239. package/_bmad/bmb/workflows/workflow/data/workflow-examples.md +0 -276
  240. package/_bmad/bmb/workflows/workflow/data/workflow-type-criteria.md +0 -172
  241. package/_bmad/bmb/workflows/workflow/steps-c/step-00-conversion.md +0 -262
  242. package/_bmad/bmb/workflows/workflow/steps-c/step-01-discovery.md +0 -194
  243. package/_bmad/bmb/workflows/workflow/steps-c/step-01b-continuation.md +0 -3
  244. package/_bmad/bmb/workflows/workflow/steps-c/step-02-classification.md +0 -269
  245. package/_bmad/bmb/workflows/workflow/steps-c/step-03-requirements.md +0 -282
  246. package/_bmad/bmb/workflows/workflow/steps-c/step-04-tools.md +0 -281
  247. package/_bmad/bmb/workflows/workflow/steps-c/step-05-plan-review.md +0 -242
  248. package/_bmad/bmb/workflows/workflow/steps-c/step-06-design.md +0 -329
  249. package/_bmad/bmb/workflows/workflow/steps-c/step-07-foundation.md +0 -238
  250. package/_bmad/bmb/workflows/workflow/steps-c/step-08-build-step-01.md +0 -377
  251. package/_bmad/bmb/workflows/workflow/steps-c/step-09-build-next-step.md +0 -350
  252. package/_bmad/bmb/workflows/workflow/steps-c/step-10-confirmation.md +0 -320
  253. package/_bmad/bmb/workflows/workflow/steps-c/step-11-completion.md +0 -191
  254. package/_bmad/bmb/workflows/workflow/steps-e/step-e-01-assess-workflow.md +0 -237
  255. package/_bmad/bmb/workflows/workflow/steps-e/step-e-02-discover-edits.md +0 -248
  256. package/_bmad/bmb/workflows/workflow/steps-e/step-e-03-fix-validation.md +0 -252
  257. package/_bmad/bmb/workflows/workflow/steps-e/step-e-04-direct-edit.md +0 -275
  258. package/_bmad/bmb/workflows/workflow/steps-e/step-e-05-apply-edit.md +0 -154
  259. package/_bmad/bmb/workflows/workflow/steps-e/step-e-06-validate-after.md +0 -190
  260. package/_bmad/bmb/workflows/workflow/steps-e/step-e-07-complete.md +0 -206
  261. package/_bmad/bmb/workflows/workflow/steps-v/step-01-validate-max-mode.md +0 -109
  262. package/_bmad/bmb/workflows/workflow/steps-v/step-01-validate.md +0 -221
  263. package/_bmad/bmb/workflows/workflow/steps-v/step-01b-structure.md +0 -152
  264. package/_bmad/bmb/workflows/workflow/steps-v/step-02-frontmatter-validation.md +0 -199
  265. package/_bmad/bmb/workflows/workflow/steps-v/step-02b-path-violations.md +0 -265
  266. package/_bmad/bmb/workflows/workflow/steps-v/step-03-menu-validation.md +0 -164
  267. package/_bmad/bmb/workflows/workflow/steps-v/step-04-step-type-validation.md +0 -211
  268. package/_bmad/bmb/workflows/workflow/steps-v/step-05-output-format-validation.md +0 -200
  269. package/_bmad/bmb/workflows/workflow/steps-v/step-06-validation-design-check.md +0 -195
  270. package/_bmad/bmb/workflows/workflow/steps-v/step-07-instruction-style-check.md +0 -209
  271. package/_bmad/bmb/workflows/workflow/steps-v/step-08-collaborative-experience-check.md +0 -199
  272. package/_bmad/bmb/workflows/workflow/steps-v/step-08b-subprocess-optimization.md +0 -179
  273. package/_bmad/bmb/workflows/workflow/steps-v/step-09-cohesive-review.md +0 -186
  274. package/_bmad/bmb/workflows/workflow/steps-v/step-10-report-complete.md +0 -154
  275. package/_bmad/bmb/workflows/workflow/steps-v/step-11-plan-validation.md +0 -237
  276. package/_bmad/bmb/workflows/workflow/templates/minimal-output-template.md +0 -11
  277. package/_bmad/bmb/workflows/workflow/templates/step-01-init-continuable-template.md +0 -241
  278. package/_bmad/bmb/workflows/workflow/templates/step-1b-template.md +0 -223
  279. package/_bmad/bmb/workflows/workflow/templates/step-template.md +0 -290
  280. package/_bmad/bmb/workflows/workflow/templates/workflow-template.md +0 -102
  281. package/_bmad/bmb/workflows/workflow/workflow.md +0 -109
  282. package/_bmad/bmm/agents/analyst.md +0 -76
  283. package/_bmad/bmm/agents/architect.md +0 -58
  284. package/_bmad/bmm/agents/dev.md +0 -69
  285. package/_bmad/bmm/agents/expert-merise-agile.md +0 -177
  286. package/_bmad/bmm/agents/pm.md +0 -72
  287. package/_bmad/bmm/agents/quick-flow-solo-dev.md +0 -69
  288. package/_bmad/bmm/agents/quinn.md +0 -92
  289. package/_bmad/bmm/agents/sm.md +0 -70
  290. package/_bmad/bmm/agents/tech-writer/tech-writer.md +0 -70
  291. package/_bmad/bmm/agents/ux-designer.md +0 -57
  292. package/_bmad/bmm/config.yaml +0 -16
  293. package/_bmad/bmm/data/project-context-template.md +0 -26
  294. package/_bmad/bmm/module-help.csv +0 -38
  295. package/_bmad/bmm/teams/default-party.csv +0 -20
  296. package/_bmad/bmm/teams/team-fullstack.yaml +0 -12
  297. package/_bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +0 -10
  298. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +0 -177
  299. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +0 -161
  300. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +0 -199
  301. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +0 -202
  302. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +0 -205
  303. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +0 -219
  304. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +0 -162
  305. package/_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +0 -58
  306. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +0 -137
  307. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +0 -229
  308. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +0 -238
  309. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +0 -206
  310. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +0 -234
  311. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +0 -443
  312. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +0 -182
  313. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +0 -237
  314. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +0 -249
  315. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +0 -259
  316. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +0 -177
  317. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +0 -475
  318. package/_bmad/bmm/workflows/1-analysis/research/research.template.md +0 -29
  319. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +0 -137
  320. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +0 -239
  321. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +0 -248
  322. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +0 -202
  323. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +0 -239
  324. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +0 -486
  325. package/_bmad/bmm/workflows/1-analysis/research/workflow.md +0 -173
  326. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +0 -13
  327. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +0 -197
  328. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +0 -11
  329. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +0 -191
  330. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +0 -153
  331. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +0 -224
  332. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +0 -226
  333. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +0 -213
  334. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +0 -207
  335. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +0 -226
  336. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +0 -237
  337. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +0 -228
  338. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +0 -231
  339. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +0 -242
  340. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +0 -217
  341. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +0 -124
  342. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +0 -247
  343. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +0 -208
  344. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +0 -249
  345. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +0 -253
  346. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +0 -168
  347. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +0 -218
  348. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +0 -191
  349. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +0 -209
  350. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +0 -174
  351. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -214
  352. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +0 -228
  353. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +0 -217
  354. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -205
  355. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -243
  356. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +0 -263
  357. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +0 -209
  358. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -264
  359. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +0 -242
  360. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +0 -231
  361. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +0 -10
  362. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +0 -433
  363. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow.md +0 -150
  364. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +0 -135
  365. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +0 -127
  366. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +0 -190
  367. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +0 -216
  368. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +0 -219
  369. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +0 -234
  370. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +0 -252
  371. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +0 -254
  372. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +0 -224
  373. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +0 -224
  374. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +0 -241
  375. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +0 -248
  376. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +0 -237
  377. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +0 -264
  378. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +0 -171
  379. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -13
  380. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +0 -43
  381. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +0 -190
  382. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +0 -178
  383. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -179
  384. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +0 -139
  385. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -252
  386. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +0 -135
  387. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +0 -4
  388. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +0 -55
  389. package/_bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +0 -12
  390. package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +0 -11
  391. package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +0 -7
  392. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +0 -153
  393. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +0 -164
  394. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +0 -224
  395. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +0 -331
  396. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +0 -318
  397. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +0 -359
  398. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +0 -379
  399. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +0 -359
  400. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +0 -76
  401. package/_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +0 -50
  402. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -259
  403. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +0 -233
  404. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +0 -272
  405. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +0 -149
  406. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +0 -57
  407. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +0 -59
  408. package/_bmad/bmm/workflows/4-implementation/code-review/checklist.md +0 -23
  409. package/_bmad/bmm/workflows/4-implementation/code-review/instructions.xml +0 -227
  410. package/_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -50
  411. package/_bmad/bmm/workflows/4-implementation/correct-course/checklist.md +0 -288
  412. package/_bmad/bmm/workflows/4-implementation/correct-course/instructions.md +0 -206
  413. package/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -58
  414. package/_bmad/bmm/workflows/4-implementation/create-story/checklist.md +0 -358
  415. package/_bmad/bmm/workflows/4-implementation/create-story/instructions.xml +0 -345
  416. package/_bmad/bmm/workflows/4-implementation/create-story/template.md +0 -49
  417. package/_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -59
  418. package/_bmad/bmm/workflows/4-implementation/dev-story/checklist.md +0 -80
  419. package/_bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +0 -410
  420. package/_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -25
  421. package/_bmad/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1443
  422. package/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -57
  423. package/_bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -33
  424. package/_bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -225
  425. package/_bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
  426. package/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -53
  427. package/_bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +0 -229
  428. package/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +0 -35
  429. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +0 -176
  430. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +0 -120
  431. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +0 -113
  432. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +0 -113
  433. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +0 -106
  434. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +0 -149
  435. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +0 -50
  436. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +0 -192
  437. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +0 -145
  438. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +0 -128
  439. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +0 -201
  440. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +0 -74
  441. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +0 -79
  442. package/_bmad/bmm/workflows/document-project/checklist.md +0 -245
  443. package/_bmad/bmm/workflows/document-project/documentation-requirements.csv +0 -12
  444. package/_bmad/bmm/workflows/document-project/instructions.md +0 -221
  445. package/_bmad/bmm/workflows/document-project/templates/deep-dive-template.md +0 -345
  446. package/_bmad/bmm/workflows/document-project/templates/index-template.md +0 -169
  447. package/_bmad/bmm/workflows/document-project/templates/project-overview-template.md +0 -103
  448. package/_bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
  449. package/_bmad/bmm/workflows/document-project/templates/source-tree-template.md +0 -135
  450. package/_bmad/bmm/workflows/document-project/workflow.yaml +0 -28
  451. package/_bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
  452. package/_bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
  453. package/_bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
  454. package/_bmad/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
  455. package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +0 -90
  456. package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +0 -127
  457. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +0 -39
  458. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +0 -130
  459. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +0 -26
  460. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +0 -43
  461. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +0 -141
  462. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +0 -26
  463. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +0 -49
  464. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +0 -241
  465. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +0 -26
  466. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +0 -38
  467. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +0 -133
  468. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +0 -26
  469. package/_bmad/bmm/workflows/generate-project-context/project-context-template.md +0 -21
  470. package/_bmad/bmm/workflows/generate-project-context/steps/step-01-discover.md +0 -184
  471. package/_bmad/bmm/workflows/generate-project-context/steps/step-02-generate.md +0 -318
  472. package/_bmad/bmm/workflows/generate-project-context/steps/step-03-complete.md +0 -278
  473. package/_bmad/bmm/workflows/generate-project-context/workflow.md +0 -49
  474. package/_bmad/bmm/workflows/qa/automate/checklist.md +0 -33
  475. package/_bmad/bmm/workflows/qa/automate/instructions.md +0 -110
  476. package/_bmad/bmm/workflows/qa/automate/workflow.yaml +0 -47
  477. package/_bmad/cis/agents/brainstorming-coach.md +0 -61
  478. package/_bmad/cis/agents/creative-problem-solver.md +0 -61
  479. package/_bmad/cis/agents/design-thinking-coach.md +0 -61
  480. package/_bmad/cis/agents/innovation-strategist.md +0 -61
  481. package/_bmad/cis/agents/presentation-master.md +0 -67
  482. package/_bmad/cis/agents/storyteller/storyteller.md +0 -58
  483. package/_bmad/cis/config.yaml +0 -12
  484. package/_bmad/cis/module-help.csv +0 -6
  485. package/_bmad/cis/teams/creative-squad.yaml +0 -7
  486. package/_bmad/cis/teams/default-party.csv +0 -12
  487. package/_bmad/cis/workflows/README.md +0 -139
  488. package/_bmad/cis/workflows/design-thinking/README.md +0 -56
  489. package/_bmad/cis/workflows/design-thinking/design-methods.csv +0 -31
  490. package/_bmad/cis/workflows/design-thinking/instructions.md +0 -202
  491. package/_bmad/cis/workflows/design-thinking/template.md +0 -111
  492. package/_bmad/cis/workflows/design-thinking/workflow.yaml +0 -27
  493. package/_bmad/cis/workflows/innovation-strategy/README.md +0 -56
  494. package/_bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +0 -31
  495. package/_bmad/cis/workflows/innovation-strategy/instructions.md +0 -276
  496. package/_bmad/cis/workflows/innovation-strategy/template.md +0 -189
  497. package/_bmad/cis/workflows/innovation-strategy/workflow.yaml +0 -27
  498. package/_bmad/cis/workflows/problem-solving/README.md +0 -56
  499. package/_bmad/cis/workflows/problem-solving/instructions.md +0 -252
  500. package/_bmad/cis/workflows/problem-solving/solving-methods.csv +0 -31
  501. package/_bmad/cis/workflows/problem-solving/template.md +0 -165
  502. package/_bmad/cis/workflows/problem-solving/workflow.yaml +0 -27
  503. package/_bmad/cis/workflows/storytelling/README.md +0 -58
  504. package/_bmad/cis/workflows/storytelling/instructions.md +0 -293
  505. package/_bmad/cis/workflows/storytelling/story-types.csv +0 -26
  506. package/_bmad/cis/workflows/storytelling/template.md +0 -113
  507. package/_bmad/cis/workflows/storytelling/workflow.yaml +0 -27
  508. package/_bmad/core/agents/bmad-master.md +0 -56
  509. package/_bmad/core/agents/carmack.md +0 -238
  510. package/_bmad/core/agents/test-dynamic.md +0 -40
  511. package/_bmad/core/base/bmad-base-agent.md +0 -42
  512. package/_bmad/core/config.yaml +0 -9
  513. package/_bmad/core/module-help.csv +0 -9
  514. package/_bmad/core/resources/excalidraw/README.md +0 -160
  515. package/_bmad/core/resources/excalidraw/excalidraw-helpers.md +0 -127
  516. package/_bmad/core/resources/excalidraw/library-loader.md +0 -50
  517. package/_bmad/core/resources/excalidraw/validate-json-instructions.md +0 -79
  518. package/_bmad/core/tasks/editorial-review-prose.xml +0 -100
  519. package/_bmad/core/tasks/editorial-review-structure.xml +0 -209
  520. package/_bmad/core/tasks/help.md +0 -62
  521. package/_bmad/core/tasks/index-docs.xml +0 -65
  522. package/_bmad/core/tasks/review-adversarial-general.xml +0 -48
  523. package/_bmad/core/tasks/shard-doc.xml +0 -109
  524. package/_bmad/core/tasks/workflow.xml +0 -235
  525. package/_bmad/core/workflows/advanced-elicitation/methods.csv +0 -51
  526. package/_bmad/core/workflows/advanced-elicitation/workflow.xml +0 -117
  527. package/_bmad/core/workflows/brainstorming/brain-methods.csv +0 -62
  528. package/_bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +0 -197
  529. package/_bmad/core/workflows/brainstorming/steps/step-01b-continue.md +0 -122
  530. package/_bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +0 -225
  531. package/_bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +0 -237
  532. package/_bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +0 -209
  533. package/_bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +0 -264
  534. package/_bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +0 -399
  535. package/_bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +0 -303
  536. package/_bmad/core/workflows/brainstorming/template.md +0 -15
  537. package/_bmad/core/workflows/brainstorming/workflow.md +0 -58
  538. package/_bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +0 -138
  539. package/_bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +0 -187
  540. package/_bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +0 -157
  541. package/_bmad/core/workflows/party-mode/workflow.md +0 -194
  542. package/_bmad/tea/agents/tea.md +0 -71
  543. package/_bmad/tea/config.yaml +0 -19
  544. package/_bmad/tea/module-help.csv +0 -10
  545. package/_bmad/tea/teams/default-party.csv +0 -2
  546. package/_bmad/tea/testarch/knowledge/adr-quality-readiness-checklist.md +0 -377
  547. package/_bmad/tea/testarch/knowledge/api-request.md +0 -442
  548. package/_bmad/tea/testarch/knowledge/api-testing-patterns.md +0 -851
  549. package/_bmad/tea/testarch/knowledge/auth-session.md +0 -548
  550. package/_bmad/tea/testarch/knowledge/burn-in.md +0 -273
  551. package/_bmad/tea/testarch/knowledge/ci-burn-in.md +0 -675
  552. package/_bmad/tea/testarch/knowledge/component-tdd.md +0 -486
  553. package/_bmad/tea/testarch/knowledge/contract-testing.md +0 -957
  554. package/_bmad/tea/testarch/knowledge/data-factories.md +0 -500
  555. package/_bmad/tea/testarch/knowledge/email-auth.md +0 -721
  556. package/_bmad/tea/testarch/knowledge/error-handling.md +0 -725
  557. package/_bmad/tea/testarch/knowledge/feature-flags.md +0 -750
  558. package/_bmad/tea/testarch/knowledge/file-utils.md +0 -456
  559. package/_bmad/tea/testarch/knowledge/fixture-architecture.md +0 -401
  560. package/_bmad/tea/testarch/knowledge/fixtures-composition.md +0 -382
  561. package/_bmad/tea/testarch/knowledge/intercept-network-call.md +0 -426
  562. package/_bmad/tea/testarch/knowledge/log.md +0 -426
  563. package/_bmad/tea/testarch/knowledge/network-error-monitor.md +0 -401
  564. package/_bmad/tea/testarch/knowledge/network-first.md +0 -486
  565. package/_bmad/tea/testarch/knowledge/network-recorder.md +0 -527
  566. package/_bmad/tea/testarch/knowledge/nfr-criteria.md +0 -670
  567. package/_bmad/tea/testarch/knowledge/overview.md +0 -286
  568. package/_bmad/tea/testarch/knowledge/playwright-config.md +0 -730
  569. package/_bmad/tea/testarch/knowledge/probability-impact.md +0 -601
  570. package/_bmad/tea/testarch/knowledge/recurse.md +0 -421
  571. package/_bmad/tea/testarch/knowledge/risk-governance.md +0 -615
  572. package/_bmad/tea/testarch/knowledge/selective-testing.md +0 -732
  573. package/_bmad/tea/testarch/knowledge/selector-resilience.md +0 -527
  574. package/_bmad/tea/testarch/knowledge/test-healing-patterns.md +0 -644
  575. package/_bmad/tea/testarch/knowledge/test-levels-framework.md +0 -473
  576. package/_bmad/tea/testarch/knowledge/test-priorities-matrix.md +0 -373
  577. package/_bmad/tea/testarch/knowledge/test-quality.md +0 -664
  578. package/_bmad/tea/testarch/knowledge/timing-debugging.md +0 -372
  579. package/_bmad/tea/testarch/knowledge/visual-debugging.md +0 -524
  580. package/_bmad/tea/testarch/tea-index.csv +0 -35
  581. package/_bmad/tea/workflows/testarch/README.md +0 -74
  582. package/_bmad/tea/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
  583. package/_bmad/tea/workflows/testarch/atdd/checklist.md +0 -374
  584. package/_bmad/tea/workflows/testarch/atdd/instructions.md +0 -38
  585. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +0 -110
  586. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-02-generation-mode.md +0 -79
  587. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-03-test-strategy.md +0 -76
  588. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04-generate-tests.md +0 -228
  589. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04a-subprocess-api-failing.md +0 -215
  590. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04b-subprocess-e2e-failing.md +0 -212
  591. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04c-aggregate.md +0 -329
  592. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-05-validate-and-complete.md +0 -68
  593. package/_bmad/tea/workflows/testarch/atdd/steps-e/step-01-assess.md +0 -65
  594. package/_bmad/tea/workflows/testarch/atdd/steps-e/step-02-apply-edit.md +0 -60
  595. package/_bmad/tea/workflows/testarch/atdd/steps-v/step-01-validate.md +0 -67
  596. package/_bmad/tea/workflows/testarch/atdd/validation-report-20260127-095021.md +0 -73
  597. package/_bmad/tea/workflows/testarch/atdd/validation-report-20260127-102401.md +0 -116
  598. package/_bmad/tea/workflows/testarch/atdd/workflow-plan.md +0 -21
  599. package/_bmad/tea/workflows/testarch/atdd/workflow.md +0 -39
  600. package/_bmad/tea/workflows/testarch/atdd/workflow.yaml +0 -45
  601. package/_bmad/tea/workflows/testarch/automate/checklist.md +0 -582
  602. package/_bmad/tea/workflows/testarch/automate/instructions.md +0 -43
  603. package/_bmad/tea/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +0 -127
  604. package/_bmad/tea/workflows/testarch/automate/steps-c/step-02-identify-targets.md +0 -95
  605. package/_bmad/tea/workflows/testarch/automate/steps-c/step-03-generate-tests.md +0 -199
  606. package/_bmad/tea/workflows/testarch/automate/steps-c/step-03a-subprocess-api.md +0 -183
  607. package/_bmad/tea/workflows/testarch/automate/steps-c/step-03b-subprocess-e2e.md +0 -181
  608. package/_bmad/tea/workflows/testarch/automate/steps-c/step-03c-aggregate.md +0 -300
  609. package/_bmad/tea/workflows/testarch/automate/steps-c/step-04-validate-and-summarize.md +0 -69
  610. package/_bmad/tea/workflows/testarch/automate/steps-e/step-01-assess.md +0 -65
  611. package/_bmad/tea/workflows/testarch/automate/steps-e/step-02-apply-edit.md +0 -60
  612. package/_bmad/tea/workflows/testarch/automate/steps-v/step-01-validate.md +0 -67
  613. package/_bmad/tea/workflows/testarch/automate/validation-report-20260127-095021.md +0 -72
  614. package/_bmad/tea/workflows/testarch/automate/validation-report-20260127-102401.md +0 -114
  615. package/_bmad/tea/workflows/testarch/automate/workflow-plan.md +0 -20
  616. package/_bmad/tea/workflows/testarch/automate/workflow.md +0 -39
  617. package/_bmad/tea/workflows/testarch/automate/workflow.yaml +0 -52
  618. package/_bmad/tea/workflows/testarch/ci/checklist.md +0 -247
  619. package/_bmad/tea/workflows/testarch/ci/github-actions-template.yaml +0 -198
  620. package/_bmad/tea/workflows/testarch/ci/gitlab-ci-template.yaml +0 -149
  621. package/_bmad/tea/workflows/testarch/ci/instructions.md +0 -38
  622. package/_bmad/tea/workflows/testarch/ci/steps-c/step-01-preflight.md +0 -92
  623. package/_bmad/tea/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +0 -82
  624. package/_bmad/tea/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +0 -75
  625. package/_bmad/tea/workflows/testarch/ci/steps-c/step-04-validate-and-summary.md +0 -67
  626. package/_bmad/tea/workflows/testarch/ci/steps-e/step-01-assess.md +0 -65
  627. package/_bmad/tea/workflows/testarch/ci/steps-e/step-02-apply-edit.md +0 -60
  628. package/_bmad/tea/workflows/testarch/ci/steps-v/step-01-validate.md +0 -67
  629. package/_bmad/tea/workflows/testarch/ci/validation-report-20260127-095021.md +0 -72
  630. package/_bmad/tea/workflows/testarch/ci/validation-report-20260127-102401.md +0 -114
  631. package/_bmad/tea/workflows/testarch/ci/workflow-plan.md +0 -20
  632. package/_bmad/tea/workflows/testarch/ci/workflow.md +0 -39
  633. package/_bmad/tea/workflows/testarch/ci/workflow.yaml +0 -45
  634. package/_bmad/tea/workflows/testarch/framework/checklist.md +0 -320
  635. package/_bmad/tea/workflows/testarch/framework/instructions.md +0 -38
  636. package/_bmad/tea/workflows/testarch/framework/steps-c/step-01-preflight.md +0 -75
  637. package/_bmad/tea/workflows/testarch/framework/steps-c/step-02-select-framework.md +0 -73
  638. package/_bmad/tea/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +0 -120
  639. package/_bmad/tea/workflows/testarch/framework/steps-c/step-04-docs-and-scripts.md +0 -70
  640. package/_bmad/tea/workflows/testarch/framework/steps-c/step-05-validate-and-summary.md +0 -68
  641. package/_bmad/tea/workflows/testarch/framework/steps-e/step-01-assess.md +0 -65
  642. package/_bmad/tea/workflows/testarch/framework/steps-e/step-02-apply-edit.md +0 -60
  643. package/_bmad/tea/workflows/testarch/framework/steps-v/step-01-validate.md +0 -67
  644. package/_bmad/tea/workflows/testarch/framework/validation-report-20260127-095021.md +0 -73
  645. package/_bmad/tea/workflows/testarch/framework/validation-report-20260127-102401.md +0 -116
  646. package/_bmad/tea/workflows/testarch/framework/workflow-plan.md +0 -22
  647. package/_bmad/tea/workflows/testarch/framework/workflow.md +0 -39
  648. package/_bmad/tea/workflows/testarch/framework/workflow.yaml +0 -47
  649. package/_bmad/tea/workflows/testarch/nfr-assess/checklist.md +0 -407
  650. package/_bmad/tea/workflows/testarch/nfr-assess/instructions.md +0 -36
  651. package/_bmad/tea/workflows/testarch/nfr-assess/nfr-report-template.md +0 -462
  652. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-01-load-context.md +0 -85
  653. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-02-define-thresholds.md +0 -82
  654. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-03-gather-evidence.md +0 -64
  655. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04-evaluate-and-score.md +0 -140
  656. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04a-subprocess-security.md +0 -138
  657. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04b-subprocess-performance.md +0 -84
  658. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04c-subprocess-reliability.md +0 -85
  659. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04d-subprocess-scalability.md +0 -88
  660. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04e-aggregate-nfr.md +0 -219
  661. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-05-generate-report.md +0 -71
  662. package/_bmad/tea/workflows/testarch/nfr-assess/steps-e/step-01-assess.md +0 -65
  663. package/_bmad/tea/workflows/testarch/nfr-assess/steps-e/step-02-apply-edit.md +0 -60
  664. package/_bmad/tea/workflows/testarch/nfr-assess/steps-v/step-01-validate.md +0 -67
  665. package/_bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +0 -73
  666. package/_bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +0 -116
  667. package/_bmad/tea/workflows/testarch/nfr-assess/workflow-plan.md +0 -19
  668. package/_bmad/tea/workflows/testarch/nfr-assess/workflow.md +0 -39
  669. package/_bmad/tea/workflows/testarch/nfr-assess/workflow.yaml +0 -47
  670. package/_bmad/tea/workflows/testarch/teach-me-testing/checklist.md +0 -197
  671. package/_bmad/tea/workflows/testarch/teach-me-testing/data/curriculum.yaml +0 -129
  672. package/_bmad/tea/workflows/testarch/teach-me-testing/data/quiz-questions.yaml +0 -206
  673. package/_bmad/tea/workflows/testarch/teach-me-testing/data/role-paths.yaml +0 -136
  674. package/_bmad/tea/workflows/testarch/teach-me-testing/data/session-content-map.yaml +0 -204
  675. package/_bmad/tea/workflows/testarch/teach-me-testing/data/tea-resources-index.yaml +0 -359
  676. package/_bmad/tea/workflows/testarch/teach-me-testing/instructions.md +0 -130
  677. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-01-init.md +0 -235
  678. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-01b-continue.md +0 -147
  679. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-02-assess.md +0 -258
  680. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-03-session-menu.md +0 -219
  681. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-01.md +0 -460
  682. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-02.md +0 -465
  683. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-03.md +0 -301
  684. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-04.md +0 -234
  685. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-05.md +0 -234
  686. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-06.md +0 -209
  687. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-07.md +0 -212
  688. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-05-completion.md +0 -339
  689. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-e/step-e-01-assess-workflow.md +0 -141
  690. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-e/step-e-02-apply-edits.md +0 -122
  691. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-v/step-v-01-validate.md +0 -263
  692. package/_bmad/tea/workflows/testarch/teach-me-testing/templates/certificate-template.md +0 -86
  693. package/_bmad/tea/workflows/testarch/teach-me-testing/templates/progress-template.yaml +0 -95
  694. package/_bmad/tea/workflows/testarch/teach-me-testing/templates/session-notes-template.md +0 -83
  695. package/_bmad/tea/workflows/testarch/teach-me-testing/workflow-plan-teach-me-testing.md +0 -950
  696. package/_bmad/tea/workflows/testarch/teach-me-testing/workflow.md +0 -90
  697. package/_bmad/tea/workflows/testarch/test-design/checklist.md +0 -410
  698. package/_bmad/tea/workflows/testarch/test-design/instructions.md +0 -52
  699. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-01-detect-mode.md +0 -109
  700. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-02-load-context.md +0 -127
  701. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-03-risk-and-testability.md +0 -85
  702. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-04-coverage-plan.md +0 -98
  703. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-05-generate-output.md +0 -97
  704. package/_bmad/tea/workflows/testarch/test-design/steps-e/step-01-assess.md +0 -65
  705. package/_bmad/tea/workflows/testarch/test-design/steps-e/step-02-apply-edit.md +0 -60
  706. package/_bmad/tea/workflows/testarch/test-design/steps-v/step-01-validate.md +0 -67
  707. package/_bmad/tea/workflows/testarch/test-design/test-design-architecture-template.md +0 -222
  708. package/_bmad/tea/workflows/testarch/test-design/test-design-qa-template.md +0 -296
  709. package/_bmad/tea/workflows/testarch/test-design/test-design-template.md +0 -294
  710. package/_bmad/tea/workflows/testarch/test-design/validation-report-20260127-095021.md +0 -73
  711. package/_bmad/tea/workflows/testarch/test-design/validation-report-20260127-102401.md +0 -116
  712. package/_bmad/tea/workflows/testarch/test-design/workflow-plan.md +0 -22
  713. package/_bmad/tea/workflows/testarch/test-design/workflow.md +0 -39
  714. package/_bmad/tea/workflows/testarch/test-design/workflow.yaml +0 -69
  715. package/_bmad/tea/workflows/testarch/test-review/checklist.md +0 -472
  716. package/_bmad/tea/workflows/testarch/test-review/instructions.md +0 -36
  717. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-01-load-context.md +0 -101
  718. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-02-discover-tests.md +0 -69
  719. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03-quality-evaluation.md +0 -184
  720. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03a-subprocess-determinism.md +0 -214
  721. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03b-subprocess-isolation.md +0 -125
  722. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03c-subprocess-maintainability.md +0 -102
  723. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03d-subprocess-coverage.md +0 -111
  724. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03e-subprocess-performance.md +0 -117
  725. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03f-aggregate-scores.md +0 -246
  726. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-04-generate-report.md +0 -72
  727. package/_bmad/tea/workflows/testarch/test-review/steps-e/step-01-assess.md +0 -65
  728. package/_bmad/tea/workflows/testarch/test-review/steps-e/step-02-apply-edit.md +0 -60
  729. package/_bmad/tea/workflows/testarch/test-review/steps-v/step-01-validate.md +0 -67
  730. package/_bmad/tea/workflows/testarch/test-review/test-review-template.md +0 -390
  731. package/_bmad/tea/workflows/testarch/test-review/validation-report-20260127-095021.md +0 -72
  732. package/_bmad/tea/workflows/testarch/test-review/validation-report-20260127-102401.md +0 -114
  733. package/_bmad/tea/workflows/testarch/test-review/workflow-plan.md +0 -18
  734. package/_bmad/tea/workflows/testarch/test-review/workflow.md +0 -39
  735. package/_bmad/tea/workflows/testarch/test-review/workflow.yaml +0 -46
  736. package/_bmad/tea/workflows/testarch/trace/checklist.md +0 -642
  737. package/_bmad/tea/workflows/testarch/trace/instructions.md +0 -36
  738. package/_bmad/tea/workflows/testarch/trace/steps-c/step-01-load-context.md +0 -80
  739. package/_bmad/tea/workflows/testarch/trace/steps-c/step-02-discover-tests.md +0 -69
  740. package/_bmad/tea/workflows/testarch/trace/steps-c/step-03-map-criteria.md +0 -65
  741. package/_bmad/tea/workflows/testarch/trace/steps-c/step-04-analyze-gaps.md +0 -244
  742. package/_bmad/tea/workflows/testarch/trace/steps-c/step-05-gate-decision.md +0 -232
  743. package/_bmad/tea/workflows/testarch/trace/steps-e/step-01-assess.md +0 -65
  744. package/_bmad/tea/workflows/testarch/trace/steps-e/step-02-apply-edit.md +0 -60
  745. package/_bmad/tea/workflows/testarch/trace/steps-v/step-01-validate.md +0 -67
  746. package/_bmad/tea/workflows/testarch/trace/trace-template.md +0 -675
  747. package/_bmad/tea/workflows/testarch/trace/validation-report-20260127-095021.md +0 -73
  748. package/_bmad/tea/workflows/testarch/trace/validation-report-20260127-102401.md +0 -116
  749. package/_bmad/tea/workflows/testarch/trace/workflow-plan.md +0 -21
  750. package/_bmad/tea/workflows/testarch/trace/workflow.md +0 -39
  751. package/_bmad/tea/workflows/testarch/trace/workflow.yaml +0 -55
@@ -1,851 +0,0 @@
1
- # API Testing Patterns
2
-
3
- ## Principle
4
-
5
- Test APIs and backend services directly without browser overhead. Use Playwright's `request` context for HTTP operations, `apiRequest` utility for enhanced features, and `recurse` for async operations. Pure API tests run faster, are more stable, and provide better coverage for service-layer logic.
6
-
7
- ## Rationale
8
-
9
- Many teams over-rely on E2E/browser tests when API tests would be more appropriate:
10
-
11
- - **Slower feedback**: Browser tests take seconds, API tests take milliseconds
12
- - **More brittle**: UI changes break tests even when API works correctly
13
- - **Wrong abstraction**: Testing business logic through UI layers adds noise
14
- - **Resource heavy**: Browsers consume memory and CPU
15
-
16
- API-first testing provides:
17
-
18
- - **Fast execution**: No browser startup, no rendering, no JavaScript execution
19
- - **Direct validation**: Test exactly what the service returns
20
- - **Better isolation**: Test service logic independent of UI
21
- - **Easier debugging**: Clear request/response without DOM noise
22
- - **Contract validation**: Verify API contracts explicitly
23
-
24
- ## When to Use API Tests vs E2E Tests
25
-
26
- | Scenario | API Test | E2E Test |
27
- | ------------------------- | ------------- | ------------- |
28
- | CRUD operations | ✅ Primary | ❌ Overkill |
29
- | Business logic validation | ✅ Primary | ❌ Overkill |
30
- | Error handling (4xx, 5xx) | ✅ Primary | ⚠️ Supplement |
31
- | Authentication flows | ✅ Primary | ⚠️ Supplement |
32
- | Data transformation | ✅ Primary | ❌ Overkill |
33
- | User journeys | ❌ Can't test | ✅ Primary |
34
- | Visual regression | ❌ Can't test | ✅ Primary |
35
- | Cross-browser issues | ❌ Can't test | ✅ Primary |
36
-
37
- **Rule of thumb**: If you're testing what the server returns (not how it looks), use API tests.
38
-
39
- ## Pattern Examples
40
-
41
- ### Example 1: Pure API Test (No Browser)
42
-
43
- **Context**: Test REST API endpoints directly without any browser context.
44
-
45
- **Implementation**:
46
-
47
- ```typescript
48
- // tests/api/users.spec.ts
49
- import { test, expect } from '@playwright/test';
50
-
51
- // No page, no browser - just API
52
- test.describe('Users API', () => {
53
- test('should create user', async ({ request }) => {
54
- const response = await request.post('/api/users', {
55
- data: {
56
- name: 'John Doe',
57
- email: 'john@example.com',
58
- role: 'user',
59
- },
60
- });
61
-
62
- expect(response.status()).toBe(201);
63
-
64
- const user = await response.json();
65
- expect(user.id).toBeDefined();
66
- expect(user.name).toBe('John Doe');
67
- expect(user.email).toBe('john@example.com');
68
- });
69
-
70
- test('should get user by ID', async ({ request }) => {
71
- // Create user first
72
- const createResponse = await request.post('/api/users', {
73
- data: { name: 'Jane Doe', email: 'jane@example.com' },
74
- });
75
- const { id } = await createResponse.json();
76
-
77
- // Get user
78
- const getResponse = await request.get(`/api/users/${id}`);
79
- expect(getResponse.status()).toBe(200);
80
-
81
- const user = await getResponse.json();
82
- expect(user.id).toBe(id);
83
- expect(user.name).toBe('Jane Doe');
84
- });
85
-
86
- test('should return 404 for non-existent user', async ({ request }) => {
87
- const response = await request.get('/api/users/non-existent-id');
88
- expect(response.status()).toBe(404);
89
-
90
- const error = await response.json();
91
- expect(error.code).toBe('USER_NOT_FOUND');
92
- });
93
-
94
- test('should validate required fields', async ({ request }) => {
95
- const response = await request.post('/api/users', {
96
- data: { name: 'Missing Email' }, // email is required
97
- });
98
-
99
- expect(response.status()).toBe(400);
100
-
101
- const error = await response.json();
102
- expect(error.code).toBe('VALIDATION_ERROR');
103
- expect(error.details).toContainEqual(expect.objectContaining({ field: 'email', message: expect.any(String) }));
104
- });
105
- });
106
- ```
107
-
108
- **Key Points**:
109
-
110
- - No `page` fixture needed - only `request`
111
- - Tests run without browser overhead
112
- - Direct HTTP assertions
113
- - Clear error handling tests
114
-
115
- ### Example 2: API Test with apiRequest Utility
116
-
117
- **Context**: Use enhanced apiRequest for schema validation, retry, and type safety.
118
-
119
- **Implementation**:
120
-
121
- ```typescript
122
- // tests/api/orders.spec.ts
123
- import { test, expect } from '@seontechnologies/playwright-utils/api-request/fixtures';
124
- import { z } from 'zod';
125
-
126
- // Define schema for type safety and validation
127
- const OrderSchema = z.object({
128
- id: z.string().uuid(),
129
- userId: z.string(),
130
- items: z.array(
131
- z.object({
132
- productId: z.string(),
133
- quantity: z.number().positive(),
134
- price: z.number().positive(),
135
- }),
136
- ),
137
- total: z.number().positive(),
138
- status: z.enum(['pending', 'processing', 'shipped', 'delivered']),
139
- createdAt: z.string().datetime(),
140
- });
141
-
142
- type Order = z.infer<typeof OrderSchema>;
143
-
144
- test.describe('Orders API', () => {
145
- test('should create order with schema validation', async ({ apiRequest }) => {
146
- const { status, body } = await apiRequest<Order>({
147
- method: 'POST',
148
- path: '/api/orders',
149
- body: {
150
- userId: 'user-123',
151
- items: [
152
- { productId: 'prod-1', quantity: 2, price: 29.99 },
153
- { productId: 'prod-2', quantity: 1, price: 49.99 },
154
- ],
155
- },
156
- validateSchema: OrderSchema, // Validates response matches schema
157
- });
158
-
159
- expect(status).toBe(201);
160
- expect(body.id).toBeDefined();
161
- expect(body.status).toBe('pending');
162
- expect(body.total).toBe(109.97); // 2*29.99 + 49.99
163
- });
164
-
165
- test('should handle server errors with retry', async ({ apiRequest }) => {
166
- // apiRequest retries 5xx errors by default
167
- const { status, body } = await apiRequest({
168
- method: 'GET',
169
- path: '/api/orders/order-123',
170
- retryConfig: {
171
- maxRetries: 3,
172
- retryDelay: 1000,
173
- },
174
- });
175
-
176
- expect(status).toBe(200);
177
- });
178
-
179
- test('should list orders with pagination', async ({ apiRequest }) => {
180
- const { status, body } = await apiRequest<{ orders: Order[]; total: number; page: number }>({
181
- method: 'GET',
182
- path: '/api/orders',
183
- params: { page: 1, limit: 10, status: 'pending' },
184
- });
185
-
186
- expect(status).toBe(200);
187
- expect(body.orders).toHaveLength(10);
188
- expect(body.total).toBeGreaterThan(10);
189
- expect(body.page).toBe(1);
190
- });
191
- });
192
- ```
193
-
194
- **Key Points**:
195
-
196
- - Zod schema for runtime validation AND TypeScript types
197
- - `validateSchema` throws if response doesn't match
198
- - Built-in retry for transient failures
199
- - Type-safe `body` access
200
-
201
- ### Example 3: Microservice-to-Microservice Testing
202
-
203
- **Context**: Test service interactions without browser - validate API contracts between services.
204
-
205
- **Implementation**:
206
-
207
- ```typescript
208
- // tests/api/service-integration.spec.ts
209
- import { test, expect } from '@seontechnologies/playwright-utils/fixtures';
210
-
211
- test.describe('Service Integration', () => {
212
- const USER_SERVICE_URL = process.env.USER_SERVICE_URL || 'http://localhost:3001';
213
- const ORDER_SERVICE_URL = process.env.ORDER_SERVICE_URL || 'http://localhost:3002';
214
- const INVENTORY_SERVICE_URL = process.env.INVENTORY_SERVICE_URL || 'http://localhost:3003';
215
-
216
- test('order service should validate user exists', async ({ apiRequest }) => {
217
- // Create user in user-service
218
- const { body: user } = await apiRequest({
219
- method: 'POST',
220
- path: '/api/users',
221
- baseUrl: USER_SERVICE_URL,
222
- body: { name: 'Test User', email: 'test@example.com' },
223
- });
224
-
225
- // Create order in order-service (should validate user via user-service)
226
- const { status, body: order } = await apiRequest({
227
- method: 'POST',
228
- path: '/api/orders',
229
- baseUrl: ORDER_SERVICE_URL,
230
- body: {
231
- userId: user.id,
232
- items: [{ productId: 'prod-1', quantity: 1 }],
233
- },
234
- });
235
-
236
- expect(status).toBe(201);
237
- expect(order.userId).toBe(user.id);
238
- });
239
-
240
- test('order service should reject invalid user', async ({ apiRequest }) => {
241
- const { status, body } = await apiRequest({
242
- method: 'POST',
243
- path: '/api/orders',
244
- baseUrl: ORDER_SERVICE_URL,
245
- body: {
246
- userId: 'non-existent-user',
247
- items: [{ productId: 'prod-1', quantity: 1 }],
248
- },
249
- });
250
-
251
- expect(status).toBe(400);
252
- expect(body.code).toBe('INVALID_USER');
253
- });
254
-
255
- test('order should decrease inventory', async ({ apiRequest, recurse }) => {
256
- // Get initial inventory
257
- const { body: initialInventory } = await apiRequest({
258
- method: 'GET',
259
- path: '/api/inventory/prod-1',
260
- baseUrl: INVENTORY_SERVICE_URL,
261
- });
262
-
263
- // Create order
264
- await apiRequest({
265
- method: 'POST',
266
- path: '/api/orders',
267
- baseUrl: ORDER_SERVICE_URL,
268
- body: {
269
- userId: 'user-123',
270
- items: [{ productId: 'prod-1', quantity: 2 }],
271
- },
272
- });
273
-
274
- // Poll for inventory update (eventual consistency)
275
- const { body: updatedInventory } = await recurse(
276
- () =>
277
- apiRequest({
278
- method: 'GET',
279
- path: '/api/inventory/prod-1',
280
- baseUrl: INVENTORY_SERVICE_URL,
281
- }),
282
- (response) => response.body.quantity === initialInventory.quantity - 2,
283
- { timeout: 10000, interval: 500 },
284
- );
285
-
286
- expect(updatedInventory.quantity).toBe(initialInventory.quantity - 2);
287
- });
288
- });
289
- ```
290
-
291
- **Key Points**:
292
-
293
- - Multiple service URLs for microservice testing
294
- - Tests service-to-service communication
295
- - Uses `recurse` for eventual consistency
296
- - No browser needed for full integration testing
297
-
298
- ### Example 4: GraphQL API Testing
299
-
300
- **Context**: Test GraphQL endpoints with queries and mutations.
301
-
302
- **Implementation**:
303
-
304
- ```typescript
305
- // tests/api/graphql.spec.ts
306
- import { test, expect } from '@seontechnologies/playwright-utils/api-request/fixtures';
307
-
308
- const GRAPHQL_ENDPOINT = '/graphql';
309
-
310
- test.describe('GraphQL API', () => {
311
- test('should query users', async ({ apiRequest }) => {
312
- const query = `
313
- query GetUsers($limit: Int) {
314
- users(limit: $limit) {
315
- id
316
- name
317
- email
318
- role
319
- }
320
- }
321
- `;
322
-
323
- const { status, body } = await apiRequest({
324
- method: 'POST',
325
- path: GRAPHQL_ENDPOINT,
326
- body: {
327
- query,
328
- variables: { limit: 10 },
329
- },
330
- });
331
-
332
- expect(status).toBe(200);
333
- expect(body.errors).toBeUndefined();
334
- expect(body.data.users).toHaveLength(10);
335
- expect(body.data.users[0]).toHaveProperty('id');
336
- expect(body.data.users[0]).toHaveProperty('name');
337
- });
338
-
339
- test('should create user via mutation', async ({ apiRequest }) => {
340
- const mutation = `
341
- mutation CreateUser($input: CreateUserInput!) {
342
- createUser(input: $input) {
343
- id
344
- name
345
- email
346
- }
347
- }
348
- `;
349
-
350
- const { status, body } = await apiRequest({
351
- method: 'POST',
352
- path: GRAPHQL_ENDPOINT,
353
- body: {
354
- query: mutation,
355
- variables: {
356
- input: {
357
- name: 'GraphQL User',
358
- email: 'graphql@example.com',
359
- },
360
- },
361
- },
362
- });
363
-
364
- expect(status).toBe(200);
365
- expect(body.errors).toBeUndefined();
366
- expect(body.data.createUser.id).toBeDefined();
367
- expect(body.data.createUser.name).toBe('GraphQL User');
368
- });
369
-
370
- test('should handle GraphQL errors', async ({ apiRequest }) => {
371
- const query = `
372
- query GetUser($id: ID!) {
373
- user(id: $id) {
374
- id
375
- name
376
- }
377
- }
378
- `;
379
-
380
- const { status, body } = await apiRequest({
381
- method: 'POST',
382
- path: GRAPHQL_ENDPOINT,
383
- body: {
384
- query,
385
- variables: { id: 'non-existent' },
386
- },
387
- });
388
-
389
- expect(status).toBe(200); // GraphQL returns 200 even for errors
390
- expect(body.errors).toBeDefined();
391
- expect(body.errors[0].message).toContain('not found');
392
- expect(body.data.user).toBeNull();
393
- });
394
-
395
- test('should handle validation errors', async ({ apiRequest }) => {
396
- const mutation = `
397
- mutation CreateUser($input: CreateUserInput!) {
398
- createUser(input: $input) {
399
- id
400
- }
401
- }
402
- `;
403
-
404
- const { status, body } = await apiRequest({
405
- method: 'POST',
406
- path: GRAPHQL_ENDPOINT,
407
- body: {
408
- query: mutation,
409
- variables: {
410
- input: {
411
- name: '', // Invalid: empty name
412
- email: 'invalid-email', // Invalid: bad format
413
- },
414
- },
415
- },
416
- });
417
-
418
- expect(status).toBe(200);
419
- expect(body.errors).toBeDefined();
420
- expect(body.errors[0].extensions.code).toBe('BAD_USER_INPUT');
421
- });
422
- });
423
- ```
424
-
425
- **Key Points**:
426
-
427
- - GraphQL queries and mutations via POST
428
- - Variables passed in request body
429
- - GraphQL returns 200 even for errors (check `body.errors`)
430
- - Test validation and business logic errors
431
-
432
- ### Example 5: Database Seeding and Cleanup via API
433
-
434
- **Context**: Use API calls to set up and tear down test data without direct database access.
435
-
436
- **Implementation**:
437
-
438
- ```typescript
439
- // tests/api/with-data-setup.spec.ts
440
- import { test, expect } from '@seontechnologies/playwright-utils/fixtures';
441
-
442
- test.describe('Orders with Data Setup', () => {
443
- let testUser: { id: string; email: string };
444
- let testProducts: Array<{ id: string; name: string; price: number }>;
445
-
446
- test.beforeAll(async ({ request }) => {
447
- // Seed user via API
448
- const userResponse = await request.post('/api/users', {
449
- data: {
450
- name: 'Test User',
451
- email: `test-${Date.now()}@example.com`,
452
- },
453
- });
454
- testUser = await userResponse.json();
455
-
456
- // Seed products via API
457
- testProducts = [];
458
- for (const product of [
459
- { name: 'Widget A', price: 29.99 },
460
- { name: 'Widget B', price: 49.99 },
461
- { name: 'Widget C', price: 99.99 },
462
- ]) {
463
- const productResponse = await request.post('/api/products', {
464
- data: product,
465
- });
466
- testProducts.push(await productResponse.json());
467
- }
468
- });
469
-
470
- test.afterAll(async ({ request }) => {
471
- // Cleanup via API
472
- if (testUser?.id) {
473
- await request.delete(`/api/users/${testUser.id}`);
474
- }
475
- for (const product of testProducts) {
476
- await request.delete(`/api/products/${product.id}`);
477
- }
478
- });
479
-
480
- test('should create order with seeded data', async ({ apiRequest }) => {
481
- const { status, body } = await apiRequest({
482
- method: 'POST',
483
- path: '/api/orders',
484
- body: {
485
- userId: testUser.id,
486
- items: [
487
- { productId: testProducts[0].id, quantity: 2 },
488
- { productId: testProducts[1].id, quantity: 1 },
489
- ],
490
- },
491
- });
492
-
493
- expect(status).toBe(201);
494
- expect(body.userId).toBe(testUser.id);
495
- expect(body.items).toHaveLength(2);
496
- expect(body.total).toBe(2 * 29.99 + 49.99);
497
- });
498
-
499
- test('should list user orders', async ({ apiRequest }) => {
500
- // Create an order first
501
- await apiRequest({
502
- method: 'POST',
503
- path: '/api/orders',
504
- body: {
505
- userId: testUser.id,
506
- items: [{ productId: testProducts[2].id, quantity: 1 }],
507
- },
508
- });
509
-
510
- // List orders for user
511
- const { status, body } = await apiRequest({
512
- method: 'GET',
513
- path: '/api/orders',
514
- params: { userId: testUser.id },
515
- });
516
-
517
- expect(status).toBe(200);
518
- expect(body.orders.length).toBeGreaterThanOrEqual(1);
519
- expect(body.orders.every((o: any) => o.userId === testUser.id)).toBe(true);
520
- });
521
- });
522
- ```
523
-
524
- **Key Points**:
525
-
526
- - `beforeAll`/`afterAll` for test data setup/cleanup
527
- - API-based seeding (no direct DB access needed)
528
- - Unique emails to prevent conflicts in parallel runs
529
- - Cleanup after all tests complete
530
-
531
- ### Example 6: Background Job Testing with Recurse
532
-
533
- **Context**: Test async operations like background jobs, webhooks, and eventual consistency.
534
-
535
- **Implementation**:
536
-
537
- ```typescript
538
- // tests/api/background-jobs.spec.ts
539
- import { test, expect } from '@seontechnologies/playwright-utils/fixtures';
540
-
541
- test.describe('Background Jobs', () => {
542
- test('should process export job', async ({ apiRequest, recurse }) => {
543
- // Trigger export job
544
- const { body: job } = await apiRequest({
545
- method: 'POST',
546
- path: '/api/exports',
547
- body: {
548
- type: 'users',
549
- format: 'csv',
550
- filters: { createdAfter: '2024-01-01' },
551
- },
552
- });
553
-
554
- expect(job.id).toBeDefined();
555
- expect(job.status).toBe('pending');
556
-
557
- // Poll until job completes
558
- const { body: completedJob } = await recurse(
559
- () => apiRequest({ method: 'GET', path: `/api/exports/${job.id}` }),
560
- (response) => response.body.status === 'completed',
561
- {
562
- timeout: 60000,
563
- interval: 2000,
564
- log: `Waiting for export job ${job.id} to complete`,
565
- },
566
- );
567
-
568
- expect(completedJob.status).toBe('completed');
569
- expect(completedJob.downloadUrl).toBeDefined();
570
- expect(completedJob.recordCount).toBeGreaterThan(0);
571
- });
572
-
573
- test('should handle job failure gracefully', async ({ apiRequest, recurse }) => {
574
- // Trigger job that will fail
575
- const { body: job } = await apiRequest({
576
- method: 'POST',
577
- path: '/api/exports',
578
- body: {
579
- type: 'invalid-type', // This will cause failure
580
- format: 'csv',
581
- },
582
- });
583
-
584
- // Poll until job fails
585
- const { body: failedJob } = await recurse(
586
- () => apiRequest({ method: 'GET', path: `/api/exports/${job.id}` }),
587
- (response) => ['completed', 'failed'].includes(response.body.status),
588
- { timeout: 30000 },
589
- );
590
-
591
- expect(failedJob.status).toBe('failed');
592
- expect(failedJob.error).toBeDefined();
593
- expect(failedJob.error.code).toBe('INVALID_EXPORT_TYPE');
594
- });
595
-
596
- test('should process webhook delivery', async ({ apiRequest, recurse }) => {
597
- // Trigger action that sends webhook
598
- const { body: order } = await apiRequest({
599
- method: 'POST',
600
- path: '/api/orders',
601
- body: {
602
- userId: 'user-123',
603
- items: [{ productId: 'prod-1', quantity: 1 }],
604
- webhookUrl: 'https://webhook.site/test-endpoint',
605
- },
606
- });
607
-
608
- // Poll for webhook delivery status
609
- const { body: webhookStatus } = await recurse(
610
- () => apiRequest({ method: 'GET', path: `/api/webhooks/order/${order.id}` }),
611
- (response) => response.body.delivered === true,
612
- { timeout: 30000, interval: 1000 },
613
- );
614
-
615
- expect(webhookStatus.delivered).toBe(true);
616
- expect(webhookStatus.deliveredAt).toBeDefined();
617
- expect(webhookStatus.responseStatus).toBe(200);
618
- });
619
- });
620
- ```
621
-
622
- **Key Points**:
623
-
624
- - `recurse` for polling async operations
625
- - Test both success and failure scenarios
626
- - Configurable timeout and interval
627
- - Log messages for debugging
628
-
629
- ### Example 7: Service Authentication (No Browser)
630
-
631
- **Context**: Test authenticated API endpoints using tokens directly - no browser login needed.
632
-
633
- **Implementation**:
634
-
635
- ```typescript
636
- // tests/api/authenticated.spec.ts
637
- import { test, expect } from '@seontechnologies/playwright-utils/fixtures';
638
-
639
- test.describe('Authenticated API Tests', () => {
640
- let authToken: string;
641
-
642
- test.beforeAll(async ({ request }) => {
643
- // Get token via API (no browser!)
644
- const response = await request.post('/api/auth/login', {
645
- data: {
646
- email: process.env.TEST_USER_EMAIL,
647
- password: process.env.TEST_USER_PASSWORD,
648
- },
649
- });
650
-
651
- const { token } = await response.json();
652
- authToken = token;
653
- });
654
-
655
- test('should access protected endpoint with token', async ({ apiRequest }) => {
656
- const { status, body } = await apiRequest({
657
- method: 'GET',
658
- path: '/api/me',
659
- headers: {
660
- Authorization: `Bearer ${authToken}`,
661
- },
662
- });
663
-
664
- expect(status).toBe(200);
665
- expect(body.email).toBe(process.env.TEST_USER_EMAIL);
666
- });
667
-
668
- test('should reject request without token', async ({ apiRequest }) => {
669
- const { status, body } = await apiRequest({
670
- method: 'GET',
671
- path: '/api/me',
672
- // No Authorization header
673
- });
674
-
675
- expect(status).toBe(401);
676
- expect(body.code).toBe('UNAUTHORIZED');
677
- });
678
-
679
- test('should reject expired token', async ({ apiRequest }) => {
680
- const expiredToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'; // Expired token
681
-
682
- const { status, body } = await apiRequest({
683
- method: 'GET',
684
- path: '/api/me',
685
- headers: {
686
- Authorization: `Bearer ${expiredToken}`,
687
- },
688
- });
689
-
690
- expect(status).toBe(401);
691
- expect(body.code).toBe('TOKEN_EXPIRED');
692
- });
693
-
694
- test('should handle role-based access', async ({ apiRequest }) => {
695
- // User token (non-admin)
696
- const { status } = await apiRequest({
697
- method: 'GET',
698
- path: '/api/admin/users',
699
- headers: {
700
- Authorization: `Bearer ${authToken}`,
701
- },
702
- });
703
-
704
- expect(status).toBe(403); // Forbidden for non-admin
705
- });
706
- });
707
- ```
708
-
709
- **Key Points**:
710
-
711
- - Token obtained via API login (no browser)
712
- - Token reused across all tests in describe block
713
- - Test auth, expired tokens, and RBAC
714
- - Pure API testing without UI
715
-
716
- ## API Test Configuration
717
-
718
- ### Playwright Config for API-Only Tests
719
-
720
- ```typescript
721
- // playwright.config.ts
722
- import { defineConfig } from '@playwright/test';
723
-
724
- export default defineConfig({
725
- testDir: './tests/api',
726
-
727
- // No browser needed for API tests
728
- use: {
729
- baseURL: process.env.API_URL || 'http://localhost:3000',
730
- extraHTTPHeaders: {
731
- Accept: 'application/json',
732
- 'Content-Type': 'application/json',
733
- },
734
- },
735
-
736
- // Faster without browser overhead
737
- timeout: 30000,
738
-
739
- // Run API tests in parallel
740
- workers: 4,
741
- fullyParallel: true,
742
-
743
- // No screenshots/traces needed for API tests
744
- reporter: [['html'], ['json', { outputFile: 'api-test-results.json' }]],
745
- });
746
- ```
747
-
748
- ### Separate API Test Project
749
-
750
- ```typescript
751
- // playwright.config.ts
752
- export default defineConfig({
753
- projects: [
754
- {
755
- name: 'api',
756
- testDir: './tests/api',
757
- use: {
758
- baseURL: process.env.API_URL,
759
- },
760
- },
761
- {
762
- name: 'e2e',
763
- testDir: './tests/e2e',
764
- use: {
765
- baseURL: process.env.APP_URL,
766
- ...devices['Desktop Chrome'],
767
- },
768
- },
769
- ],
770
- });
771
- ```
772
-
773
- ## Comparison: API Tests vs E2E Tests
774
-
775
- | Aspect | API Test | E2E Test |
776
- | ------------------- | ---------------------- | --------------------------- |
777
- | **Speed** | ~50-100ms per test | ~2-10s per test |
778
- | **Stability** | Very stable | More flaky (UI timing) |
779
- | **Setup** | Minimal | Browser, context, page |
780
- | **Debugging** | Clear request/response | DOM, screenshots, traces |
781
- | **Coverage** | Service logic | User experience |
782
- | **Parallelization** | Easy (stateless) | Complex (browser resources) |
783
- | **CI Cost** | Low (no browser) | High (browser containers) |
784
-
785
- ## Related Fragments
786
-
787
- - `api-request.md` - apiRequest utility details
788
- - `recurse.md` - Polling patterns for async operations
789
- - `auth-session.md` - Token management
790
- - `contract-testing.md` - Pact contract testing
791
- - `test-levels-framework.md` - When to use which test level
792
- - `data-factories.md` - Test data setup patterns
793
-
794
- ## Anti-Patterns
795
-
796
- **DON'T use E2E for API validation:**
797
-
798
- ```typescript
799
- // Bad: Testing API through UI
800
- test('validate user creation', async ({ page }) => {
801
- await page.goto('/admin/users');
802
- await page.fill('#name', 'John');
803
- await page.click('#submit');
804
- await expect(page.getByText('User created')).toBeVisible();
805
- });
806
- ```
807
-
808
- **DO test APIs directly:**
809
-
810
- ```typescript
811
- // Good: Direct API test
812
- test('validate user creation', async ({ apiRequest }) => {
813
- const { status, body } = await apiRequest({
814
- method: 'POST',
815
- path: '/api/users',
816
- body: { name: 'John' },
817
- });
818
- expect(status).toBe(201);
819
- expect(body.id).toBeDefined();
820
- });
821
- ```
822
-
823
- **DON'T ignore API tests because "E2E covers it":**
824
-
825
- ```typescript
826
- // Bad thinking: "Our E2E tests create users, so API is tested"
827
- // Reality: E2E tests one happy path; API tests cover edge cases
828
- ```
829
-
830
- **DO have dedicated API test coverage:**
831
-
832
- ```typescript
833
- // Good: Explicit API test suite
834
- test.describe('Users API', () => {
835
- test('creates user', async ({ apiRequest }) => {
836
- /* ... */
837
- });
838
- test('handles duplicate email', async ({ apiRequest }) => {
839
- /* ... */
840
- });
841
- test('validates required fields', async ({ apiRequest }) => {
842
- /* ... */
843
- });
844
- test('handles malformed JSON', async ({ apiRequest }) => {
845
- /* ... */
846
- });
847
- test('rate limits requests', async ({ apiRequest }) => {
848
- /* ... */
849
- });
850
- });
851
- ```