bmad-method 6.0.0-alpha.11 → 6.0.0-alpha.13
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/workflows/bundle-latest.yaml +79 -27
- package/CHANGELOG.md +167 -1
- package/README.md +3 -1
- package/custom/src/agents/commit-poet/commit-poet.agent.yaml +129 -0
- package/custom/src/agents/commit-poet/installation-guide.md +36 -0
- package/custom/src/agents/toolsmith/installation-guide.md +36 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
- package/custom/src/agents/toolsmith/toolsmith.agent.yaml +108 -0
- package/docs/custom-agent-installation.md +31 -17
- 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/package.json +3 -2
- package/src/core/agents/bmad-master.agent.yaml +1 -1
- package/src/core/agents/bmad-web-orchestrator.agent.xml +1 -1
- 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 +159 -0
- package/src/core/workflows/party-mode/workflow.md +207 -0
- package/src/modules/bmb/README.md +153 -86
- package/src/modules/bmb/_module-installer/install-config.yaml +3 -3
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +45 -31
- package/src/modules/bmb/docs/{agent-menu-patterns.md → agents/agent-menu-patterns.md} +1 -1
- package/src/modules/bmb/docs/agents/kb.csv +0 -0
- package/src/modules/bmb/docs/{module-agent-architecture.md → agents/module-agent-architecture.md} +1 -1
- package/src/modules/bmb/docs/{simple-agent-architecture.md → agents/simple-agent-architecture.md} +1 -1
- 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/step-template.md +283 -0
- package/src/modules/bmb/docs/workflows/terms.md +97 -0
- package/src/modules/bmb/docs/workflows/workflow-template.md +152 -0
- package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +2 -2
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +1 -1
- 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 +177 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -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 +152 -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 +17 -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-workflow/steps/step-01-init.md +168 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +233 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-overview.md +127 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-04-core-tools.md +145 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-05-memory-requirements.md +136 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-06-external-tools.md +154 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-installation-guidance.md +159 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-08-tools-summary.md +167 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-09-design.md +239 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-10-plan-review.md +215 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-11-build.md +262 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-12-review.md +270 -0
- package/src/modules/bmb/workflows/create-workflow/templates/build-summary.md +36 -0
- package/src/modules/bmb/workflows/create-workflow/templates/completion-section.md +39 -0
- package/src/modules/bmb/workflows/create-workflow/templates/content-template.md +21 -0
- package/src/modules/bmb/workflows/create-workflow/templates/design-section.md +53 -0
- package/src/modules/bmb/workflows/create-workflow/templates/project-info.md +18 -0
- package/src/modules/bmb/workflows/create-workflow/templates/requirements-section.md +47 -0
- package/src/modules/bmb/workflows/create-workflow/templates/review-section.md +56 -0
- package/src/modules/bmb/workflows/create-workflow/templates/step-file.md +139 -0
- package/src/modules/bmb/workflows/create-workflow/templates/workflow-plan.md +54 -0
- package/src/modules/bmb/workflows/create-workflow/templates/workflow.md +58 -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 +221 -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/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/bmm/_module-installer/install-config.yaml +9 -15
- package/src/modules/bmm/agents/analyst.agent.yaml +14 -14
- package/src/modules/bmm/agents/architect.agent.yaml +12 -10
- package/src/modules/bmm/agents/dev.agent.yaml +20 -16
- package/src/modules/bmm/agents/pm.agent.yaml +13 -31
- 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 +21 -9
- package/src/modules/bmm/docs/agents-guide.md +69 -23
- package/src/modules/bmm/docs/bmad-quick-flow.md +528 -0
- package/src/modules/bmm/docs/brownfield-guide.md +9 -10
- package/src/modules/bmm/docs/enterprise-agentic-development.md +1 -1
- package/src/modules/bmm/docs/glossary.md +5 -5
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +909 -1654
- package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +2 -2
- package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
- package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
- package/src/modules/bmm/docs/test-architecture.md +84 -18
- package/src/modules/bmm/docs/workflows-analysis.md +36 -140
- package/src/modules/bmm/docs/workflows-implementation.md +32 -157
- package/src/modules/bmm/docs/workflows-planning.md +51 -212
- package/src/modules/bmm/docs/workflows-solutioning.md +24 -69
- 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/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 +443 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +235 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +198 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +247 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +257 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +175 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/src/modules/bmm/workflows/1-analysis/research/research.template.md +16 -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 +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +246 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +200 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +198 -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 +53 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +5 -200
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +161 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +123 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +275 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +271 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +272 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +249 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +240 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +236 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +280 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +251 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +275 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +210 -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 +48 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +247 -476
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +8 -18
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +176 -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 +324 -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/sprint-planning/sprint-status-template.yaml +4 -3
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -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 +105 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +29 -0
- 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/instructions.md +23 -3
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +23 -2
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +18 -1
- 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 +28 -8
- 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 +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +3 -2
- 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 +1 -0
- package/tools/cli/bundlers/web-bundler.js +3 -14
- package/tools/cli/commands/agent-install.js +8 -8
- package/tools/cli/commands/cleanup.js +141 -0
- package/tools/cli/commands/install.js +48 -3
- package/tools/cli/installers/lib/core/config-collector.js +24 -0
- package/tools/cli/installers/lib/core/installer.js +612 -43
- package/tools/cli/installers/lib/ide/antigravity.js +51 -7
- package/tools/cli/installers/lib/ide/auggie.js +53 -0
- 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 +47 -0
- package/tools/cli/installers/lib/ide/gemini.js +47 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +59 -48
- package/tools/cli/installers/lib/ide/iflow.js +47 -0
- package/tools/cli/installers/lib/ide/kilo.js +74 -0
- package/tools/cli/installers/lib/ide/qwen.js +54 -0
- package/tools/cli/installers/lib/ide/roo.js +71 -0
- package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
- package/tools/cli/installers/lib/ide/trae.js +47 -0
- package/tools/cli/lib/agent/compiler.js +156 -22
- package/tools/cli/lib/agent/installer.js +13 -3
- package/tools/cli/lib/agent-analyzer.js +46 -18
- package/tools/cli/lib/ui.js +204 -9
- package/tools/cli/lib/yaml-xml-builder.js +123 -24
- package/tools/platform-codes.yaml +12 -0
- package/tools/schema/agent.js +169 -20
- 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-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/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/docs/quick-spec-flow.md +0 -652
- 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/4-implementation/code-review/backlog_template.md +0 -12
- package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
- 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/src/modules/bmb/docs/{agent-compilation.md → agents/agent-compilation.md} +0 -0
- /package/src/modules/bmb/docs/{expert-agent-architecture.md → agents/expert-agent-architecture.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}/create-module/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/brainstorm-context.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/installer-templates/install-config.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/installer-templates/installer.js +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/module-structure.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/workflow.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/checklist.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,273 @@
|
|
|
1
|
+
# Burn-in Test Runner
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Use smart test selection with git diff analysis to run only affected tests. Filter out irrelevant changes (configs, types, docs) and control test volume with percentage-based execution. Reduce unnecessary CI runs while maintaining reliability.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
Playwright's `--only-changed` triggers all affected tests:
|
|
10
|
+
|
|
11
|
+
- Config file changes trigger hundreds of tests
|
|
12
|
+
- Type definition changes cause full suite runs
|
|
13
|
+
- No volume control (all or nothing)
|
|
14
|
+
- Slow CI pipelines
|
|
15
|
+
|
|
16
|
+
The `burn-in` utility provides:
|
|
17
|
+
|
|
18
|
+
- **Smart filtering**: Skip patterns for irrelevant files (configs, types, docs)
|
|
19
|
+
- **Volume control**: Run percentage of affected tests after filtering
|
|
20
|
+
- **Custom dependency analysis**: More accurate than Playwright's built-in
|
|
21
|
+
- **CI optimization**: Faster pipelines without sacrificing confidence
|
|
22
|
+
- **Process of elimination**: Start with all → filter irrelevant → control volume
|
|
23
|
+
|
|
24
|
+
## Pattern Examples
|
|
25
|
+
|
|
26
|
+
### Example 1: Basic Burn-in Setup
|
|
27
|
+
|
|
28
|
+
**Context**: Run burn-in on changed files compared to main branch.
|
|
29
|
+
|
|
30
|
+
**Implementation**:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// Step 1: Create burn-in script
|
|
34
|
+
// playwright/scripts/burn-in-changed.ts
|
|
35
|
+
import { runBurnIn } from '@seontechnologies/playwright-utils/burn-in'
|
|
36
|
+
|
|
37
|
+
async function main() {
|
|
38
|
+
await runBurnIn({
|
|
39
|
+
configPath: 'playwright/config/.burn-in.config.ts',
|
|
40
|
+
baseBranch: 'main'
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
main().catch(console.error)
|
|
45
|
+
|
|
46
|
+
// Step 2: Create config
|
|
47
|
+
// playwright/config/.burn-in.config.ts
|
|
48
|
+
import type { BurnInConfig } from '@seontechnologies/playwright-utils/burn-in'
|
|
49
|
+
|
|
50
|
+
const config: BurnInConfig = {
|
|
51
|
+
// Files that never trigger tests (first filter)
|
|
52
|
+
skipBurnInPatterns: [
|
|
53
|
+
'**/config/**',
|
|
54
|
+
'**/*constants*',
|
|
55
|
+
'**/*types*',
|
|
56
|
+
'**/*.md',
|
|
57
|
+
'**/README*'
|
|
58
|
+
],
|
|
59
|
+
|
|
60
|
+
// Run 30% of remaining tests after skip filter
|
|
61
|
+
burnInTestPercentage: 0.3,
|
|
62
|
+
|
|
63
|
+
// Burn-in repetition
|
|
64
|
+
burnIn: {
|
|
65
|
+
repeatEach: 3, // Run each test 3 times
|
|
66
|
+
retries: 1 // Allow 1 retry
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export default config
|
|
71
|
+
|
|
72
|
+
// Step 3: Add package.json script
|
|
73
|
+
{
|
|
74
|
+
"scripts": {
|
|
75
|
+
"test:pw:burn-in-changed": "tsx playwright/scripts/burn-in-changed.ts"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Key Points**:
|
|
81
|
+
|
|
82
|
+
- Two-stage filtering: skip patterns, then volume control
|
|
83
|
+
- `skipBurnInPatterns` eliminates irrelevant files
|
|
84
|
+
- `burnInTestPercentage` controls test volume (0.3 = 30%)
|
|
85
|
+
- Custom dependency analysis finds actually affected tests
|
|
86
|
+
|
|
87
|
+
### Example 2: CI Integration
|
|
88
|
+
|
|
89
|
+
**Context**: Use burn-in in GitHub Actions for efficient CI runs.
|
|
90
|
+
|
|
91
|
+
**Implementation**:
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
# .github/workflows/burn-in.yml
|
|
95
|
+
name: Burn-in Changed Tests
|
|
96
|
+
|
|
97
|
+
on:
|
|
98
|
+
pull_request:
|
|
99
|
+
branches: [main]
|
|
100
|
+
|
|
101
|
+
jobs:
|
|
102
|
+
burn-in:
|
|
103
|
+
runs-on: ubuntu-latest
|
|
104
|
+
steps:
|
|
105
|
+
- uses: actions/checkout@v4
|
|
106
|
+
with:
|
|
107
|
+
fetch-depth: 0 # Need git history
|
|
108
|
+
|
|
109
|
+
- name: Setup Node
|
|
110
|
+
uses: actions/setup-node@v4
|
|
111
|
+
|
|
112
|
+
- name: Install dependencies
|
|
113
|
+
run: npm ci
|
|
114
|
+
|
|
115
|
+
- name: Run burn-in on changed tests
|
|
116
|
+
run: npm run test:pw:burn-in-changed -- --base-branch=origin/main
|
|
117
|
+
|
|
118
|
+
- name: Upload artifacts
|
|
119
|
+
if: failure()
|
|
120
|
+
uses: actions/upload-artifact@v4
|
|
121
|
+
with:
|
|
122
|
+
name: burn-in-failures
|
|
123
|
+
path: test-results/
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Key Points**:
|
|
127
|
+
|
|
128
|
+
- `fetch-depth: 0` for full git history
|
|
129
|
+
- Pass `--base-branch=origin/main` for PR comparison
|
|
130
|
+
- Upload artifacts only on failure
|
|
131
|
+
- Significantly faster than full suite
|
|
132
|
+
|
|
133
|
+
### Example 3: How It Works (Process of Elimination)
|
|
134
|
+
|
|
135
|
+
**Context**: Understanding the filtering pipeline.
|
|
136
|
+
|
|
137
|
+
**Scenario:**
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
Git diff finds: 21 changed files
|
|
141
|
+
├─ Step 1: Skip patterns filter
|
|
142
|
+
│ Removed: 6 files (*.md, config/*, *types*)
|
|
143
|
+
│ Remaining: 15 files
|
|
144
|
+
│
|
|
145
|
+
├─ Step 2: Dependency analysis
|
|
146
|
+
│ Tests that import these 15 files: 45 tests
|
|
147
|
+
│
|
|
148
|
+
└─ Step 3: Volume control (30%)
|
|
149
|
+
Final tests to run: 14 tests (30% of 45)
|
|
150
|
+
|
|
151
|
+
Result: Run 14 targeted tests instead of 147 with --only-changed!
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Key Points**:
|
|
155
|
+
|
|
156
|
+
- Three-stage pipeline: skip → analyze → control
|
|
157
|
+
- Custom dependency analysis (not just imports)
|
|
158
|
+
- Percentage applies AFTER filtering
|
|
159
|
+
- Dramatically reduces CI time
|
|
160
|
+
|
|
161
|
+
### Example 4: Environment-Specific Configuration
|
|
162
|
+
|
|
163
|
+
**Context**: Different settings for local vs CI environments.
|
|
164
|
+
|
|
165
|
+
**Implementation**:
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
import type { BurnInConfig } from '@seontechnologies/playwright-utils/burn-in';
|
|
169
|
+
|
|
170
|
+
const config: BurnInConfig = {
|
|
171
|
+
skipBurnInPatterns: ['**/config/**', '**/*types*', '**/*.md'],
|
|
172
|
+
|
|
173
|
+
// CI runs fewer iterations, local runs more
|
|
174
|
+
burnInTestPercentage: process.env.CI ? 0.2 : 0.3,
|
|
175
|
+
|
|
176
|
+
burnIn: {
|
|
177
|
+
repeatEach: process.env.CI ? 2 : 3,
|
|
178
|
+
retries: process.env.CI ? 0 : 1, // No retries in CI
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export default config;
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Key Points**:
|
|
186
|
+
|
|
187
|
+
- `process.env.CI` for environment detection
|
|
188
|
+
- Lower percentage in CI (20% vs 30%)
|
|
189
|
+
- Fewer iterations in CI (2 vs 3)
|
|
190
|
+
- No retries in CI (fail fast)
|
|
191
|
+
|
|
192
|
+
### Example 5: Sharding Support
|
|
193
|
+
|
|
194
|
+
**Context**: Distribute burn-in tests across multiple CI workers.
|
|
195
|
+
|
|
196
|
+
**Implementation**:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// burn-in-changed.ts with sharding
|
|
200
|
+
import { runBurnIn } from '@seontechnologies/playwright-utils/burn-in';
|
|
201
|
+
|
|
202
|
+
async function main() {
|
|
203
|
+
const shardArg = process.argv.find((arg) => arg.startsWith('--shard='));
|
|
204
|
+
|
|
205
|
+
if (shardArg) {
|
|
206
|
+
process.env.PW_SHARD = shardArg.split('=')[1];
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
await runBurnIn({
|
|
210
|
+
configPath: 'playwright/config/.burn-in.config.ts',
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
```yaml
|
|
216
|
+
# GitHub Actions with sharding
|
|
217
|
+
jobs:
|
|
218
|
+
burn-in:
|
|
219
|
+
strategy:
|
|
220
|
+
matrix:
|
|
221
|
+
shard: [1/3, 2/3, 3/3]
|
|
222
|
+
steps:
|
|
223
|
+
- run: npm run test:pw:burn-in-changed -- --shard=${{ matrix.shard }}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**Key Points**:
|
|
227
|
+
|
|
228
|
+
- Pass `--shard=1/3` for parallel execution
|
|
229
|
+
- Burn-in respects Playwright sharding
|
|
230
|
+
- Distribute across multiple workers
|
|
231
|
+
- Reduces total CI time further
|
|
232
|
+
|
|
233
|
+
## Integration with CI Workflow
|
|
234
|
+
|
|
235
|
+
When setting up CI with `*ci` workflow, recommend burn-in for:
|
|
236
|
+
|
|
237
|
+
- Pull request validation
|
|
238
|
+
- Pre-merge checks
|
|
239
|
+
- Nightly builds (subset runs)
|
|
240
|
+
|
|
241
|
+
## Related Fragments
|
|
242
|
+
|
|
243
|
+
- `ci-burn-in.md` - Traditional burn-in patterns (10-iteration loops)
|
|
244
|
+
- `selective-testing.md` - Test selection strategies
|
|
245
|
+
- `overview.md` - Installation
|
|
246
|
+
|
|
247
|
+
## Anti-Patterns
|
|
248
|
+
|
|
249
|
+
**❌ Over-aggressive skip patterns:**
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
skipBurnInPatterns: [
|
|
253
|
+
'**/*', // Skips everything!
|
|
254
|
+
];
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**✅ Targeted skip patterns:**
|
|
258
|
+
|
|
259
|
+
```typescript
|
|
260
|
+
skipBurnInPatterns: ['**/config/**', '**/*types*', '**/*.md', '**/*constants*'];
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**❌ Too low percentage (false confidence):**
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
burnInTestPercentage: 0.05; // Only 5% - might miss issues
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**✅ Balanced percentage:**
|
|
270
|
+
|
|
271
|
+
```typescript
|
|
272
|
+
burnInTestPercentage: 0.2; // 20% in CI, provides good coverage
|
|
273
|
+
```
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# File Utilities
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Read and validate files (CSV, XLSX, PDF, ZIP) with automatic parsing, type-safe results, and download handling. Simplify file operations in Playwright tests with built-in format support and validation helpers.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
Testing file operations in Playwright requires boilerplate:
|
|
10
|
+
|
|
11
|
+
- Manual download handling
|
|
12
|
+
- External parsing libraries for each format
|
|
13
|
+
- No validation helpers
|
|
14
|
+
- Type-unsafe results
|
|
15
|
+
- Repetitive path handling
|
|
16
|
+
|
|
17
|
+
The `file-utils` module provides:
|
|
18
|
+
|
|
19
|
+
- **Auto-parsing**: CSV, XLSX, PDF, ZIP automatically parsed
|
|
20
|
+
- **Download handling**: Single function for UI or API-triggered downloads
|
|
21
|
+
- **Type-safe**: TypeScript interfaces for parsed results
|
|
22
|
+
- **Validation helpers**: Row count, header checks, content validation
|
|
23
|
+
- **Format support**: Multiple sheet support (XLSX), text extraction (PDF), archive extraction (ZIP)
|
|
24
|
+
|
|
25
|
+
## Pattern Examples
|
|
26
|
+
|
|
27
|
+
### Example 1: UI-Triggered CSV Download
|
|
28
|
+
|
|
29
|
+
**Context**: User clicks button, CSV downloads, validate contents.
|
|
30
|
+
|
|
31
|
+
**Implementation**:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { handleDownload, readCSV } from '@seontechnologies/playwright-utils/file-utils';
|
|
35
|
+
import path from 'node:path';
|
|
36
|
+
|
|
37
|
+
const DOWNLOAD_DIR = path.join(__dirname, '../downloads');
|
|
38
|
+
|
|
39
|
+
test('should download and validate CSV', async ({ page }) => {
|
|
40
|
+
const downloadPath = await handleDownload({
|
|
41
|
+
page,
|
|
42
|
+
downloadDir: DOWNLOAD_DIR,
|
|
43
|
+
trigger: () => page.click('[data-testid="export-csv"]'),
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const { content } = await readCSV({ filePath: downloadPath });
|
|
47
|
+
|
|
48
|
+
// Validate headers
|
|
49
|
+
expect(content.headers).toEqual(['ID', 'Name', 'Email', 'Role']);
|
|
50
|
+
|
|
51
|
+
// Validate data
|
|
52
|
+
expect(content.data).toHaveLength(10);
|
|
53
|
+
expect(content.data[0]).toMatchObject({
|
|
54
|
+
ID: expect.any(String),
|
|
55
|
+
Name: expect.any(String),
|
|
56
|
+
Email: expect.stringMatching(/@/),
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Key Points**:
|
|
62
|
+
|
|
63
|
+
- `handleDownload` waits for download, returns file path
|
|
64
|
+
- `readCSV` auto-parses to `{ headers, data }`
|
|
65
|
+
- Type-safe access to parsed content
|
|
66
|
+
- Clean up downloads in `afterEach`
|
|
67
|
+
|
|
68
|
+
### Example 2: XLSX with Multiple Sheets
|
|
69
|
+
|
|
70
|
+
**Context**: Excel file with multiple sheets (e.g., Summary, Details, Errors).
|
|
71
|
+
|
|
72
|
+
**Implementation**:
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
import { readXLSX } from '@seontechnologies/playwright-utils/file-utils';
|
|
76
|
+
|
|
77
|
+
test('should read multi-sheet XLSX', async () => {
|
|
78
|
+
const downloadPath = await handleDownload({
|
|
79
|
+
page,
|
|
80
|
+
downloadDir: DOWNLOAD_DIR,
|
|
81
|
+
trigger: () => page.click('[data-testid="export-xlsx"]'),
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const { content } = await readXLSX({ filePath: downloadPath });
|
|
85
|
+
|
|
86
|
+
// Access specific sheets
|
|
87
|
+
const summarySheet = content.sheets.find((s) => s.name === 'Summary');
|
|
88
|
+
const detailsSheet = content.sheets.find((s) => s.name === 'Details');
|
|
89
|
+
|
|
90
|
+
// Validate summary
|
|
91
|
+
expect(summarySheet.data).toHaveLength(1);
|
|
92
|
+
expect(summarySheet.data[0].TotalRecords).toBe('150');
|
|
93
|
+
|
|
94
|
+
// Validate details
|
|
95
|
+
expect(detailsSheet.data).toHaveLength(150);
|
|
96
|
+
expect(detailsSheet.headers).toContain('TransactionID');
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Key Points**:
|
|
101
|
+
|
|
102
|
+
- `sheets` array with `name` and `data` properties
|
|
103
|
+
- Access sheets by name
|
|
104
|
+
- Each sheet has its own headers and data
|
|
105
|
+
- Type-safe sheet iteration
|
|
106
|
+
|
|
107
|
+
### Example 3: PDF Text Extraction
|
|
108
|
+
|
|
109
|
+
**Context**: Validate PDF report contains expected content.
|
|
110
|
+
|
|
111
|
+
**Implementation**:
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { readPDF } from '@seontechnologies/playwright-utils/file-utils';
|
|
115
|
+
|
|
116
|
+
test('should validate PDF report', async () => {
|
|
117
|
+
const downloadPath = await handleDownload({
|
|
118
|
+
page,
|
|
119
|
+
downloadDir: DOWNLOAD_DIR,
|
|
120
|
+
trigger: () => page.click('[data-testid="download-report"]'),
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
const { content } = await readPDF({ filePath: downloadPath });
|
|
124
|
+
|
|
125
|
+
// content.text is extracted text from all pages
|
|
126
|
+
expect(content.text).toContain('Financial Report Q4 2024');
|
|
127
|
+
expect(content.text).toContain('Total Revenue:');
|
|
128
|
+
|
|
129
|
+
// Validate page count
|
|
130
|
+
expect(content.numpages).toBeGreaterThan(10);
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Key Points**:
|
|
135
|
+
|
|
136
|
+
- `content.text` contains all extracted text
|
|
137
|
+
- `content.numpages` for page count
|
|
138
|
+
- PDF parsing handles multi-page documents
|
|
139
|
+
- Search for specific phrases
|
|
140
|
+
|
|
141
|
+
### Example 4: ZIP Archive Validation
|
|
142
|
+
|
|
143
|
+
**Context**: Validate ZIP contains expected files and extract specific file.
|
|
144
|
+
|
|
145
|
+
**Implementation**:
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
import { readZIP } from '@seontechnologies/playwright-utils/file-utils';
|
|
149
|
+
|
|
150
|
+
test('should validate ZIP archive', async () => {
|
|
151
|
+
const downloadPath = await handleDownload({
|
|
152
|
+
page,
|
|
153
|
+
downloadDir: DOWNLOAD_DIR,
|
|
154
|
+
trigger: () => page.click('[data-testid="download-backup"]'),
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
const { content } = await readZIP({ filePath: downloadPath });
|
|
158
|
+
|
|
159
|
+
// Check file list
|
|
160
|
+
expect(content.files).toContain('data.csv');
|
|
161
|
+
expect(content.files).toContain('config.json');
|
|
162
|
+
expect(content.files).toContain('readme.txt');
|
|
163
|
+
|
|
164
|
+
// Read specific file from archive
|
|
165
|
+
const configContent = content.zip.readAsText('config.json');
|
|
166
|
+
const config = JSON.parse(configContent);
|
|
167
|
+
|
|
168
|
+
expect(config.version).toBe('2.0');
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Key Points**:
|
|
173
|
+
|
|
174
|
+
- `content.files` lists all files in archive
|
|
175
|
+
- `content.zip.readAsText()` extracts specific files
|
|
176
|
+
- Validate archive structure
|
|
177
|
+
- Read and parse individual files from ZIP
|
|
178
|
+
|
|
179
|
+
### Example 5: API-Triggered Download
|
|
180
|
+
|
|
181
|
+
**Context**: API endpoint returns file download (not UI click).
|
|
182
|
+
|
|
183
|
+
**Implementation**:
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
test('should download via API', async ({ page, request }) => {
|
|
187
|
+
const downloadPath = await handleDownload({
|
|
188
|
+
page,
|
|
189
|
+
downloadDir: DOWNLOAD_DIR,
|
|
190
|
+
trigger: async () => {
|
|
191
|
+
const response = await request.get('/api/export/csv', {
|
|
192
|
+
headers: { Authorization: 'Bearer token' },
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
if (!response.ok()) {
|
|
196
|
+
throw new Error(`Export failed: ${response.status()}`);
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
const { content } = await readCSV({ filePath: downloadPath });
|
|
202
|
+
|
|
203
|
+
expect(content.data).toHaveLength(100);
|
|
204
|
+
});
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Key Points**:
|
|
208
|
+
|
|
209
|
+
- `trigger` can be async API call
|
|
210
|
+
- API must return `Content-Disposition` header
|
|
211
|
+
- Still need `page` for download events
|
|
212
|
+
- Works with authenticated endpoints
|
|
213
|
+
|
|
214
|
+
## Validation Helpers
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
// CSV validation
|
|
218
|
+
const { isValid, errors } = await validateCSV({
|
|
219
|
+
filePath: downloadPath,
|
|
220
|
+
expectedRowCount: 10,
|
|
221
|
+
requiredHeaders: ['ID', 'Name', 'Email'],
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
expect(isValid).toBe(true);
|
|
225
|
+
expect(errors).toHaveLength(0);
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Download Cleanup Pattern
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
test.afterEach(async () => {
|
|
232
|
+
// Clean up downloaded files
|
|
233
|
+
await fs.remove(DOWNLOAD_DIR);
|
|
234
|
+
});
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Related Fragments
|
|
238
|
+
|
|
239
|
+
- `overview.md` - Installation and imports
|
|
240
|
+
- `api-request.md` - API-triggered downloads
|
|
241
|
+
- `recurse.md` - Poll for file generation completion
|
|
242
|
+
|
|
243
|
+
## Anti-Patterns
|
|
244
|
+
|
|
245
|
+
**❌ Not cleaning up downloads:**
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
test('creates file', async () => {
|
|
249
|
+
await handleDownload({ ... })
|
|
250
|
+
// File left in downloads folder
|
|
251
|
+
})
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**✅ Clean up after tests:**
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
test.afterEach(async () => {
|
|
258
|
+
await fs.remove(DOWNLOAD_DIR);
|
|
259
|
+
});
|
|
260
|
+
```
|