bmad-method-test-architecture-enterprise 0.1.1-beta.0

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 (320) hide show
  1. package/.github/CODE_OF_CONDUCT.md +128 -0
  2. package/.github/FUNDING.yaml +15 -0
  3. package/.github/ISSUE_TEMPLATE/config.yaml +11 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +70 -0
  5. package/.github/ISSUE_TEMPLATE/issue.md +61 -0
  6. package/.github/workflows/docs.yaml +66 -0
  7. package/.github/workflows/manual-release.yaml +195 -0
  8. package/.github/workflows/quality.yaml +114 -0
  9. package/.husky/pre-commit +20 -0
  10. package/.markdownlint-cli2.yaml +36 -0
  11. package/.nvmrc +1 -0
  12. package/.prettierignore +9 -0
  13. package/.vscode/settings.json +47 -0
  14. package/CHANGELOG.md +217 -0
  15. package/CONTRIBUTING.md +268 -0
  16. package/LICENSE +26 -0
  17. package/README.md +300 -0
  18. package/SECURITY.md +85 -0
  19. package/TEA-MODULE-MIGRATION-PLAN.md +3788 -0
  20. package/docs/404.md +20 -0
  21. package/docs/MIGRATION.md +447 -0
  22. package/docs/explanation/engagement-models.md +767 -0
  23. package/docs/explanation/fixture-architecture.md +484 -0
  24. package/docs/explanation/knowledge-base-system.md +599 -0
  25. package/docs/explanation/network-first-patterns.md +884 -0
  26. package/docs/explanation/risk-based-testing.md +628 -0
  27. package/docs/explanation/step-file-architecture.md +609 -0
  28. package/docs/explanation/subprocess-architecture.md +578 -0
  29. package/docs/explanation/subprocess-implementation-status.md +327 -0
  30. package/docs/explanation/tea-overview.md +425 -0
  31. package/docs/explanation/test-quality-standards.md +965 -0
  32. package/docs/explanation/testing-as-engineering.md +111 -0
  33. package/docs/glossary/index.md +160 -0
  34. package/docs/how-to/brownfield/use-tea-for-enterprise.md +571 -0
  35. package/docs/how-to/brownfield/use-tea-with-existing-tests.md +631 -0
  36. package/docs/how-to/customization/enable-tea-mcp-enhancements.md +455 -0
  37. package/docs/how-to/customization/integrate-playwright-utils.md +846 -0
  38. package/docs/how-to/workflows/run-atdd.md +460 -0
  39. package/docs/how-to/workflows/run-automate.md +690 -0
  40. package/docs/how-to/workflows/run-nfr-assess.md +731 -0
  41. package/docs/how-to/workflows/run-test-design.md +144 -0
  42. package/docs/how-to/workflows/run-test-review.md +638 -0
  43. package/docs/how-to/workflows/run-trace.md +951 -0
  44. package/docs/how-to/workflows/setup-ci.md +761 -0
  45. package/docs/how-to/workflows/setup-test-framework.md +99 -0
  46. package/docs/index.md +122 -0
  47. package/docs/reference/commands.md +300 -0
  48. package/docs/reference/configuration.md +729 -0
  49. package/docs/reference/knowledge-base.md +365 -0
  50. package/docs/reference/troubleshooting.md +717 -0
  51. package/docs/tutorials/tea-lite-quickstart.md +465 -0
  52. package/eslint.config.mjs +152 -0
  53. package/package.json +117 -0
  54. package/prettier.config.mjs +32 -0
  55. package/release_notes.md +28 -0
  56. package/src/_module-installer/installer.js +92 -0
  57. package/src/agents/tea.agent.yaml +63 -0
  58. package/src/module-help.csv +9 -0
  59. package/src/module.yaml +91 -0
  60. package/src/testarch/knowledge/adr-quality-readiness-checklist.md +377 -0
  61. package/src/testarch/knowledge/api-request.md +442 -0
  62. package/src/testarch/knowledge/api-testing-patterns.md +851 -0
  63. package/src/testarch/knowledge/auth-session.md +548 -0
  64. package/src/testarch/knowledge/burn-in.md +273 -0
  65. package/src/testarch/knowledge/ci-burn-in.md +675 -0
  66. package/src/testarch/knowledge/component-tdd.md +486 -0
  67. package/src/testarch/knowledge/contract-testing.md +957 -0
  68. package/src/testarch/knowledge/data-factories.md +500 -0
  69. package/src/testarch/knowledge/email-auth.md +721 -0
  70. package/src/testarch/knowledge/error-handling.md +725 -0
  71. package/src/testarch/knowledge/feature-flags.md +750 -0
  72. package/src/testarch/knowledge/file-utils.md +456 -0
  73. package/src/testarch/knowledge/fixture-architecture.md +401 -0
  74. package/src/testarch/knowledge/fixtures-composition.md +382 -0
  75. package/src/testarch/knowledge/intercept-network-call.md +426 -0
  76. package/src/testarch/knowledge/log.md +426 -0
  77. package/src/testarch/knowledge/network-error-monitor.md +401 -0
  78. package/src/testarch/knowledge/network-first.md +486 -0
  79. package/src/testarch/knowledge/network-recorder.md +527 -0
  80. package/src/testarch/knowledge/nfr-criteria.md +670 -0
  81. package/src/testarch/knowledge/overview.md +286 -0
  82. package/src/testarch/knowledge/playwright-config.md +730 -0
  83. package/src/testarch/knowledge/probability-impact.md +601 -0
  84. package/src/testarch/knowledge/recurse.md +421 -0
  85. package/src/testarch/knowledge/risk-governance.md +615 -0
  86. package/src/testarch/knowledge/selective-testing.md +732 -0
  87. package/src/testarch/knowledge/selector-resilience.md +527 -0
  88. package/src/testarch/knowledge/test-healing-patterns.md +644 -0
  89. package/src/testarch/knowledge/test-levels-framework.md +473 -0
  90. package/src/testarch/knowledge/test-priorities-matrix.md +373 -0
  91. package/src/testarch/knowledge/test-quality.md +664 -0
  92. package/src/testarch/knowledge/timing-debugging.md +372 -0
  93. package/src/testarch/knowledge/visual-debugging.md +524 -0
  94. package/src/testarch/tea-index.csv +35 -0
  95. package/src/workflows/testarch/README.md +74 -0
  96. package/src/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
  97. package/src/workflows/testarch/atdd/checklist.md +374 -0
  98. package/src/workflows/testarch/atdd/instructions.md +38 -0
  99. package/src/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +110 -0
  100. package/src/workflows/testarch/atdd/steps-c/step-02-generation-mode.md +79 -0
  101. package/src/workflows/testarch/atdd/steps-c/step-03-test-strategy.md +76 -0
  102. package/src/workflows/testarch/atdd/steps-c/step-04-generate-tests.md +228 -0
  103. package/src/workflows/testarch/atdd/steps-c/step-04a-subprocess-api-failing.md +215 -0
  104. package/src/workflows/testarch/atdd/steps-c/step-04b-subprocess-e2e-failing.md +212 -0
  105. package/src/workflows/testarch/atdd/steps-c/step-04c-aggregate.md +329 -0
  106. package/src/workflows/testarch/atdd/steps-c/step-05-validate-and-complete.md +68 -0
  107. package/src/workflows/testarch/atdd/steps-e/step-01-assess.md +65 -0
  108. package/src/workflows/testarch/atdd/steps-e/step-02-apply-edit.md +60 -0
  109. package/src/workflows/testarch/atdd/steps-v/step-01-validate.md +67 -0
  110. package/src/workflows/testarch/atdd/validation-report-20260127-095021.md +73 -0
  111. package/src/workflows/testarch/atdd/validation-report-20260127-102401.md +116 -0
  112. package/src/workflows/testarch/atdd/workflow-plan.md +21 -0
  113. package/src/workflows/testarch/atdd/workflow.md +39 -0
  114. package/src/workflows/testarch/atdd/workflow.yaml +47 -0
  115. package/src/workflows/testarch/automate/checklist.md +582 -0
  116. package/src/workflows/testarch/automate/instructions.md +43 -0
  117. package/src/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +127 -0
  118. package/src/workflows/testarch/automate/steps-c/step-02-identify-targets.md +95 -0
  119. package/src/workflows/testarch/automate/steps-c/step-03-generate-tests.md +199 -0
  120. package/src/workflows/testarch/automate/steps-c/step-03a-subprocess-api.md +183 -0
  121. package/src/workflows/testarch/automate/steps-c/step-03b-subprocess-e2e.md +181 -0
  122. package/src/workflows/testarch/automate/steps-c/step-03c-aggregate.md +300 -0
  123. package/src/workflows/testarch/automate/steps-c/step-04-validate-and-summarize.md +69 -0
  124. package/src/workflows/testarch/automate/steps-e/step-01-assess.md +65 -0
  125. package/src/workflows/testarch/automate/steps-e/step-02-apply-edit.md +60 -0
  126. package/src/workflows/testarch/automate/steps-v/step-01-validate.md +67 -0
  127. package/src/workflows/testarch/automate/validation-report-20260127-095021.md +72 -0
  128. package/src/workflows/testarch/automate/validation-report-20260127-102401.md +114 -0
  129. package/src/workflows/testarch/automate/workflow-plan.md +20 -0
  130. package/src/workflows/testarch/automate/workflow.md +39 -0
  131. package/src/workflows/testarch/automate/workflow.yaml +54 -0
  132. package/src/workflows/testarch/ci/checklist.md +247 -0
  133. package/src/workflows/testarch/ci/github-actions-template.yaml +198 -0
  134. package/src/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
  135. package/src/workflows/testarch/ci/instructions.md +38 -0
  136. package/src/workflows/testarch/ci/steps-c/step-01-preflight.md +92 -0
  137. package/src/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +82 -0
  138. package/src/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +75 -0
  139. package/src/workflows/testarch/ci/steps-c/step-04-validate-and-summary.md +67 -0
  140. package/src/workflows/testarch/ci/steps-e/step-01-assess.md +65 -0
  141. package/src/workflows/testarch/ci/steps-e/step-02-apply-edit.md +60 -0
  142. package/src/workflows/testarch/ci/steps-v/step-01-validate.md +67 -0
  143. package/src/workflows/testarch/ci/validation-report-20260127-095021.md +72 -0
  144. package/src/workflows/testarch/ci/validation-report-20260127-102401.md +114 -0
  145. package/src/workflows/testarch/ci/workflow-plan.md +20 -0
  146. package/src/workflows/testarch/ci/workflow.md +39 -0
  147. package/src/workflows/testarch/ci/workflow.yaml +47 -0
  148. package/src/workflows/testarch/framework/checklist.md +320 -0
  149. package/src/workflows/testarch/framework/instructions.md +38 -0
  150. package/src/workflows/testarch/framework/steps-c/step-01-preflight.md +75 -0
  151. package/src/workflows/testarch/framework/steps-c/step-02-select-framework.md +73 -0
  152. package/src/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +120 -0
  153. package/src/workflows/testarch/framework/steps-c/step-04-docs-and-scripts.md +70 -0
  154. package/src/workflows/testarch/framework/steps-c/step-05-validate-and-summary.md +68 -0
  155. package/src/workflows/testarch/framework/steps-e/step-01-assess.md +65 -0
  156. package/src/workflows/testarch/framework/steps-e/step-02-apply-edit.md +60 -0
  157. package/src/workflows/testarch/framework/steps-v/step-01-validate.md +67 -0
  158. package/src/workflows/testarch/framework/validation-report-20260127-095021.md +73 -0
  159. package/src/workflows/testarch/framework/validation-report-20260127-102401.md +116 -0
  160. package/src/workflows/testarch/framework/workflow-plan.md +22 -0
  161. package/src/workflows/testarch/framework/workflow.md +39 -0
  162. package/src/workflows/testarch/framework/workflow.yaml +49 -0
  163. package/src/workflows/testarch/nfr-assess/checklist.md +407 -0
  164. package/src/workflows/testarch/nfr-assess/instructions.md +36 -0
  165. package/src/workflows/testarch/nfr-assess/nfr-report-template.md +462 -0
  166. package/src/workflows/testarch/nfr-assess/steps-c/step-01-load-context.md +85 -0
  167. package/src/workflows/testarch/nfr-assess/steps-c/step-02-define-thresholds.md +82 -0
  168. package/src/workflows/testarch/nfr-assess/steps-c/step-03-gather-evidence.md +64 -0
  169. package/src/workflows/testarch/nfr-assess/steps-c/step-04-evaluate-and-score.md +140 -0
  170. package/src/workflows/testarch/nfr-assess/steps-c/step-04a-subprocess-security.md +138 -0
  171. package/src/workflows/testarch/nfr-assess/steps-c/step-04b-subprocess-performance.md +84 -0
  172. package/src/workflows/testarch/nfr-assess/steps-c/step-04c-subprocess-reliability.md +85 -0
  173. package/src/workflows/testarch/nfr-assess/steps-c/step-04d-subprocess-scalability.md +88 -0
  174. package/src/workflows/testarch/nfr-assess/steps-c/step-04e-aggregate-nfr.md +219 -0
  175. package/src/workflows/testarch/nfr-assess/steps-c/step-05-generate-report.md +71 -0
  176. package/src/workflows/testarch/nfr-assess/steps-e/step-01-assess.md +65 -0
  177. package/src/workflows/testarch/nfr-assess/steps-e/step-02-apply-edit.md +60 -0
  178. package/src/workflows/testarch/nfr-assess/steps-v/step-01-validate.md +67 -0
  179. package/src/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +73 -0
  180. package/src/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +116 -0
  181. package/src/workflows/testarch/nfr-assess/workflow-plan.md +19 -0
  182. package/src/workflows/testarch/nfr-assess/workflow.md +39 -0
  183. package/src/workflows/testarch/nfr-assess/workflow.yaml +49 -0
  184. package/src/workflows/testarch/test-design/checklist.md +410 -0
  185. package/src/workflows/testarch/test-design/instructions.md +52 -0
  186. package/src/workflows/testarch/test-design/steps-c/step-01-detect-mode.md +109 -0
  187. package/src/workflows/testarch/test-design/steps-c/step-02-load-context.md +127 -0
  188. package/src/workflows/testarch/test-design/steps-c/step-03-risk-and-testability.md +85 -0
  189. package/src/workflows/testarch/test-design/steps-c/step-04-coverage-plan.md +98 -0
  190. package/src/workflows/testarch/test-design/steps-c/step-05-generate-output.md +97 -0
  191. package/src/workflows/testarch/test-design/steps-e/step-01-assess.md +65 -0
  192. package/src/workflows/testarch/test-design/steps-e/step-02-apply-edit.md +60 -0
  193. package/src/workflows/testarch/test-design/steps-v/step-01-validate.md +67 -0
  194. package/src/workflows/testarch/test-design/test-design-architecture-template.md +222 -0
  195. package/src/workflows/testarch/test-design/test-design-qa-template.md +296 -0
  196. package/src/workflows/testarch/test-design/test-design-template.md +294 -0
  197. package/src/workflows/testarch/test-design/validation-report-20260127-095021.md +73 -0
  198. package/src/workflows/testarch/test-design/validation-report-20260127-102401.md +116 -0
  199. package/src/workflows/testarch/test-design/workflow-plan.md +22 -0
  200. package/src/workflows/testarch/test-design/workflow.md +39 -0
  201. package/src/workflows/testarch/test-design/workflow.yaml +71 -0
  202. package/src/workflows/testarch/test-review/checklist.md +472 -0
  203. package/src/workflows/testarch/test-review/instructions.md +36 -0
  204. package/src/workflows/testarch/test-review/steps-c/step-01-load-context.md +101 -0
  205. package/src/workflows/testarch/test-review/steps-c/step-02-discover-tests.md +69 -0
  206. package/src/workflows/testarch/test-review/steps-c/step-03-quality-evaluation.md +184 -0
  207. package/src/workflows/testarch/test-review/steps-c/step-03a-subprocess-determinism.md +214 -0
  208. package/src/workflows/testarch/test-review/steps-c/step-03b-subprocess-isolation.md +125 -0
  209. package/src/workflows/testarch/test-review/steps-c/step-03c-subprocess-maintainability.md +102 -0
  210. package/src/workflows/testarch/test-review/steps-c/step-03d-subprocess-coverage.md +111 -0
  211. package/src/workflows/testarch/test-review/steps-c/step-03e-subprocess-performance.md +117 -0
  212. package/src/workflows/testarch/test-review/steps-c/step-03f-aggregate-scores.md +246 -0
  213. package/src/workflows/testarch/test-review/steps-c/step-04-generate-report.md +72 -0
  214. package/src/workflows/testarch/test-review/steps-e/step-01-assess.md +65 -0
  215. package/src/workflows/testarch/test-review/steps-e/step-02-apply-edit.md +60 -0
  216. package/src/workflows/testarch/test-review/steps-v/step-01-validate.md +67 -0
  217. package/src/workflows/testarch/test-review/test-review-template.md +390 -0
  218. package/src/workflows/testarch/test-review/validation-report-20260127-095021.md +72 -0
  219. package/src/workflows/testarch/test-review/validation-report-20260127-102401.md +114 -0
  220. package/src/workflows/testarch/test-review/workflow-plan.md +18 -0
  221. package/src/workflows/testarch/test-review/workflow.md +39 -0
  222. package/src/workflows/testarch/test-review/workflow.yaml +48 -0
  223. package/src/workflows/testarch/trace/checklist.md +642 -0
  224. package/src/workflows/testarch/trace/instructions.md +36 -0
  225. package/src/workflows/testarch/trace/steps-c/step-01-load-context.md +80 -0
  226. package/src/workflows/testarch/trace/steps-c/step-02-discover-tests.md +69 -0
  227. package/src/workflows/testarch/trace/steps-c/step-03-map-criteria.md +65 -0
  228. package/src/workflows/testarch/trace/steps-c/step-04-analyze-gaps.md +244 -0
  229. package/src/workflows/testarch/trace/steps-c/step-05-gate-decision.md +232 -0
  230. package/src/workflows/testarch/trace/steps-e/step-01-assess.md +65 -0
  231. package/src/workflows/testarch/trace/steps-e/step-02-apply-edit.md +60 -0
  232. package/src/workflows/testarch/trace/steps-v/step-01-validate.md +67 -0
  233. package/src/workflows/testarch/trace/trace-template.md +675 -0
  234. package/src/workflows/testarch/trace/validation-report-20260127-095021.md +73 -0
  235. package/src/workflows/testarch/trace/validation-report-20260127-102401.md +116 -0
  236. package/src/workflows/testarch/trace/workflow-plan.md +21 -0
  237. package/src/workflows/testarch/trace/workflow.md +39 -0
  238. package/src/workflows/testarch/trace/workflow.yaml +57 -0
  239. package/test/README.md +23 -0
  240. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
  241. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
  242. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
  243. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
  244. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
  245. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
  246. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
  247. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
  248. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
  249. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
  250. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
  251. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
  252. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
  253. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
  254. package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
  255. package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
  256. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
  257. package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
  258. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
  259. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
  260. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
  261. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
  262. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
  263. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
  264. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
  265. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
  266. package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
  267. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
  268. package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
  269. package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
  270. package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
  271. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
  272. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
  273. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
  274. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
  275. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
  276. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
  277. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
  278. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
  279. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
  280. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
  281. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
  282. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
  283. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
  284. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
  285. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
  286. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
  287. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
  288. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
  289. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
  290. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
  291. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
  292. package/test/schema/agent.js +491 -0
  293. package/test/test-agent-schema.js +387 -0
  294. package/test/test-installation-components.js +183 -0
  295. package/test/test-knowledge-base.js +199 -0
  296. package/test/unit-test-schema.js +133 -0
  297. package/test/validate-agent-schema.js +110 -0
  298. package/tools/build-docs.js +575 -0
  299. package/tools/fix-doc-links.js +288 -0
  300. package/tools/schema/agent.js +491 -0
  301. package/tools/validate-agent-schema.js +111 -0
  302. package/tools/validate-doc-links.js +371 -0
  303. package/tools/verify-paths.js +100 -0
  304. package/website/README.md +137 -0
  305. package/website/astro.config.mjs +158 -0
  306. package/website/package-lock.json +6856 -0
  307. package/website/package.json +23 -0
  308. package/website/public/favicon.ico +0 -0
  309. package/website/public/img/tea-logo.svg +7 -0
  310. package/website/public/robots.txt +37 -0
  311. package/website/src/components/Banner.astro +59 -0
  312. package/website/src/components/Header.astro +121 -0
  313. package/website/src/components/MobileMenuFooter.astro +53 -0
  314. package/website/src/content/config.ts +6 -0
  315. package/website/src/lib/site-url.js +25 -0
  316. package/website/src/pages/404.astro +11 -0
  317. package/website/src/rehype-base-paths.js +89 -0
  318. package/website/src/rehype-markdown-links.js +117 -0
  319. package/website/src/styles/custom.css +499 -0
  320. package/website/tsconfig.json +9 -0
@@ -0,0 +1,484 @@
1
+ ---
2
+ title: 'Fixture Architecture Explained'
3
+ description: Understanding TEA's pure function → fixture → composition pattern for reusable test utilities
4
+ ---
5
+
6
+ # Fixture Architecture Explained
7
+
8
+ Fixture architecture is TEA's pattern for building reusable, testable, and composable test utilities. The core principle: build pure functions first, wrap in framework fixtures second.
9
+
10
+ ## Overview
11
+
12
+ **The Pattern:**
13
+
14
+ 1. Write utility as pure function (unit-testable)
15
+ 2. Wrap in framework fixture (Playwright, Cypress)
16
+ 3. Compose fixtures with mergeTests (combine capabilities)
17
+ 4. Package for reuse across projects
18
+
19
+ **Why this order?**
20
+
21
+ - Pure functions are easier to test
22
+ - Fixtures depend on framework (less portable)
23
+ - Composition happens at fixture level
24
+ - Reusability maximized
25
+
26
+ ### Fixture Architecture Flow
27
+
28
+ ```mermaid
29
+ %%{init: {'theme':'base', 'themeVariables': { 'fontSize':'14px'}}}%%
30
+ flowchart TD
31
+ Start([Testing Need]) --> Pure[Step 1: Pure Function<br/>helpers/api-request.ts]
32
+ Pure -->|Unit testable<br/>Framework agnostic| Fixture[Step 2: Fixture Wrapper<br/>fixtures/api-request.ts]
33
+ Fixture -->|Injects framework<br/>dependencies| Compose[Step 3: Composition<br/>fixtures/index.ts]
34
+ Compose -->|mergeTests| Use[Step 4: Use in Tests<br/>tests/**.spec.ts]
35
+
36
+ Pure -.->|Can test in isolation| UnitTest[Unit Tests<br/>No framework needed]
37
+ Fixture -.->|Reusable pattern| Other[Other Projects<br/>Package export]
38
+ Compose -.->|Combine utilities| Multi[Multiple Fixtures<br/>One test]
39
+
40
+ style Pure fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
41
+ style Fixture fill:#fff3e0,stroke:#e65100,stroke-width:2px
42
+ style Compose fill:#f3e5f5,stroke:#6a1b9a,stroke-width:2px
43
+ style Use fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
44
+ style UnitTest fill:#c8e6c9,stroke:#2e7d32,stroke-width:1px
45
+ style Other fill:#c8e6c9,stroke:#2e7d32,stroke-width:1px
46
+ style Multi fill:#c8e6c9,stroke:#2e7d32,stroke-width:1px
47
+ ```
48
+
49
+ **Benefits at Each Step:**
50
+
51
+ 1. **Pure Function:** Testable, portable, reusable
52
+ 2. **Fixture:** Framework integration, clean API
53
+ 3. **Composition:** Combine capabilities, flexible
54
+ 4. **Usage:** Simple imports, type-safe
55
+
56
+ ## The Problem
57
+
58
+ ### Framework-First Approach (Common Anti-Pattern)
59
+
60
+ ```typescript
61
+ // ❌ Bad: Built as fixture from the start
62
+ export const test = base.extend({
63
+ apiRequest: async ({ request }, use) => {
64
+ await use(async (options) => {
65
+ const response = await request.fetch(options.url, {
66
+ method: options.method,
67
+ data: options.data,
68
+ });
69
+
70
+ if (!response.ok()) {
71
+ throw new Error(`API request failed: ${response.status()}`);
72
+ }
73
+
74
+ return response.json();
75
+ });
76
+ },
77
+ });
78
+ ```
79
+
80
+ **Problems:**
81
+
82
+ - Cannot unit test (requires Playwright context)
83
+ - Tied to framework (not reusable in other tools)
84
+ - Hard to compose with other fixtures
85
+ - Difficult to mock for testing the utility itself
86
+
87
+ ### Copy-Paste Utilities
88
+
89
+ ```typescript
90
+ // test-1.spec.ts
91
+ test('test 1', async ({ request }) => {
92
+ const response = await request.post('/api/users', { data: {...} });
93
+ const body = await response.json();
94
+ if (!response.ok()) throw new Error('Failed');
95
+ // ... repeated in every test
96
+ });
97
+
98
+ // test-2.spec.ts
99
+ test('test 2', async ({ request }) => {
100
+ const response = await request.post('/api/users', { data: {...} });
101
+ const body = await response.json();
102
+ if (!response.ok()) throw new Error('Failed');
103
+ // ... same code repeated
104
+ });
105
+ ```
106
+
107
+ **Problems:**
108
+
109
+ - Code duplication (violates DRY)
110
+ - Inconsistent error handling
111
+ - Hard to update (change 50 tests)
112
+ - No shared behavior
113
+
114
+ ## The Solution: Three-Step Pattern
115
+
116
+ ### Step 1: Pure Function
117
+
118
+ ```typescript
119
+ // helpers/api-request.ts
120
+
121
+ /**
122
+ * Make API request with automatic error handling
123
+ * Pure function - no framework dependencies
124
+ */
125
+ export async function apiRequest({
126
+ request, // Passed in (dependency injection)
127
+ method,
128
+ url,
129
+ data,
130
+ headers = {},
131
+ }: ApiRequestParams): Promise<ApiResponse> {
132
+ const response = await request.fetch(url, {
133
+ method,
134
+ data,
135
+ headers,
136
+ });
137
+
138
+ if (!response.ok()) {
139
+ throw new Error(`API request failed: ${response.status()}`);
140
+ }
141
+
142
+ return {
143
+ status: response.status(),
144
+ body: await response.json(),
145
+ };
146
+ }
147
+
148
+ // ✅ Can unit test this function!
149
+ describe('apiRequest', () => {
150
+ it('should throw on non-OK response', async () => {
151
+ const mockRequest = {
152
+ fetch: vi.fn().mockResolvedValue({ ok: () => false, status: () => 500 }),
153
+ };
154
+
155
+ await expect(
156
+ apiRequest({
157
+ request: mockRequest,
158
+ method: 'GET',
159
+ url: '/api/test',
160
+ }),
161
+ ).rejects.toThrow('API request failed: 500');
162
+ });
163
+ });
164
+ ```
165
+
166
+ **Benefits:**
167
+
168
+ - Unit testable (mock dependencies)
169
+ - Framework-agnostic (works with any HTTP client)
170
+ - Easy to reason about (pure function)
171
+ - Portable (can use in Node scripts, CLI tools)
172
+
173
+ ### Step 2: Fixture Wrapper
174
+
175
+ ```typescript
176
+ // fixtures/api-request.ts
177
+ import { test as base } from '@playwright/test';
178
+ import { apiRequest as apiRequestFn } from '../helpers/api-request';
179
+
180
+ /**
181
+ * Playwright fixture wrapping the pure function
182
+ */
183
+ export const test = base.extend<{ apiRequest: typeof apiRequestFn }>({
184
+ apiRequest: async ({ request }, use) => {
185
+ // Inject framework dependency (request)
186
+ await use((params) => apiRequestFn({ request, ...params }));
187
+ },
188
+ });
189
+
190
+ export { expect } from '@playwright/test';
191
+ ```
192
+
193
+ **Benefits:**
194
+
195
+ - Fixture provides framework context (request)
196
+ - Pure function handles logic
197
+ - Clean separation of concerns
198
+ - Can swap frameworks (Cypress, etc.) by changing wrapper only
199
+
200
+ ### Step 3: Composition with mergeTests
201
+
202
+ ```typescript
203
+ // fixtures/index.ts
204
+ import { mergeTests } from '@playwright/test';
205
+ import { test as apiRequestTest } from './api-request';
206
+ import { test as authSessionTest } from './auth-session';
207
+ import { test as logTest } from './log';
208
+
209
+ /**
210
+ * Compose all fixtures into one test
211
+ */
212
+ export const test = mergeTests(apiRequestTest, authSessionTest, logTest);
213
+
214
+ export { expect } from '@playwright/test';
215
+ ```
216
+
217
+ **Usage:**
218
+
219
+ ```typescript
220
+ // tests/profile.spec.ts
221
+ import { test, expect } from '../support/fixtures';
222
+
223
+ test('should update profile', async ({ apiRequest, authToken, log }) => {
224
+ log.info('Starting profile update test');
225
+
226
+ // Use API request fixture (matches pure function signature)
227
+ const { status, body } = await apiRequest({
228
+ method: 'PATCH',
229
+ url: '/api/profile',
230
+ data: { name: 'New Name' },
231
+ headers: { Authorization: `Bearer ${authToken}` },
232
+ });
233
+
234
+ expect(status).toBe(200);
235
+ expect(body.name).toBe('New Name');
236
+
237
+ log.info('Profile updated successfully');
238
+ });
239
+ ```
240
+
241
+ **Note:** This example uses the vanilla pure function signature (`url`, `data`). Playwright Utils uses different parameter names (`path`, `body`). See [Integrate Playwright Utils](/docs/how-to/customization/integrate-playwright-utils.md) for the utilities API.
242
+
243
+ **Note:** `authToken` requires auth-session fixture setup with provider configuration. See [auth-session documentation](https://seontechnologies.github.io/playwright-utils/auth-session.html).
244
+
245
+ **Benefits:**
246
+
247
+ - Use multiple fixtures in one test
248
+ - No manual composition needed
249
+ - Type-safe (TypeScript knows all fixture types)
250
+ - Clean imports
251
+
252
+ ## How It Works in TEA
253
+
254
+ ### TEA Generates This Pattern
255
+
256
+ When you run `framework` with `tea_use_playwright_utils: true`:
257
+
258
+ **TEA scaffolds:**
259
+
260
+ ```
261
+ tests/
262
+ ├── support/
263
+ │ ├── helpers/ # Pure functions
264
+ │ │ ├── api-request.ts
265
+ │ │ └── auth-session.ts
266
+ │ └── fixtures/ # Framework wrappers
267
+ │ ├── api-request.ts
268
+ │ ├── auth-session.ts
269
+ │ └── index.ts # Composition
270
+ └── e2e/
271
+ └── example.spec.ts # Uses composed fixtures
272
+ ```
273
+
274
+ ### TEA Reviews Against This Pattern
275
+
276
+ When you run `test-review`:
277
+
278
+ **TEA checks:**
279
+
280
+ - Are utilities pure functions? ✓
281
+ - Are fixtures minimal wrappers? ✓
282
+ - Is composition used? ✓
283
+ - Can utilities be unit tested? ✓
284
+
285
+ ## Package Export Pattern
286
+
287
+ ### Make Fixtures Reusable Across Projects
288
+
289
+ **Option 1: Build Your Own (Vanilla)**
290
+
291
+ ```json
292
+ // package.json
293
+ {
294
+ "name": "@company/test-utils",
295
+ "exports": {
296
+ "./api-request": "./fixtures/api-request.ts",
297
+ "./auth-session": "./fixtures/auth-session.ts",
298
+ "./log": "./fixtures/log.ts"
299
+ }
300
+ }
301
+ ```
302
+
303
+ **Usage:**
304
+
305
+ ```typescript
306
+ import { test as apiTest } from '@company/test-utils/api-request';
307
+ import { test as authTest } from '@company/test-utils/auth-session';
308
+ import { mergeTests } from '@playwright/test';
309
+
310
+ export const test = mergeTests(apiTest, authTest);
311
+ ```
312
+
313
+ **Option 2: Use Playwright Utils (Recommended)**
314
+
315
+ ```bash
316
+ npm install -D @seontechnologies/playwright-utils
317
+ ```
318
+
319
+ **Usage:**
320
+
321
+ ```typescript
322
+ import { test as base } from '@playwright/test';
323
+ import { mergeTests } from '@playwright/test';
324
+ import { test as apiRequestFixture } from '@seontechnologies/playwright-utils/api-request/fixtures';
325
+ import { createAuthFixtures } from '@seontechnologies/playwright-utils/auth-session';
326
+
327
+ const authFixtureTest = base.extend(createAuthFixtures());
328
+ export const test = mergeTests(apiRequestFixture, authFixtureTest);
329
+ // Production-ready utilities, battle-tested!
330
+ ```
331
+
332
+ **Note:** Auth-session requires provider configuration. See [auth-session setup guide](https://seontechnologies.github.io/playwright-utils/auth-session.html).
333
+
334
+ **Why Playwright Utils:**
335
+
336
+ - Already built, tested, and maintained
337
+ - Consistent patterns across projects
338
+ - 11 utilities available (API, auth, network, logging, files)
339
+ - Community support and documentation
340
+ - Regular updates and improvements
341
+
342
+ **When to Build Your Own:**
343
+
344
+ - Company-specific patterns
345
+ - Custom authentication systems
346
+ - Unique requirements not covered by utilities
347
+
348
+ ## Comparison: Good vs Bad Patterns
349
+
350
+ ### Anti-Pattern: God Fixture
351
+
352
+ ```typescript
353
+ // ❌ Bad: Everything in one fixture
354
+ export const test = base.extend({
355
+ testUtils: async ({ page, request, context }, use) => {
356
+ await use({
357
+ // 50 different methods crammed into one fixture
358
+ apiRequest: async (...) => { },
359
+ login: async (...) => { },
360
+ createUser: async (...) => { },
361
+ deleteUser: async (...) => { },
362
+ uploadFile: async (...) => { },
363
+ // ... 45 more methods
364
+ });
365
+ }
366
+ });
367
+ ```
368
+
369
+ **Problems:**
370
+
371
+ - Cannot test individual utilities
372
+ - Cannot compose (all-or-nothing)
373
+ - Cannot reuse specific utilities
374
+ - Hard to maintain (1000+ line file)
375
+
376
+ ### Good Pattern: Single-Concern Fixtures
377
+
378
+ ```typescript
379
+ // ✅ Good: One concern per fixture
380
+
381
+ // api-request.ts
382
+ export const test = base.extend({ apiRequest });
383
+
384
+ // auth-session.ts
385
+ export const test = base.extend({ authSession });
386
+
387
+ // log.ts
388
+ export const test = base.extend({ log });
389
+
390
+ // Compose as needed
391
+ import { mergeTests } from '@playwright/test';
392
+ export const test = mergeTests(apiRequestTest, authSessionTest, logTest);
393
+ ```
394
+
395
+ **Benefits:**
396
+
397
+ - Each fixture is unit-testable
398
+ - Compose only what you need
399
+ - Reuse individual fixtures
400
+ - Easy to maintain (small files)
401
+
402
+ ## Technical Implementation
403
+
404
+ For detailed fixture architecture patterns, see the knowledge base:
405
+
406
+ - [Knowledge Base Index - Architecture & Fixtures](/docs/reference/knowledge-base.md)
407
+ - [Complete Knowledge Base Index](/docs/reference/knowledge-base.md)
408
+
409
+ ## When to Use This Pattern
410
+
411
+ ### Always Use For:
412
+
413
+ **Reusable utilities:**
414
+
415
+ - API request helpers
416
+ - Authentication handlers
417
+ - File operations
418
+ - Network mocking
419
+
420
+ **Test infrastructure:**
421
+
422
+ - Shared fixtures across teams
423
+ - Packaged utilities (playwright-utils)
424
+ - Company-wide test standards
425
+
426
+ ### Consider Skipping For:
427
+
428
+ **One-off test setup:**
429
+
430
+ ```typescript
431
+ // Simple one-time setup - inline is fine
432
+ test.beforeEach(async ({ page }) => {
433
+ await page.goto('/');
434
+ await page.click('#accept-cookies');
435
+ });
436
+ ```
437
+
438
+ **Test-specific helpers:**
439
+
440
+ ```typescript
441
+ // Used in one test file only - keep local
442
+ function createTestUser(name: string) {
443
+ return { name, email: `${name}@test.com` };
444
+ }
445
+ ```
446
+
447
+ ## Related Concepts
448
+
449
+ **Core TEA Concepts:**
450
+
451
+ - [Test Quality Standards](/docs/explanation/test-quality-standards.md) - Quality standards fixtures enforce
452
+ - [Knowledge Base System](/docs/explanation/knowledge-base-system.md) - Fixture patterns in knowledge base
453
+
454
+ **Technical Patterns:**
455
+
456
+ - [Network-First Patterns](/docs/explanation/network-first-patterns.md) - Network fixtures explained
457
+ - [Risk-Based Testing](/docs/explanation/risk-based-testing.md) - Fixture complexity matches risk
458
+
459
+ **Overview:**
460
+
461
+ - [TEA Overview](/docs/explanation/tea-overview.md) - Fixture architecture in workflows
462
+ - [Testing as Engineering](/docs/explanation/testing-as-engineering.md) - Why fixtures matter
463
+
464
+ ## Practical Guides
465
+
466
+ **Setup Guides:**
467
+
468
+ - [How to Set Up Test Framework](/docs/how-to/workflows/setup-test-framework.md) - TEA scaffolds fixtures
469
+ - [Integrate Playwright Utils](/docs/how-to/customization/integrate-playwright-utils.md) - Production-ready fixtures
470
+
471
+ **Workflow Guides:**
472
+
473
+ - [How to Run ATDD](/docs/how-to/workflows/run-atdd.md) - Using fixtures in tests
474
+ - [How to Run Automate](/docs/how-to/workflows/run-automate.md) - Fixture composition examples
475
+
476
+ ## Reference
477
+
478
+ - [TEA Command Reference](/docs/reference/commands.md) - `framework` command
479
+ - [Knowledge Base Index](/docs/reference/knowledge-base.md) - Fixture architecture fragments
480
+ - [Glossary](/docs/glossary/index.md#test-architect-tea-concepts) - Fixture architecture term
481
+
482
+ ---
483
+
484
+ Generated with [BMad Method](https://bmad-method.org) - TEA (Test Architect)