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,638 @@
1
+ ---
2
+ title: 'How to Run Test Review with TEA'
3
+ description: Audit test quality using TEA's comprehensive knowledge base and get 0-100 scoring
4
+ ---
5
+
6
+ # How to Run Test Review with TEA
7
+
8
+ Use TEA's `test-review` workflow to audit test quality with objective scoring and actionable feedback. TEA reviews tests against its knowledge base of best practices.
9
+
10
+ ## When to Use This
11
+
12
+ - Want to validate test quality objectively
13
+ - Need quality metrics for release gates
14
+ - Preparing for production deployment
15
+ - Reviewing team-written tests
16
+ - Auditing AI-generated tests
17
+ - Onboarding new team members (show good patterns)
18
+
19
+ ## Prerequisites
20
+
21
+ - BMad Method installed
22
+ - TEA agent available
23
+ - Tests written (to review)
24
+ - Test framework configured
25
+
26
+ ## Steps
27
+
28
+ ### 1. Load TEA Agent
29
+
30
+ Start a fresh chat and load TEA:
31
+
32
+ ```
33
+ tea
34
+ ```
35
+
36
+ ### 2. Run the Test Review Workflow
37
+
38
+ ```
39
+ test-review
40
+ ```
41
+
42
+ ### 3. Specify Review Scope
43
+
44
+ TEA will ask what to review.
45
+
46
+ #### Option A: Single File
47
+
48
+ Review one test file:
49
+
50
+ ```
51
+ tests/e2e/checkout.spec.ts
52
+ ```
53
+
54
+ **Best for:**
55
+
56
+ - Reviewing specific failing tests
57
+ - Quick feedback on new tests
58
+ - Learning from specific examples
59
+
60
+ #### Option B: Directory
61
+
62
+ Review all tests in a directory:
63
+
64
+ ```
65
+ tests/e2e/
66
+ ```
67
+
68
+ **Best for:**
69
+
70
+ - Reviewing E2E test suite
71
+ - Comparing test quality across files
72
+ - Finding patterns of issues
73
+
74
+ #### Option C: Entire Suite
75
+
76
+ Review all tests:
77
+
78
+ ```
79
+ tests/
80
+ ```
81
+
82
+ **Best for:**
83
+
84
+ - Release gate quality check
85
+ - Comprehensive audit
86
+ - Establishing baseline metrics
87
+
88
+ ### 4. Review the Quality Report
89
+
90
+ TEA generates a comprehensive quality report with scoring.
91
+
92
+ #### Report Structure (`test-review.md`):
93
+
94
+ ````markdown
95
+ # Test Quality Review Report
96
+
97
+ **Date:** 2026-01-13
98
+ **Scope:** tests/e2e/
99
+ **Overall Score:** 76/100
100
+
101
+ ## Summary
102
+
103
+ - **Tests Reviewed:** 12
104
+ - **Passing Quality:** 9 tests (75%)
105
+ - **Needs Improvement:** 3 tests (25%)
106
+ - **Critical Issues:** 2
107
+ - **Recommendations:** 6
108
+
109
+ ## Critical Issues
110
+
111
+ ### 1. Hard Waits Detected
112
+
113
+ **File:** `tests/e2e/checkout.spec.ts:45`
114
+ **Issue:** Using `page.waitForTimeout(3000)`
115
+ **Impact:** Test is flaky and unnecessarily slow
116
+ **Severity:** Critical
117
+
118
+ **Current Code:**
119
+
120
+ ```typescript
121
+ await page.click('button[type="submit"]');
122
+ await page.waitForTimeout(3000); // ❌ Hard wait
123
+ await expect(page.locator('.success')).toBeVisible();
124
+ ```
125
+ ````
126
+
127
+ **Fix:**
128
+
129
+ ```typescript
130
+ await page.click('button[type="submit"]');
131
+ // Wait for the API response that triggers success message
132
+ await page.waitForResponse((resp) => resp.url().includes('/api/checkout') && resp.ok());
133
+ await expect(page.locator('.success')).toBeVisible();
134
+ ```
135
+
136
+ **Why This Matters:**
137
+
138
+ - Hard waits are fixed timeouts that don't wait for actual conditions
139
+ - Tests fail intermittently on slower machines
140
+ - Wastes time waiting even when response is fast
141
+ - Network-first patterns are more reliable
142
+
143
+ ---
144
+
145
+ ### 2. Conditional Flow Control
146
+
147
+ **File:** `tests/e2e/profile.spec.ts:28`
148
+ **Issue:** Using if/else to handle optional elements
149
+ **Impact:** Non-deterministic test behavior
150
+ **Severity:** Critical
151
+
152
+ **Current Code:**
153
+
154
+ ```typescript
155
+ if (await page.locator('.banner').isVisible()) {
156
+ await page.click('.dismiss');
157
+ }
158
+ // ❌ Test behavior changes based on banner presence
159
+ ```
160
+
161
+ **Fix:**
162
+
163
+ ```typescript
164
+ // Option 1: Make banner presence deterministic
165
+ await expect(page.locator('.banner')).toBeVisible();
166
+ await page.click('.dismiss');
167
+
168
+ // Option 2: Test both scenarios separately
169
+ test('should show banner for new users', async ({ page }) => {
170
+ // Test with banner
171
+ });
172
+
173
+ test('should not show banner for returning users', async ({ page }) => {
174
+ // Test without banner
175
+ });
176
+ ```
177
+
178
+ **Why This Matters:**
179
+
180
+ - Tests should be deterministic (same result every run)
181
+ - Conditionals hide bugs (what if banner should always show?)
182
+ - Makes debugging harder
183
+ - Violates test isolation principle
184
+
185
+ ## Recommendations
186
+
187
+ ### 1. Extract Repeated Setup
188
+
189
+ **File:** `tests/e2e/profile.spec.ts`
190
+ **Issue:** Login code duplicated in every test
191
+ **Severity:** Medium
192
+ **Impact:** Maintenance burden, test verbosity
193
+
194
+ **Current:**
195
+
196
+ ```typescript
197
+ test('test 1', async ({ page }) => {
198
+ await page.goto('/login');
199
+ await page.fill('[name="email"]', 'test@example.com');
200
+ await page.fill('[name="password"]', 'password');
201
+ await page.click('button[type="submit"]');
202
+ // Test logic...
203
+ });
204
+
205
+ test('test 2', async ({ page }) => {
206
+ // Same login code repeated
207
+ });
208
+ ```
209
+
210
+ **Fix (Vanilla Playwright):**
211
+
212
+ ```typescript
213
+ // Create fixture in tests/support/fixtures/auth.ts
214
+ import { test as base, Page } from '@playwright/test';
215
+
216
+ export const test = base.extend<{ authenticatedPage: Page }>({
217
+ authenticatedPage: async ({ page }, use) => {
218
+ await page.goto('/login');
219
+ await page.getByLabel('Email').fill('test@example.com');
220
+ await page.getByLabel('Password').fill('password');
221
+ await page.getByRole('button', { name: 'Sign in' }).click();
222
+ await page.waitForURL(/\/dashboard/);
223
+ await use(page);
224
+ },
225
+ });
226
+
227
+ // Use in tests
228
+ test('test 1', async ({ authenticatedPage }) => {
229
+ // Already logged in
230
+ });
231
+ ```
232
+
233
+ **Better (With Playwright Utils):**
234
+
235
+ ```typescript
236
+ // Use built-in auth-session fixture
237
+ import { test as base } from '@playwright/test';
238
+ import { createAuthFixtures } from '@seontechnologies/playwright-utils/auth-session';
239
+
240
+ export const test = base.extend(createAuthFixtures());
241
+
242
+ // Use in tests - even simpler
243
+ test('test 1', async ({ page, authToken }) => {
244
+ // authToken already available (persisted, reused)
245
+ await page.goto('/dashboard');
246
+ // Already authenticated via authToken
247
+ });
248
+ ```
249
+
250
+ **Playwright Utils Benefits:**
251
+
252
+ - Token persisted to disk (faster subsequent runs)
253
+ - Multi-user support out of the box
254
+ - Automatic token renewal if expired
255
+ - No manual login flow needed
256
+
257
+ ---
258
+
259
+ ### 2. Add Network Assertions
260
+
261
+ **File:** `tests/e2e/api-calls.spec.ts`
262
+ **Issue:** No verification of API responses
263
+ **Severity:** Low
264
+ **Impact:** Tests don't catch API errors
265
+
266
+ **Current:**
267
+
268
+ ```typescript
269
+ await page.click('button[name="save"]');
270
+ await expect(page.locator('.success')).toBeVisible();
271
+ // ❌ What if API returned 500 but UI shows cached success?
272
+ ```
273
+
274
+ **Enhancement:**
275
+
276
+ ```typescript
277
+ const responsePromise = page.waitForResponse((resp) => resp.url().includes('/api/profile') && resp.status() === 200);
278
+ await page.click('button[name="save"]');
279
+ const response = await responsePromise;
280
+
281
+ // Verify API response
282
+ const data = await response.json();
283
+ expect(data.success).toBe(true);
284
+
285
+ // Verify UI
286
+ await expect(page.locator('.success')).toBeVisible();
287
+ ```
288
+
289
+ ---
290
+
291
+ ### 3. Improve Test Names
292
+
293
+ **File:** `tests/e2e/checkout.spec.ts`
294
+ **Issue:** Vague test names
295
+ **Severity:** Low
296
+ **Impact:** Hard to understand test purpose
297
+
298
+ **Current:**
299
+
300
+ ```typescript
301
+ test('should work', async ({ page }) => {});
302
+ test('test checkout', async ({ page }) => {});
303
+ ```
304
+
305
+ **Better:**
306
+
307
+ ```typescript
308
+ test('should complete checkout with valid credit card', async ({ page }) => {});
309
+ test('should show validation error for expired card', async ({ page }) => {});
310
+ ```
311
+
312
+ ## Quality Scores by Category
313
+
314
+ | Category | Score | Target | Status |
315
+ | --------------- | ----- | ------ | -------------------- |
316
+ | **Determinism** | 26/35 | 30/35 | ⚠️ Needs Improvement |
317
+ | **Isolation** | 22/25 | 20/25 | ✅ Good |
318
+ | **Assertions** | 18/20 | 16/20 | ✅ Good |
319
+ | **Structure** | 7/10 | 8/10 | ⚠️ Minor Issues |
320
+ | **Performance** | 3/10 | 8/10 | ❌ Critical |
321
+
322
+ ### Scoring Breakdown
323
+
324
+ **Determinism (35 points max):**
325
+
326
+ - No hard waits: 0/10 ❌ (found 3 instances)
327
+ - No conditionals: 8/10 ⚠️ (found 2 instances)
328
+ - No try-catch flow control: 10/10 ✅
329
+ - Network-first patterns: 8/15 ⚠️ (some tests missing)
330
+
331
+ **Isolation (25 points max):**
332
+
333
+ - Self-cleaning: 20/20 ✅
334
+ - No global state: 5/5 ✅
335
+ - Parallel-safe: 0/0 ✅ (not tested)
336
+
337
+ **Assertions (20 points max):**
338
+
339
+ - Explicit in test body: 15/15 ✅
340
+ - Specific and meaningful: 3/5 ⚠️ (some weak assertions)
341
+
342
+ **Structure (10 points max):**
343
+
344
+ - Test size < 300 lines: 5/5 ✅
345
+ - Clear names: 2/5 ⚠️ (some vague names)
346
+
347
+ **Performance (10 points max):**
348
+
349
+ - Execution time < 1.5 min: 3/10 ❌ (3 tests exceed limit)
350
+
351
+ ## Files Reviewed
352
+
353
+ | File | Score | Issues | Status |
354
+ | ---------------------------- | ------ | ------ | -------------------- |
355
+ | `tests/e2e/checkout.spec.ts` | 65/100 | 4 | ❌ Needs Work |
356
+ | `tests/e2e/profile.spec.ts` | 72/100 | 3 | ⚠️ Needs Improvement |
357
+ | `tests/e2e/search.spec.ts` | 88/100 | 1 | ✅ Good |
358
+ | `tests/api/profile.spec.ts` | 92/100 | 0 | ✅ Excellent |
359
+
360
+ ## Next Steps
361
+
362
+ ### Immediate (Fix Critical Issues)
363
+
364
+ 1. Remove hard waits in `checkout.spec.ts` (line 45, 67, 89)
365
+ 2. Fix conditional in `profile.spec.ts` (line 28)
366
+ 3. Optimize slow tests in `checkout.spec.ts`
367
+
368
+ ### Short-term (Apply Recommendations)
369
+
370
+ 4. Extract login fixture from `profile.spec.ts`
371
+ 5. Add network assertions to `api-calls.spec.ts`
372
+ 6. Improve test names in `checkout.spec.ts`
373
+
374
+ ### Long-term (Continuous Improvement)
375
+
376
+ 7. Re-run `test-review` after fixes (target: 85/100)
377
+ 8. Add performance budgets to CI
378
+ 9. Document test patterns for team
379
+
380
+ ## Knowledge Base References
381
+
382
+ TEA reviewed against these patterns:
383
+
384
+ - [test-quality.md](/docs/reference/knowledge-base.md) - Execution limits, isolation
385
+ - [network-first.md](/docs/reference/knowledge-base.md) - Deterministic waits
386
+ - [timing-debugging.md](/docs/reference/knowledge-base.md) - Race conditions
387
+ - [selector-resilience.md](/docs/reference/knowledge-base.md) - Robust selectors
388
+
389
+ ````
390
+
391
+ ## Understanding the Scores
392
+
393
+ ### What Do Scores Mean?
394
+
395
+ | Score Range | Interpretation | Action |
396
+ |-------------|----------------|--------|
397
+ | **90-100** | Excellent | Minimal changes needed, production-ready |
398
+ | **80-89** | Good | Minor improvements recommended |
399
+ | **70-79** | Acceptable | Address recommendations before release |
400
+ | **60-69** | Needs Improvement | Fix critical issues, apply recommendations |
401
+ | **< 60** | Critical | Significant refactoring needed |
402
+
403
+ ### Scoring Criteria
404
+
405
+ **Determinism (35 points):**
406
+ - Tests produce same result every run
407
+ - No random failures (flakiness)
408
+ - No environment-dependent behavior
409
+
410
+ **Isolation (25 points):**
411
+ - Tests don't depend on each other
412
+ - Can run in any order
413
+ - Clean up after themselves
414
+
415
+ **Assertions (20 points):**
416
+ - Verify actual behavior
417
+ - Specific and meaningful
418
+ - Not abstracted away in helpers
419
+
420
+ **Structure (10 points):**
421
+ - Readable and maintainable
422
+ - Appropriate size
423
+ - Clear naming
424
+
425
+ **Performance (10 points):**
426
+ - Fast execution
427
+ - Efficient selectors
428
+ - No unnecessary waits
429
+
430
+ ## What You Get
431
+
432
+ ### Quality Report
433
+ - Overall score (0-100)
434
+ - Category scores (Determinism, Isolation, etc.)
435
+ - File-by-file breakdown
436
+
437
+ ### Critical Issues
438
+ - Specific line numbers
439
+ - Code examples (current vs fixed)
440
+ - Why it matters explanation
441
+ - Impact assessment
442
+
443
+ ### Recommendations
444
+ - Actionable improvements
445
+ - Code examples
446
+ - Priority/severity levels
447
+
448
+ ### Next Steps
449
+ - Immediate actions (fix critical)
450
+ - Short-term improvements
451
+ - Long-term quality goals
452
+
453
+ ## Tips
454
+
455
+ ### Review Before Release
456
+
457
+ Make test review part of release checklist:
458
+
459
+ ```markdown
460
+ ## Release Checklist
461
+ - [ ] All tests passing
462
+ - [ ] Test review score > 80
463
+ - [ ] Critical issues resolved
464
+ - [ ] Performance within budget
465
+ ````
466
+
467
+ ### Review After AI Generation
468
+
469
+ Always review AI-generated tests:
470
+
471
+ ```
472
+ 1. Run atdd or automate
473
+ 2. Run test-review on generated tests
474
+ 3. Fix critical issues
475
+ 4. Commit tests
476
+ ```
477
+
478
+ ### Set Quality Gates
479
+
480
+ Use scores as quality gates:
481
+
482
+ ```yaml
483
+ # .github/workflows/test.yml
484
+ - name: Review test quality
485
+ run: |
486
+ # Run test review
487
+ # Parse score from report
488
+ if [ $SCORE -lt 80 ]; then
489
+ echo "Test quality below threshold"
490
+ exit 1
491
+ fi
492
+ ```
493
+
494
+ ### Review Regularly
495
+
496
+ Schedule periodic reviews:
497
+
498
+ - **Per story:** Optional (spot check new tests)
499
+ - **Per epic:** Recommended (ensure consistency)
500
+ - **Per release:** Recommended for quality gates (required if using formal gate process)
501
+ - **Quarterly:** Audit entire suite
502
+
503
+ ### Focus Reviews
504
+
505
+ For large suites, review incrementally:
506
+
507
+ **Week 1:** Review E2E tests
508
+ **Week 2:** Review API tests
509
+ **Week 3:** Review component tests (Cypress CT or Vitest)
510
+ **Week 4:** Apply fixes across all suites
511
+
512
+ **Component Testing Note:** TEA reviews component tests using framework-specific knowledge:
513
+
514
+ - **Cypress:** Reviews Cypress Component Testing specs (\*.cy.tsx)
515
+ - **Playwright:** Reviews Vitest component tests (\*.test.tsx)
516
+
517
+ ### Use Reviews for Learning
518
+
519
+ Share reports with team:
520
+
521
+ ```
522
+ Team Meeting:
523
+ - Review test-review.md
524
+ - Discuss critical issues
525
+ - Agree on patterns
526
+ - Update team guidelines
527
+ ```
528
+
529
+ ### Compare Over Time
530
+
531
+ Track improvement:
532
+
533
+ ```markdown
534
+ ## Quality Trend
535
+
536
+ | Date | Score | Critical Issues | Notes |
537
+ | ---------- | ----- | --------------- | --------------------- |
538
+ | 2026-01-01 | 65 | 5 | Baseline |
539
+ | 2026-01-15 | 72 | 2 | Fixed hard waits |
540
+ | 2026-02-01 | 84 | 0 | All critical resolved |
541
+ ```
542
+
543
+ ## Common Issues
544
+
545
+ ### Low Determinism Score
546
+
547
+ **Symptoms:**
548
+
549
+ - Tests fail randomly
550
+ - "Works on my machine"
551
+ - CI failures that don't reproduce locally
552
+
553
+ **Common Causes:**
554
+
555
+ - Hard waits (`waitForTimeout`)
556
+ - Conditional flow control (`if/else`)
557
+ - Try-catch for flow control
558
+ - Missing network-first patterns
559
+
560
+ **Fix:** Review determinism section, apply network-first patterns
561
+
562
+ ### Low Performance Score
563
+
564
+ **Symptoms:**
565
+
566
+ - Tests take > 1.5 minutes each
567
+ - Test suite takes hours
568
+ - CI times out
569
+
570
+ **Common Causes:**
571
+
572
+ - Unnecessary waits (hard timeouts)
573
+ - Inefficient selectors (XPath, complex CSS)
574
+ - Not using parallelization
575
+ - Heavy setup in every test
576
+
577
+ **Fix:** Optimize waits, improve selectors, use fixtures
578
+
579
+ ### Low Isolation Score
580
+
581
+ **Symptoms:**
582
+
583
+ - Tests fail when run in different order
584
+ - Tests fail in parallel
585
+ - Test data conflicts
586
+
587
+ **Common Causes:**
588
+
589
+ - Shared global state
590
+ - Tests don't clean up
591
+ - Hard-coded test data
592
+ - Database not reset between tests
593
+
594
+ **Fix:** Use fixtures, clean up in afterEach, use unique test data
595
+
596
+ ### "Too Many Issues to Fix"
597
+
598
+ **Problem:** Report shows 50+ issues, overwhelming.
599
+
600
+ **Solution:** Prioritize:
601
+
602
+ 1. Fix all critical issues first
603
+ 2. Apply top 3 recommendations
604
+ 3. Re-run review
605
+ 4. Iterate
606
+
607
+ Don't try to fix everything at once.
608
+
609
+ ### Reviews Take Too Long
610
+
611
+ **Problem:** Reviewing entire suite takes hours.
612
+
613
+ **Solution:** Review incrementally:
614
+
615
+ - Review new tests in PR review
616
+ - Schedule directory reviews weekly
617
+ - Full suite review quarterly
618
+
619
+ ## Related Guides
620
+
621
+ - [How to Run ATDD](/docs/how-to/workflows/run-atdd.md) - Generate tests to review
622
+ - [How to Run Automate](/docs/how-to/workflows/run-automate.md) - Expand coverage to review
623
+ - [How to Run Trace](/docs/how-to/workflows/run-trace.md) - Coverage complements quality
624
+
625
+ ## Understanding the Concepts
626
+
627
+ - [Test Quality Standards](/docs/explanation/test-quality-standards.md) - What makes tests good
628
+ - [Network-First Patterns](/docs/explanation/network-first-patterns.md) - Avoiding flakiness
629
+ - [Fixture Architecture](/docs/explanation/fixture-architecture.md) - Reusable patterns
630
+
631
+ ## Reference
632
+
633
+ - [Command: \*test-review](/docs/reference/commands.md#test-review) - Full command reference
634
+ - [Knowledge Base Index](/docs/reference/knowledge-base.md) - Patterns TEA reviews against
635
+
636
+ ---
637
+
638
+ Generated with [BMad Method](https://bmad-method.org) - TEA (Test Architect)