bmad-method 6.0.0-alpha.12 → 6.0.0-alpha.14
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.
- package/.github/ISSUE_TEMPLATE/idea_submission.md +1 -1
- package/.github/scripts/discord-helpers.sh +15 -0
- package/.github/workflows/bundle-latest.yaml +79 -27
- package/.github/workflows/discord.yaml +278 -8
- package/.github/workflows/quality.yaml +19 -0
- package/.markdownlint-cli2.yaml +42 -0
- package/.prettierignore +3 -0
- package/CHANGELOG.md +254 -1
- package/CODE_OF_CONDUCT.md +128 -0
- package/README.md +3 -1
- package/bmad-method-6.0.0-alpha.14.tgz +0 -0
- package/docs/agent-customization-guide.md +2 -2
- package/docs/custom-agent-installation.md +58 -90
- package/docs/document-sharding-guide.md +1 -1
- package/docs/ide-info/rovo-dev.md +388 -0
- package/docs/index.md +6 -81
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +1 -1
- package/eslint.config.mjs +14 -0
- package/example-custom-content/README.md +4 -0
- package/example-custom-content/agents/commit-poet/commit-poet.agent.yaml +129 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
- package/example-custom-content/agents/toolsmith/toolsmith.agent.yaml +109 -0
- package/example-custom-content/custom.yaml +3 -0
- package/example-custom-content/workflows/quiz-master/steps/step-01-init.md +168 -0
- package/example-custom-content/workflows/quiz-master/steps/step-02-q1.md +155 -0
- package/example-custom-content/workflows/quiz-master/steps/step-03-q2.md +89 -0
- package/example-custom-content/workflows/quiz-master/steps/step-04-q3.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-05-q4.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-06-q5.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-07-q6.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-08-q7.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-09-q8.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-10-q9.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-11-q10.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-12-results.md +150 -0
- package/example-custom-content/workflows/quiz-master/templates/csv-headers.template +1 -0
- package/example-custom-content/workflows/quiz-master/workflow-plan-quiz-master.md +269 -0
- package/example-custom-content/workflows/quiz-master/workflow.md +54 -0
- package/example-custom-content/workflows/wassup/workflow.md +26 -0
- package/example-custom-module/mwm/README.md +4 -0
- package/example-custom-module/mwm/_module-installer/install-config.yaml +27 -0
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/cognitive-distortions.md +47 -0
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/thought-records.md +17 -0
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml +150 -0
- package/example-custom-module/mwm/agents/crisis-navigator.agent.yaml +137 -0
- package/example-custom-module/mwm/agents/meditation-guide.agent.yaml +137 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/insights.md +13 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/instructions.md +30 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/memories.md +13 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/patterns.md +17 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml +124 -0
- package/example-custom-module/mwm/workflows/cbt-thought-record/README.md +31 -0
- package/example-custom-module/mwm/workflows/cbt-thought-record/workflow.md +45 -0
- package/example-custom-module/mwm/workflows/crisis-support/README.md +31 -0
- package/example-custom-module/mwm/workflows/crisis-support/workflow.md +45 -0
- package/example-custom-module/mwm/workflows/daily-checkin/README.md +32 -0
- package/example-custom-module/mwm/workflows/daily-checkin/workflow.md +45 -0
- package/example-custom-module/mwm/workflows/guided-meditation/README.md +31 -0
- package/example-custom-module/mwm/workflows/guided-meditation/workflow.md +45 -0
- package/example-custom-module/mwm/workflows/wellness-journal/README.md +31 -0
- package/example-custom-module/mwm/workflows/wellness-journal/workflow.md +45 -0
- package/package.json +9 -4
- package/src/core/_module-installer/install-config.yaml +5 -1
- package/src/core/agents/bmad-master.agent.yaml +1 -1
- package/src/core/agents/bmad-web-orchestrator.agent.xml +1 -1
- package/src/core/resources/excalidraw/library-loader.md +2 -2
- package/src/core/tasks/advanced-elicitation-methods.csv +51 -21
- package/src/core/tasks/advanced-elicitation.xml +18 -8
- package/src/core/tasks/workflow.xml +36 -71
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
- package/src/core/workflows/brainstorming/template.md +13 -104
- package/src/core/workflows/brainstorming/workflow.md +51 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +203 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +158 -0
- package/src/core/workflows/party-mode/workflow.md +206 -0
- package/src/modules/bmb/README.md +153 -86
- package/src/modules/bmb/_module-installer/install-config.yaml +4 -9
- package/src/modules/bmb/_module-installer/installer.js +76 -0
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +75 -38
- package/src/modules/bmb/docs/{agent-menu-patterns.md → agents/agent-menu-patterns.md} +6 -6
- package/src/modules/bmb/docs/{expert-agent-architecture.md → agents/expert-agent-architecture.md} +20 -20
- package/src/modules/bmb/docs/agents/kb.csv +0 -0
- package/src/modules/bmb/docs/{module-agent-architecture.md → agents/module-agent-architecture.md} +46 -46
- package/src/modules/bmb/docs/{simple-agent-architecture.md → agents/simple-agent-architecture.md} +7 -3
- package/src/modules/bmb/docs/workflows/architecture.md +220 -0
- package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
- package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
- package/src/modules/bmb/docs/workflows/index.md +45 -0
- package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
- package/src/modules/bmb/docs/workflows/kb.csv +0 -0
- package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -0
- package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +223 -0
- package/src/modules/bmb/docs/workflows/templates/step-file.md +139 -0
- package/src/modules/bmb/docs/workflows/templates/step-template.md +290 -0
- package/src/modules/bmb/docs/workflows/templates/workflow-template.md +104 -0
- package/src/modules/bmb/docs/workflows/templates/workflow.md +58 -0
- package/src/modules/bmb/docs/workflows/terms.md +97 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/README.md +4 -4
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +8 -8
- package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +7 -7
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +176 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +120 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +153 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +29 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +50 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +210 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +231 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +224 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +179 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +197 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +180 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +222 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_commands.md +21 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_persona.md +25 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_purpose_and_type.md +23 -0
- package/src/modules/bmb/workflows/create-agent/workflow.md +91 -0
- package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +155 -0
- package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +169 -0
- package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +217 -0
- package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +267 -0
- package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +228 -0
- package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +233 -0
- package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +296 -0
- package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +228 -0
- package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +186 -0
- package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +308 -0
- package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +336 -0
- package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +335 -0
- package/src/modules/bmb/workflows/create-module/templates/agent.template.md +317 -0
- package/src/modules/bmb/workflows/create-module/templates/install-config.template.yaml +53 -0
- package/src/modules/bmb/workflows/create-module/templates/installer.template.js +47 -0
- package/src/modules/bmb/workflows/create-module/templates/module-plan.template.md +5 -0
- package/src/modules/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -0
- package/src/modules/bmb/workflows/create-module/validation.md +126 -0
- package/src/modules/bmb/workflows/create-module/workflow.md +55 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +157 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +211 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +250 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +216 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +289 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +271 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +308 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +284 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +187 -0
- package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
- package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
- package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
- package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/checklist.md +0 -1
- package/src/modules/bmgd/agents/game-architect.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-designer.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-dev.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +1 -1
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +8 -8
- package/src/modules/bmm/_module-installer/install-config.yaml +10 -16
- package/src/modules/bmm/agents/analyst.agent.yaml +25 -22
- package/src/modules/bmm/agents/architect.agent.yaml +12 -14
- package/src/modules/bmm/agents/dev.agent.yaml +20 -16
- package/src/modules/bmm/agents/pm.agent.yaml +14 -32
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +36 -0
- package/src/modules/bmm/agents/sm.agent.yaml +13 -31
- package/src/modules/bmm/agents/tea.agent.yaml +10 -7
- package/src/modules/bmm/agents/tech-writer.agent.yaml +7 -20
- package/src/modules/bmm/agents/ux-designer.agent.yaml +12 -10
- package/src/modules/bmm/data/README.md +29 -0
- package/src/modules/bmm/data/project-context-template.md +40 -0
- package/src/modules/bmm/docs/README.md +44 -10
- package/src/modules/bmm/docs/agents-guide.md +80 -53
- package/src/modules/bmm/docs/bmad-quick-flow.md +528 -0
- package/src/modules/bmm/docs/brownfield-guide.md +25 -39
- package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
- package/src/modules/bmm/docs/faq.md +6 -39
- package/src/modules/bmm/docs/glossary.md +12 -25
- package/src/modules/bmm/docs/images/README.md +37 -0
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +960 -1845
- package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +4 -2
- package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
- package/src/modules/bmm/docs/quick-spec-flow.md +5 -5
- package/src/modules/bmm/docs/quick-start.md +9 -25
- package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
- package/src/modules/bmm/docs/test-architecture.md +90 -24
- package/src/modules/bmm/docs/troubleshooting.md +680 -0
- package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
- package/src/modules/bmm/docs/workflows-analysis.md +36 -140
- package/src/modules/bmm/docs/workflows-implementation.md +175 -160
- package/src/modules/bmm/docs/workflows-planning.md +51 -212
- package/src/modules/bmm/docs/workflows-solutioning.md +26 -71
- package/src/modules/bmm/tasks/daily-standup.xml +85 -0
- package/src/modules/bmm/teams/default-party.csv +15 -14
- package/src/modules/bmm/teams/team-fullstack.yaml +0 -1
- package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
- package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
- package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
- package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +1 -1
- package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
- package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
- package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
- package/src/modules/bmm/testarch/knowledge/log.md +294 -0
- package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
- package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
- package/src/modules/bmm/testarch/knowledge/overview.md +284 -0
- package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
- package/src/modules/bmm/testarch/tea-index.csv +11 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/product-brief.template.md +8 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +192 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +167 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +203 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +206 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +209 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +223 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +199 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +58 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +442 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +181 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +236 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +199 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +248 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +258 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +176 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +474 -0
- package/src/modules/bmm/workflows/1-analysis/research/research.template.md +15 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +238 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +247 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +201 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +238 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +485 -0
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +204 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +209 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +59 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +12 -200
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +243 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +165 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +420 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +289 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +290 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +270 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +261 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +257 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +298 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +269 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +293 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-decision-template.md +13 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/data/domain-complexity.csv +11 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/data/project-types.csv +7 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01-init.md +194 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01b-continue.md +163 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +223 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +330 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +317 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +378 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +351 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +49 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +258 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +232 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +271 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +144 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-01-document-discovery.md +189 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-02-prd-analysis.md +177 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-03-epic-coverage-validation.md +178 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-04-ux-alignment.md +138 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-05-epic-quality-review.md +251 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-06-final-assessment.md +132 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.md +54 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +2 -1
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +224 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +4 -11
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +354 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +21 -34
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +406 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +6 -37
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +3 -3
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +19 -21
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +11 -10
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +174 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +26 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/checklist.md +25 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/instructions.md +202 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +33 -0
- package/src/modules/bmm/workflows/document-project/instructions.md +1 -1
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +2 -2
- package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +20 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +193 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
- package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +1 -1
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +23 -3
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +23 -2
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +1 -1
- package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +36 -3
- package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +25 -4
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +20 -3
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +27 -1
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +8 -2
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +29 -9
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +66 -54
- package/src/modules/bmm/workflows/workflow-status/instructions.md +11 -4
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +4 -8
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +4 -8
- package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +4 -8
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +4 -9
- package/src/modules/cis/agents/README.md +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +3 -2
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +2 -1
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +2 -1
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +2 -1
- package/src/modules/cis/agents/presentation-master.agent.yaml +3 -2
- package/src/modules/cis/agents/storyteller.agent.yaml +2 -1
- package/src/modules/cis/teams/default-party.csv +6 -5
- package/src/utility/models/agent-activation-ide.xml +4 -4
- package/src/utility/models/agent-activation-web.xml +1 -11
- package/src/utility/models/fragments/activation-rules.xml +5 -6
- package/src/utility/models/fragments/handler-exec.xml +6 -5
- package/src/utility/models/fragments/handler-multi.xml +14 -0
- package/test/README.md +1 -1
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
- package/tools/cli/README.md +4 -3
- package/tools/cli/bundlers/web-bundler.js +3 -14
- package/tools/cli/commands/build.js +9 -184
- package/tools/cli/commands/install.js +42 -2
- package/tools/cli/installers/lib/core/config-collector.js +94 -10
- package/tools/cli/installers/lib/core/installer.js +389 -55
- package/tools/cli/installers/lib/core/manifest-generator.js +91 -30
- package/tools/cli/installers/lib/core/post-install-sidecar-replacement.js +79 -0
- package/tools/cli/installers/lib/custom/handler.js +266 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +10 -0
- package/tools/cli/installers/lib/ide/antigravity.js +51 -7
- package/tools/cli/installers/lib/ide/auggie.js +72 -7
- package/tools/cli/installers/lib/ide/claude-code.js +1 -6
- package/tools/cli/installers/lib/ide/cline.js +49 -0
- package/tools/cli/installers/lib/ide/codex.js +2 -2
- package/tools/cli/installers/lib/ide/crush.js +66 -6
- package/tools/cli/installers/lib/ide/cursor.js +29 -13
- package/tools/cli/installers/lib/ide/gemini.js +96 -1
- package/tools/cli/installers/lib/ide/github-copilot.js +59 -48
- package/tools/cli/installers/lib/ide/iflow.js +67 -1
- package/tools/cli/installers/lib/ide/kilo.js +74 -0
- package/tools/cli/installers/lib/ide/kiro-cli.js +327 -0
- package/tools/cli/installers/lib/ide/opencode.js +3 -3
- package/tools/cli/installers/lib/ide/qwen.js +54 -0
- package/tools/cli/installers/lib/ide/roo.js +145 -138
- package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +8 -2
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +34 -19
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +18 -14
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
- package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
- package/tools/cli/installers/lib/ide/trae.js +47 -0
- package/tools/cli/installers/lib/modules/manager.js +486 -53
- package/tools/cli/lib/agent/compiler.js +210 -27
- package/tools/cli/lib/agent/installer.js +140 -30
- package/tools/cli/lib/agent-analyzer.js +46 -18
- package/tools/cli/lib/config.js +2 -1
- package/tools/cli/lib/ui.js +269 -13
- package/tools/cli/lib/yaml-xml-builder.js +123 -39
- package/tools/platform-codes.yaml +12 -0
- package/tools/schema/agent.js +229 -20
- package/tools/validate-svg-changes.sh +356 -0
- package/src/core/tasks/adv-elicit-methods.csv +0 -39
- package/src/core/workflows/brainstorming/README.md +0 -261
- package/src/core/workflows/brainstorming/instructions.md +0 -315
- package/src/core/workflows/brainstorming/workflow.yaml +0 -38
- package/src/core/workflows/party-mode/instructions.md +0 -183
- package/src/core/workflows/party-mode/workflow.yaml +0 -28
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -142
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
- package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
- package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -30
- package/src/modules/bmb/workflows/create-agent/instructions.md +0 -519
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -55
- package/src/modules/bmb/workflows/create-module/README.md +0 -229
- package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
- package/src/modules/bmb/workflows/create-module/checklist.md +0 -235
- package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
- package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
- package/src/modules/bmb/workflows/create-module/instructions.md +0 -577
- package/src/modules/bmb/workflows/create-module/module-structure.md +0 -400
- package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -52
- package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
- package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
- package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
- package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -725
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1327
- package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -15
- package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -61
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -41
- package/src/modules/bmb/workflows/edit-agent/README.md +0 -239
- package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -654
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -49
- package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
- package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -27
- package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +0 -22
- package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
- package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
- package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -56
- package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -61
- package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
- package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
- package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -93
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -78
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -60
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
- package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
- package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -100
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md +0 -80
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +0 -616
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +0 -63
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +0 -169
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +0 -332
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/template.md +0 -146
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +0 -64
- package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -58
- package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
- package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -63
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -28
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
- package/tools/cli/commands/agent-install.js +0 -409
- /package/src/modules/bmb/docs/{agent-compilation.md → agents/agent-compilation.md} +0 -0
- /package/src/modules/bmb/docs/{index.md → agents/index.md} +0 -0
- /package/src/modules/bmb/docs/{understanding-agent-types.md → agents/understanding-agent-types.md} +0 -0
- /package/src/modules/bmb/reference/{readme.md → README.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{agent-validation-checklist.md → data/agent-validation-checklist.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{brainstorm-context.md → data/brainstorm-context.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{communication-presets.csv → data/communication-presets.csv} +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/workflow.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/template.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/workflow.yaml +0 -0
- /package/src/modules/bmm/{workflows/techdoc → data}/documentation-standards.md +0 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Network Error Monitor
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Automatically detect and fail tests when HTTP 4xx/5xx errors occur during execution. Act like Sentry for tests - catch silent backend failures even when UI passes assertions.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
Traditional Playwright tests focus on UI:
|
|
10
|
+
|
|
11
|
+
- Backend 500 errors ignored if UI looks correct
|
|
12
|
+
- Silent failures slip through
|
|
13
|
+
- No visibility into background API health
|
|
14
|
+
- Tests pass while features are broken
|
|
15
|
+
|
|
16
|
+
The `network-error-monitor` provides:
|
|
17
|
+
|
|
18
|
+
- **Automatic detection**: All HTTP 4xx/5xx responses tracked
|
|
19
|
+
- **Test failures**: Fail tests with backend errors (even if UI passes)
|
|
20
|
+
- **Structured artifacts**: JSON reports with error details
|
|
21
|
+
- **Smart opt-out**: Disable for validation tests expecting errors
|
|
22
|
+
- **Deduplication**: Group repeated errors by pattern
|
|
23
|
+
- **Domino effect prevention**: Limit test failures per error pattern
|
|
24
|
+
|
|
25
|
+
## Pattern Examples
|
|
26
|
+
|
|
27
|
+
### Example 1: Basic Auto-Monitoring
|
|
28
|
+
|
|
29
|
+
**Context**: Automatically fail tests when backend errors occur.
|
|
30
|
+
|
|
31
|
+
**Implementation**:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { test } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
|
|
35
|
+
|
|
36
|
+
// Monitoring automatically enabled
|
|
37
|
+
test('should load dashboard', async ({ page }) => {
|
|
38
|
+
await page.goto('/dashboard');
|
|
39
|
+
await expect(page.locator('h1')).toContainText('Dashboard');
|
|
40
|
+
|
|
41
|
+
// ✅ Passes if no HTTP errors
|
|
42
|
+
// ❌ Fails if any 4xx/5xx errors detected with clear message:
|
|
43
|
+
// "Network errors detected: 2 request(s) failed"
|
|
44
|
+
// Failed requests:
|
|
45
|
+
// GET 500 https://api.example.com/users
|
|
46
|
+
// POST 503 https://api.example.com/metrics
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Key Points**:
|
|
51
|
+
|
|
52
|
+
- Zero setup - auto-enabled for all tests
|
|
53
|
+
- Fails on any 4xx/5xx response
|
|
54
|
+
- Structured error message with URLs and status codes
|
|
55
|
+
- JSON artifact attached to test report
|
|
56
|
+
|
|
57
|
+
### Example 2: Opt-Out for Validation Tests
|
|
58
|
+
|
|
59
|
+
**Context**: Some tests expect errors (validation, error handling, edge cases).
|
|
60
|
+
|
|
61
|
+
**Implementation**:
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
import { test } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
|
|
65
|
+
|
|
66
|
+
// Opt-out with annotation
|
|
67
|
+
test('should show error on invalid input', { annotation: [{ type: 'skipNetworkMonitoring' }] }, async ({ page }) => {
|
|
68
|
+
await page.goto('/form');
|
|
69
|
+
await page.click('#submit'); // Triggers 400 error
|
|
70
|
+
|
|
71
|
+
// Monitoring disabled - test won't fail on 400
|
|
72
|
+
await expect(page.getByText('Invalid input')).toBeVisible();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Or opt-out entire describe block
|
|
76
|
+
test.describe('error handling', { annotation: [{ type: 'skipNetworkMonitoring' }] }, () => {
|
|
77
|
+
test('handles 404', async ({ page }) => {
|
|
78
|
+
// All tests in this block skip monitoring
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
test('handles 500', async ({ page }) => {
|
|
82
|
+
// Monitoring disabled
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Key Points**:
|
|
88
|
+
|
|
89
|
+
- Use annotation `{ type: 'skipNetworkMonitoring' }`
|
|
90
|
+
- Can opt-out single test or entire describe block
|
|
91
|
+
- Monitoring still active for other tests
|
|
92
|
+
- Perfect for intentional error scenarios
|
|
93
|
+
|
|
94
|
+
### Example 3: Integration with Merged Fixtures
|
|
95
|
+
|
|
96
|
+
**Context**: Combine network-error-monitor with other utilities.
|
|
97
|
+
|
|
98
|
+
**Implementation**:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
// playwright/support/merged-fixtures.ts
|
|
102
|
+
import { mergeTests } from '@playwright/test';
|
|
103
|
+
import { test as authFixture } from '@seontechnologies/playwright-utils/auth-session/fixtures';
|
|
104
|
+
import { test as networkErrorMonitorFixture } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
|
|
105
|
+
|
|
106
|
+
export const test = mergeTests(
|
|
107
|
+
authFixture,
|
|
108
|
+
networkErrorMonitorFixture,
|
|
109
|
+
// Add other fixtures
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
// In tests
|
|
113
|
+
import { test, expect } from '../support/merged-fixtures';
|
|
114
|
+
|
|
115
|
+
test('authenticated with monitoring', async ({ page, authToken }) => {
|
|
116
|
+
// Both auth and network monitoring active
|
|
117
|
+
await page.goto('/protected');
|
|
118
|
+
|
|
119
|
+
// Fails if backend returns errors during auth flow
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Key Points**:
|
|
124
|
+
|
|
125
|
+
- Combine with `mergeTests`
|
|
126
|
+
- Works alongside all other utilities
|
|
127
|
+
- Monitoring active automatically
|
|
128
|
+
- No extra setup needed
|
|
129
|
+
|
|
130
|
+
### Example 4: Domino Effect Prevention
|
|
131
|
+
|
|
132
|
+
**Context**: One failing endpoint shouldn't fail all tests.
|
|
133
|
+
|
|
134
|
+
**Implementation**:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
// Configuration (internal to utility)
|
|
138
|
+
const config = {
|
|
139
|
+
maxTestsPerError: 3, // Max 3 tests fail per unique error pattern
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// Scenario:
|
|
143
|
+
// Test 1: GET /api/broken → 500 error → Test fails ❌
|
|
144
|
+
// Test 2: GET /api/broken → 500 error → Test fails ❌
|
|
145
|
+
// Test 3: GET /api/broken → 500 error → Test fails ❌
|
|
146
|
+
// Test 4: GET /api/broken → 500 error → Test passes ⚠️ (limit reached, warning logged)
|
|
147
|
+
// Test 5: Different error pattern → Test fails ❌ (new pattern, counter resets)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Key Points**:
|
|
151
|
+
|
|
152
|
+
- Limits cascading failures
|
|
153
|
+
- Groups errors by URL + status code pattern
|
|
154
|
+
- Warns when limit reached
|
|
155
|
+
- Prevents flaky backend from failing entire suite
|
|
156
|
+
|
|
157
|
+
### Example 5: Artifact Structure
|
|
158
|
+
|
|
159
|
+
**Context**: Debugging failed tests with network error artifacts.
|
|
160
|
+
|
|
161
|
+
**Implementation**:
|
|
162
|
+
|
|
163
|
+
When test fails due to network errors, artifact attached:
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
// test-results/my-test/network-errors.json
|
|
167
|
+
{
|
|
168
|
+
"errors": [
|
|
169
|
+
{
|
|
170
|
+
"url": "https://api.example.com/users",
|
|
171
|
+
"method": "GET",
|
|
172
|
+
"status": 500,
|
|
173
|
+
"statusText": "Internal Server Error",
|
|
174
|
+
"timestamp": "2024-08-13T10:30:45.123Z"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"url": "https://api.example.com/metrics",
|
|
178
|
+
"method": "POST",
|
|
179
|
+
"status": 503,
|
|
180
|
+
"statusText": "Service Unavailable",
|
|
181
|
+
"timestamp": "2024-08-13T10:30:46.456Z"
|
|
182
|
+
}
|
|
183
|
+
],
|
|
184
|
+
"summary": {
|
|
185
|
+
"totalErrors": 2,
|
|
186
|
+
"uniquePatterns": 2
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Key Points**:
|
|
192
|
+
|
|
193
|
+
- JSON artifact per failed test
|
|
194
|
+
- Full error details (URL, method, status, timestamp)
|
|
195
|
+
- Summary statistics
|
|
196
|
+
- Easy debugging with structured data
|
|
197
|
+
|
|
198
|
+
## Comparison with Manual Error Checks
|
|
199
|
+
|
|
200
|
+
| Manual Approach | network-error-monitor |
|
|
201
|
+
| ------------------------------------------------------ | -------------------------- |
|
|
202
|
+
| `page.on('response', resp => { if (!resp.ok()) ... })` | Auto-enabled, zero setup |
|
|
203
|
+
| Check each response manually | Automatic for all requests |
|
|
204
|
+
| Custom error tracking logic | Built-in deduplication |
|
|
205
|
+
| No structured artifacts | JSON artifacts attached |
|
|
206
|
+
| Easy to forget | Never miss a backend error |
|
|
207
|
+
|
|
208
|
+
## When to Use
|
|
209
|
+
|
|
210
|
+
**Auto-enabled for:**
|
|
211
|
+
|
|
212
|
+
- ✅ All E2E tests
|
|
213
|
+
- ✅ Integration tests
|
|
214
|
+
- ✅ Any test hitting real APIs
|
|
215
|
+
|
|
216
|
+
**Opt-out for:**
|
|
217
|
+
|
|
218
|
+
- ❌ Validation tests (expecting 4xx)
|
|
219
|
+
- ❌ Error handling tests (expecting 5xx)
|
|
220
|
+
- ❌ Offline tests (network-recorder playback)
|
|
221
|
+
|
|
222
|
+
## Integration with Framework Setup
|
|
223
|
+
|
|
224
|
+
In `*framework` workflow, mention network-error-monitor:
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
// Add to merged-fixtures.ts
|
|
228
|
+
import { test as networkErrorMonitorFixture } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
|
|
229
|
+
|
|
230
|
+
export const test = mergeTests(
|
|
231
|
+
// ... other fixtures
|
|
232
|
+
networkErrorMonitorFixture,
|
|
233
|
+
);
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Related Fragments
|
|
237
|
+
|
|
238
|
+
- `overview.md` - Installation and fixtures
|
|
239
|
+
- `fixtures-composition.md` - Merging with other utilities
|
|
240
|
+
- `error-handling.md` - Traditional error handling patterns
|
|
241
|
+
|
|
242
|
+
## Anti-Patterns
|
|
243
|
+
|
|
244
|
+
**❌ Opting out of monitoring globally:**
|
|
245
|
+
|
|
246
|
+
```typescript
|
|
247
|
+
// Every test skips monitoring
|
|
248
|
+
test.use({ annotation: [{ type: 'skipNetworkMonitoring' }] });
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**✅ Opt-out only for specific error tests:**
|
|
252
|
+
|
|
253
|
+
```typescript
|
|
254
|
+
test.describe('error scenarios', { annotation: [{ type: 'skipNetworkMonitoring' }] }, () => {
|
|
255
|
+
// Only these tests skip monitoring
|
|
256
|
+
});
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**❌ Ignoring network error artifacts:**
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// Test fails, artifact shows 500 errors
|
|
263
|
+
// Developer: "Works on my machine" ¯\_(ツ)_/¯
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**✅ Check artifacts for root cause:**
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
// Read network-errors.json artifact
|
|
270
|
+
// Identify failing endpoint: GET /api/users → 500
|
|
271
|
+
// Fix backend issue before merging
|
|
272
|
+
```
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# Network Recorder Utility
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Record network traffic to HAR files during test execution, then play back from disk for offline testing. Enables frontend tests to run in complete isolation from backend services with intelligent stateful CRUD detection for realistic API behavior.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
Traditional E2E tests require live backend services:
|
|
10
|
+
|
|
11
|
+
- Slow (real network latency)
|
|
12
|
+
- Flaky (backend instability affects tests)
|
|
13
|
+
- Expensive (full stack running for UI tests)
|
|
14
|
+
- Coupled (UI tests break when API changes)
|
|
15
|
+
|
|
16
|
+
HAR-based recording/playback provides:
|
|
17
|
+
|
|
18
|
+
- **True offline testing**: UI tests run without backend
|
|
19
|
+
- **Deterministic behavior**: Same responses every time
|
|
20
|
+
- **Fast execution**: No network latency
|
|
21
|
+
- **Stateful mocking**: CRUD operations work naturally (not just read-only)
|
|
22
|
+
- **Environment flexibility**: Map URLs for any environment
|
|
23
|
+
|
|
24
|
+
## Pattern Examples
|
|
25
|
+
|
|
26
|
+
### Example 1: Basic Record and Playback
|
|
27
|
+
|
|
28
|
+
**Context**: The fundamental pattern - record traffic once, play back for all subsequent runs.
|
|
29
|
+
|
|
30
|
+
**Implementation**:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { test } from '@seontechnologies/playwright-utils/network-recorder/fixtures';
|
|
34
|
+
|
|
35
|
+
// Set mode in test file (recommended)
|
|
36
|
+
process.env.PW_NET_MODE = 'playback'; // or 'record'
|
|
37
|
+
|
|
38
|
+
test('CRUD operations work offline', async ({ page, context, networkRecorder }) => {
|
|
39
|
+
// Setup recorder (records or plays back based on PW_NET_MODE)
|
|
40
|
+
await networkRecorder.setup(context);
|
|
41
|
+
|
|
42
|
+
await page.goto('/');
|
|
43
|
+
|
|
44
|
+
// First time (record mode): Records all network traffic to HAR
|
|
45
|
+
// Subsequent runs (playback mode): Plays back from HAR (no backend!)
|
|
46
|
+
await page.fill('#movie-name', 'Inception');
|
|
47
|
+
await page.click('#add-movie');
|
|
48
|
+
|
|
49
|
+
// Intelligent CRUD detection makes this work offline!
|
|
50
|
+
await expect(page.getByText('Inception')).toBeVisible();
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Key Points**:
|
|
55
|
+
|
|
56
|
+
- `PW_NET_MODE=record` captures traffic to HAR files
|
|
57
|
+
- `PW_NET_MODE=playback` replays from HAR files
|
|
58
|
+
- Set mode in test file or via environment variable
|
|
59
|
+
- HAR files auto-organized by test name
|
|
60
|
+
- Stateful mocking detects CRUD operations
|
|
61
|
+
|
|
62
|
+
### Example 2: Complete CRUD Flow with HAR
|
|
63
|
+
|
|
64
|
+
**Context**: Full create-read-update-delete flow that works completely offline.
|
|
65
|
+
|
|
66
|
+
**Implementation**:
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
process.env.PW_NET_MODE = 'playback';
|
|
70
|
+
|
|
71
|
+
test.describe('Movie CRUD - offline with network recorder', () => {
|
|
72
|
+
test.beforeEach(async ({ page, networkRecorder, context }) => {
|
|
73
|
+
await networkRecorder.setup(context);
|
|
74
|
+
await page.goto('/');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
test('should add, edit, delete movie browser-only', async ({ page, interceptNetworkCall }) => {
|
|
78
|
+
// Create
|
|
79
|
+
await page.fill('#movie-name', 'Inception');
|
|
80
|
+
await page.fill('#year', '2010');
|
|
81
|
+
await page.click('#add-movie');
|
|
82
|
+
|
|
83
|
+
// Verify create (reads from stateful HAR)
|
|
84
|
+
await expect(page.getByText('Inception')).toBeVisible();
|
|
85
|
+
|
|
86
|
+
// Update
|
|
87
|
+
await page.getByText('Inception').click();
|
|
88
|
+
await page.fill('#movie-name', "Inception Director's Cut");
|
|
89
|
+
|
|
90
|
+
const updateCall = interceptNetworkCall({
|
|
91
|
+
method: 'PUT',
|
|
92
|
+
url: '/movies/*',
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
await page.click('#save');
|
|
96
|
+
await updateCall; // Wait for update
|
|
97
|
+
|
|
98
|
+
// Verify update (HAR reflects state change!)
|
|
99
|
+
await page.click('#back');
|
|
100
|
+
await expect(page.getByText("Inception Director's Cut")).toBeVisible();
|
|
101
|
+
|
|
102
|
+
// Delete
|
|
103
|
+
await page.click(`[data-testid="delete-Inception Director's Cut"]`);
|
|
104
|
+
|
|
105
|
+
// Verify delete (HAR reflects removal!)
|
|
106
|
+
await expect(page.getByText("Inception Director's Cut")).not.toBeVisible();
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Key Points**:
|
|
112
|
+
|
|
113
|
+
- Full CRUD operations work offline
|
|
114
|
+
- Stateful HAR mocking tracks creates/updates/deletes
|
|
115
|
+
- Combine with `interceptNetworkCall` for deterministic waits
|
|
116
|
+
- First run records, subsequent runs replay
|
|
117
|
+
|
|
118
|
+
### Example 3: Environment Switching
|
|
119
|
+
|
|
120
|
+
**Context**: Record in dev environment, play back in CI with different base URLs.
|
|
121
|
+
|
|
122
|
+
**Implementation**:
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
// playwright.config.ts - Map URLs for different environments
|
|
126
|
+
export default defineConfig({
|
|
127
|
+
use: {
|
|
128
|
+
baseURL: process.env.CI ? 'https://app.ci.example.com' : 'http://localhost:3000',
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Test works in both environments
|
|
133
|
+
test('cross-environment playback', async ({ page, context, networkRecorder }) => {
|
|
134
|
+
await networkRecorder.setup(context);
|
|
135
|
+
|
|
136
|
+
// In dev: hits http://localhost:3000/api/movies
|
|
137
|
+
// In CI: HAR replays with https://app.ci.example.com/api/movies
|
|
138
|
+
await page.goto('/movies');
|
|
139
|
+
|
|
140
|
+
// Network recorder auto-maps URLs
|
|
141
|
+
await expect(page.getByTestId('movie-list')).toBeVisible();
|
|
142
|
+
});
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Key Points**:
|
|
146
|
+
|
|
147
|
+
- HAR files record absolute URLs
|
|
148
|
+
- Playback maps to current baseURL
|
|
149
|
+
- Same HAR works across environments
|
|
150
|
+
- No manual URL rewriting needed
|
|
151
|
+
|
|
152
|
+
### Example 4: Automatic vs Manual Mode Control
|
|
153
|
+
|
|
154
|
+
**Context**: Choose between environment-based switching or in-test mode control.
|
|
155
|
+
|
|
156
|
+
**Implementation**:
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
// Option 1: Environment variable (recommended for CI)
|
|
160
|
+
PW_NET_MODE=record npm run test:pw # Record traffic
|
|
161
|
+
PW_NET_MODE=playback npm run test:pw # Playback traffic
|
|
162
|
+
|
|
163
|
+
// Option 2: In-test control (recommended for development)
|
|
164
|
+
process.env.PW_NET_MODE = 'record' // Set at top of test file
|
|
165
|
+
|
|
166
|
+
test('my test', async ({ page, context, networkRecorder }) => {
|
|
167
|
+
await networkRecorder.setup(context)
|
|
168
|
+
// ...
|
|
169
|
+
})
|
|
170
|
+
|
|
171
|
+
// Option 3: Auto-fallback (record if HAR missing, else playback)
|
|
172
|
+
// This is the default behavior when PW_NET_MODE not set
|
|
173
|
+
test('auto mode', async ({ page, context, networkRecorder }) => {
|
|
174
|
+
await networkRecorder.setup(context)
|
|
175
|
+
// First run: auto-records
|
|
176
|
+
// Subsequent runs: auto-plays back
|
|
177
|
+
})
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**Key Points**:
|
|
181
|
+
|
|
182
|
+
- Three mode options: record, playback, auto
|
|
183
|
+
- `PW_NET_MODE` environment variable
|
|
184
|
+
- In-test `process.env.PW_NET_MODE` assignment
|
|
185
|
+
- Auto-fallback when no mode specified
|
|
186
|
+
|
|
187
|
+
## Why Use This Instead of Native Playwright?
|
|
188
|
+
|
|
189
|
+
| Native Playwright (`routeFromHAR`) | network-recorder Utility |
|
|
190
|
+
| ---------------------------------- | ------------------------------ |
|
|
191
|
+
| ~80 lines setup boilerplate | ~5 lines total |
|
|
192
|
+
| Manual HAR file management | Automatic file organization |
|
|
193
|
+
| Complex setup/teardown | Automatic cleanup via fixtures |
|
|
194
|
+
| **Read-only tests** | **Full CRUD support** |
|
|
195
|
+
| **Stateless** | **Stateful mocking** |
|
|
196
|
+
| Manual URL mapping | Automatic environment mapping |
|
|
197
|
+
|
|
198
|
+
**The game-changer: Stateful CRUD detection**
|
|
199
|
+
|
|
200
|
+
Native Playwright HAR playback is stateless - a POST create followed by GET list won't show the created item. This utility intelligently tracks CRUD operations in memory to reflect state changes, making offline tests behave like real APIs.
|
|
201
|
+
|
|
202
|
+
## Integration with Other Utilities
|
|
203
|
+
|
|
204
|
+
**With interceptNetworkCall** (deterministic waits):
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
test('use both utilities', async ({ page, context, networkRecorder, interceptNetworkCall }) => {
|
|
208
|
+
await networkRecorder.setup(context);
|
|
209
|
+
|
|
210
|
+
const createCall = interceptNetworkCall({
|
|
211
|
+
method: 'POST',
|
|
212
|
+
url: '/api/movies',
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
await page.click('#add-movie');
|
|
216
|
+
await createCall; // Wait for create (works with HAR!)
|
|
217
|
+
|
|
218
|
+
// Network recorder provides playback, intercept provides determinism
|
|
219
|
+
});
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Related Fragments
|
|
223
|
+
|
|
224
|
+
- `overview.md` - Installation and fixture patterns
|
|
225
|
+
- `intercept-network-call.md` - Combine for deterministic offline tests
|
|
226
|
+
- `auth-session.md` - Record authenticated traffic
|
|
227
|
+
- `network-first.md` - Core pattern for intercept-before-navigate
|
|
228
|
+
|
|
229
|
+
## Anti-Patterns
|
|
230
|
+
|
|
231
|
+
**❌ Mixing record and playback in same test:**
|
|
232
|
+
|
|
233
|
+
```typescript
|
|
234
|
+
process.env.PW_NET_MODE = 'record';
|
|
235
|
+
// ... some test code ...
|
|
236
|
+
process.env.PW_NET_MODE = 'playback'; // Don't switch mid-test
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**✅ One mode per test:**
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
process.env.PW_NET_MODE = 'playback'; // Set once at top
|
|
243
|
+
|
|
244
|
+
test('my test', async ({ page, context, networkRecorder }) => {
|
|
245
|
+
await networkRecorder.setup(context);
|
|
246
|
+
// Entire test uses playback mode
|
|
247
|
+
});
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**❌ Forgetting to call setup:**
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
test('broken', async ({ page, networkRecorder }) => {
|
|
254
|
+
await page.goto('/'); // HAR not active!
|
|
255
|
+
});
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**✅ Always call setup before navigation:**
|
|
259
|
+
|
|
260
|
+
```typescript
|
|
261
|
+
test('correct', async ({ page, context, networkRecorder }) => {
|
|
262
|
+
await networkRecorder.setup(context); // Must setup first
|
|
263
|
+
await page.goto('/'); // Now HAR is active
|
|
264
|
+
});
|
|
265
|
+
```
|