bmad-odoo 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/LICENSE +21 -0
- package/README.md +317 -0
- package/_config/agent-manifest.csv +10 -0
- package/_config/manifest.yaml +10 -0
- package/_config/workflow-manifest.csv +10 -0
- package/bmm/agents/analyst.md +93 -0
- package/bmm/agents/architect.md +72 -0
- package/bmm/agents/dev.md +85 -0
- package/bmm/agents/pm.md +61 -0
- package/bmm/agents/quick-flow-solo-dev.md +58 -0
- package/bmm/agents/sm.md +56 -0
- package/bmm/agents/tea.md +57 -0
- package/bmm/agents/tech-writer.md +56 -0
- package/bmm/agents/ux-designer.md +56 -0
- package/bmm/config.yaml +27 -0
- package/bmm/data/odoo-knowledge-base.md +90 -0
- package/bmm/teams/default-team.md +17 -0
- package/bmm/testarch/odoo-test-design/steps/step-01-init.md +44 -0
- package/bmm/testarch/odoo-test-design/steps/step-02-test-cases.md +82 -0
- package/bmm/testarch/odoo-test-design/steps/step-03-complete.md +69 -0
- package/bmm/testarch/odoo-test-design/workflow.md +30 -0
- package/bmm/testarch/odoo-testing-guide.md +30 -0
- package/bmm/workflows/1-analysis/analyze-process/process-analysis.template.md +80 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-01-init.md +44 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-02-current-state.md +55 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-03-pain-points.md +67 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-04-odoo-mapping.md +67 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-05-recommendations.md +99 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-06-complete.md +62 -0
- package/bmm/workflows/1-analysis/analyze-process/workflow.md +60 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-01-init.md +45 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-02-users-stakeholders.md +46 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-03-odoo-modules.md +59 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-04-scope-timeline.md +64 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-05-complete.md +32 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/workflow.md +35 -0
- package/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +182 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +166 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +204 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +207 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +210 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +224 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +199 -0
- package/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
- package/bmm/workflows/1-analysis/gap-analysis/steps/step-01-init.md +45 -0
- package/bmm/workflows/1-analysis/gap-analysis/steps/step-02-odoo-capabilities.md +36 -0
- package/bmm/workflows/1-analysis/gap-analysis/steps/step-03-gap-matrix.md +51 -0
- package/bmm/workflows/1-analysis/gap-analysis/workflow.md +45 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/bmm/workflows/1-analysis/research/workflow.md +173 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-01-init.md +48 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-02-technical-design.md +82 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-03-generate.md +86 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-addon/workflow.md +39 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-01-init.md +55 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-02-stories.md +53 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-03-complete.md +39 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-epic/workflow.md +35 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-01-init.md +46 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-02-functional-requirements.md +56 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-03-technical-requirements.md +45 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-04-complete.md +40 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/workflow.md +29 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-01-init.md +52 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-02-form-design.md +78 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-03-tree-design.md +84 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-04-complete.md +55 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/workflow.md +30 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +228 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
- package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-01-init.md +49 -0
- package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-02-risk-assessment.md +51 -0
- package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-03-roadmap.md +58 -0
- package/bmm/workflows/2-plan-workflows/plan-odoo-migration/workflow.md +29 -0
- package/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/bmm/workflows/2-plan-workflows/prd/prd-template.md +11 -0
- package/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +197 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +166 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +421 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +290 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +291 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +271 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +262 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +258 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +299 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +270 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +294 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +186 -0
- package/bmm/workflows/2-plan-workflows/prd/workflow.md +63 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +133 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
- package/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
- package/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +352 -0
- package/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +145 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
- package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-01-init.md +44 -0
- package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-02-inheritance-strategy.md +75 -0
- package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-03-implementation.md +64 -0
- package/bmm/workflows/3-solutioning/enhance-existing-system/workflow.md +30 -0
- package/bmm/workflows/3-solutioning/quick-addon/workflow.md +23 -0
- package/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/bmm/workflows/4-implementation/code-review/instructions.xml +225 -0
- package/bmm/workflows/4-implementation/code-review/workflow.yaml +50 -0
- package/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
- package/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -0
- package/bmm/workflows/4-implementation/create-next-story/steps/step-01-init.md +53 -0
- package/bmm/workflows/4-implementation/create-next-story/steps/step-02-acceptance-criteria.md +63 -0
- package/bmm/workflows/4-implementation/create-next-story/steps/step-03-tasks.md +68 -0
- package/bmm/workflows/4-implementation/create-next-story/steps/step-04-complete.md +70 -0
- package/bmm/workflows/4-implementation/create-next-story/workflow.md +30 -0
- package/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/bmm/workflows/4-implementation/dev-story/instructions.xml +409 -0
- package/bmm/workflows/4-implementation/dev-story/workflow.yaml +25 -0
- package/bmm/workflows/4-implementation/rapid-brownfield/steps/step-01-quick-story.md +79 -0
- package/bmm/workflows/4-implementation/rapid-brownfield/workflow.md +29 -0
- package/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/bmm/workflows/4-implementation/retrospective/workflow.yaml +57 -0
- package/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
- package/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -0
- package/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
- package/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-01-understand.md +189 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-02-investigate.md +144 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-03-generate.md +128 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-04-review.md +173 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/tech-spec-template.md +74 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.md +79 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +52 -0
- package/bmm/workflows/document-odoo/steps/step-01-init.md +43 -0
- package/bmm/workflows/document-odoo/steps/step-02-readme.md +98 -0
- package/bmm/workflows/document-odoo/steps/step-03-user-guide.md +76 -0
- package/bmm/workflows/document-odoo/steps/step-04-complete.md +58 -0
- package/bmm/workflows/document-odoo/workflow.md +30 -0
- package/bmm/workflows/document-project/checklist.md +245 -0
- package/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/bmm/workflows/document-project/instructions.md +221 -0
- package/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/bmm/workflows/document-project/workflow.yaml +28 -0
- package/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
- package/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
- package/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
- package/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +26 -0
- package/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
- package/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
- package/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +26 -0
- package/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
- package/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
- package/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +26 -0
- package/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
- package/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
- package/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +26 -0
- package/bmm/workflows/generate-project-context/project-context-template.md +21 -0
- package/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
- package/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
- package/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
- package/bmm/workflows/generate-project-context/workflow.md +49 -0
- package/bmm/workflows/testarch/atdd/atdd-checklist-template.md +364 -0
- package/bmm/workflows/testarch/atdd/checklist.md +374 -0
- package/bmm/workflows/testarch/atdd/instructions.md +806 -0
- package/bmm/workflows/testarch/atdd/workflow.yaml +45 -0
- package/bmm/workflows/testarch/automate/checklist.md +582 -0
- package/bmm/workflows/testarch/automate/instructions.md +1324 -0
- package/bmm/workflows/testarch/automate/workflow.yaml +52 -0
- package/bmm/workflows/testarch/ci/checklist.md +248 -0
- package/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
- package/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
- package/bmm/workflows/testarch/ci/instructions.md +536 -0
- package/bmm/workflows/testarch/ci/workflow.yaml +45 -0
- package/bmm/workflows/testarch/framework/checklist.md +321 -0
- package/bmm/workflows/testarch/framework/instructions.md +481 -0
- package/bmm/workflows/testarch/framework/workflow.yaml +47 -0
- package/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
- package/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
- package/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +445 -0
- package/bmm/workflows/testarch/nfr-assess/workflow.yaml +47 -0
- package/bmm/workflows/testarch/test-design/checklist.md +235 -0
- package/bmm/workflows/testarch/test-design/instructions.md +788 -0
- package/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
- package/bmm/workflows/testarch/test-design/workflow.yaml +54 -0
- package/bmm/workflows/testarch/test-review/checklist.md +472 -0
- package/bmm/workflows/testarch/test-review/instructions.md +628 -0
- package/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
- package/bmm/workflows/testarch/test-review/workflow.yaml +46 -0
- package/bmm/workflows/testarch/trace/checklist.md +655 -0
- package/bmm/workflows/testarch/trace/instructions.md +1047 -0
- package/bmm/workflows/testarch/trace/trace-template.md +675 -0
- package/bmm/workflows/testarch/trace/workflow.yaml +55 -0
- package/bmm/workflows/workflow-status/init/instructions.md +346 -0
- package/bmm/workflows/workflow-status/init/workflow.yaml +29 -0
- package/bmm/workflows/workflow-status/instructions.md +395 -0
- package/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +103 -0
- package/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +100 -0
- package/bmm/workflows/workflow-status/paths/method-brownfield.yaml +103 -0
- package/bmm/workflows/workflow-status/paths/method-greenfield.yaml +100 -0
- package/bmm/workflows/workflow-status/project-levels.yaml +59 -0
- package/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/bmm/workflows/workflow-status/workflow.yaml +30 -0
- package/core/agents/bmad-odoo-master.md +61 -0
- package/core/config.yaml +7 -0
- package/core/resources/README.md +5 -0
- package/core/tasks/README.md +7 -0
- package/core/workflows/README.md +8 -0
- package/index.js +84 -0
- package/package.json +48 -0
- package/scripts/postinstall.js +447 -0
- package/scripts/setup-cli.js +17 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Test Architect workflow: automate
|
|
2
|
+
name: testarch-automate
|
|
3
|
+
description: "Expand test automation coverage after implementation or analyze existing codebase to generate comprehensive test suite"
|
|
4
|
+
author: "BMad"
|
|
5
|
+
|
|
6
|
+
# Critical variables from config
|
|
7
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
8
|
+
output_folder: "{config_source}:output_folder"
|
|
9
|
+
user_name: "{config_source}:user_name"
|
|
10
|
+
communication_language: "{config_source}:communication_language"
|
|
11
|
+
document_output_language: "{config_source}:document_output_language"
|
|
12
|
+
date: system-generated
|
|
13
|
+
|
|
14
|
+
# Workflow components
|
|
15
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/testarch/automate"
|
|
16
|
+
instructions: "{installed_path}/instructions.md"
|
|
17
|
+
validation: "{installed_path}/checklist.md"
|
|
18
|
+
template: false
|
|
19
|
+
|
|
20
|
+
# Variables and inputs
|
|
21
|
+
variables:
|
|
22
|
+
# Execution mode and targeting
|
|
23
|
+
standalone_mode: true # Can work without BMad artifacts (true) or integrate with BMad (false)
|
|
24
|
+
coverage_target: "critical-paths" # critical-paths, comprehensive, selective
|
|
25
|
+
|
|
26
|
+
# Directory paths
|
|
27
|
+
test_dir: "{project-root}/tests" # Root test directory
|
|
28
|
+
source_dir: "{project-root}/src" # Source code directory
|
|
29
|
+
|
|
30
|
+
# Output configuration
|
|
31
|
+
default_output_file: "{output_folder}/automation-summary.md"
|
|
32
|
+
|
|
33
|
+
# Required tools
|
|
34
|
+
required_tools:
|
|
35
|
+
- read_file # Read source code, existing tests, BMad artifacts
|
|
36
|
+
- write_file # Create test files, fixtures, factories, summaries
|
|
37
|
+
- create_directory # Create test directories
|
|
38
|
+
- list_files # Discover features and existing tests
|
|
39
|
+
- search_repo # Find coverage gaps and patterns
|
|
40
|
+
- glob # Find test files and source files
|
|
41
|
+
|
|
42
|
+
tags:
|
|
43
|
+
- qa
|
|
44
|
+
- automation
|
|
45
|
+
- test-architect
|
|
46
|
+
- regression
|
|
47
|
+
- coverage
|
|
48
|
+
|
|
49
|
+
execution_hints:
|
|
50
|
+
interactive: false # Minimize prompts
|
|
51
|
+
autonomous: true # Proceed without user input unless blocked
|
|
52
|
+
iterative: true
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# CI/CD Pipeline Setup - Validation Checklist
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
- [ ] Git repository initialized (`.git/` exists)
|
|
6
|
+
- [ ] Git remote configured (`git remote -v` shows origin)
|
|
7
|
+
- [ ] Test framework configured (`playwright.config._` or `cypress.config._`)
|
|
8
|
+
- [ ] Local tests pass (`npm run test:e2e` succeeds)
|
|
9
|
+
- [ ] Team agrees on CI platform
|
|
10
|
+
- [ ] Access to CI platform settings (if updating)
|
|
11
|
+
|
|
12
|
+
Note: CI setup is typically a one-time task per repo and can be run any time after the test framework is configured.
|
|
13
|
+
|
|
14
|
+
## Process Steps
|
|
15
|
+
|
|
16
|
+
### Step 1: Preflight Checks
|
|
17
|
+
|
|
18
|
+
- [ ] Git repository validated
|
|
19
|
+
- [ ] Framework configuration detected
|
|
20
|
+
- [ ] Local test execution successful
|
|
21
|
+
- [ ] CI platform detected or selected
|
|
22
|
+
- [ ] Node version identified (.nvmrc or default)
|
|
23
|
+
- [ ] No blocking issues found
|
|
24
|
+
|
|
25
|
+
### Step 2: CI Pipeline Configuration
|
|
26
|
+
|
|
27
|
+
- [ ] CI configuration file created (`.github/workflows/test.yml` or `.gitlab-ci.yml`)
|
|
28
|
+
- [ ] File is syntactically valid (no YAML errors)
|
|
29
|
+
- [ ] Correct framework commands configured
|
|
30
|
+
- [ ] Node version matches project
|
|
31
|
+
- [ ] Test directory paths correct
|
|
32
|
+
|
|
33
|
+
### Step 3: Parallel Sharding
|
|
34
|
+
|
|
35
|
+
- [ ] Matrix strategy configured (4 shards default)
|
|
36
|
+
- [ ] Shard syntax correct for framework
|
|
37
|
+
- [ ] fail-fast set to false
|
|
38
|
+
- [ ] Shard count appropriate for test suite size
|
|
39
|
+
|
|
40
|
+
### Step 4: Burn-In Loop
|
|
41
|
+
|
|
42
|
+
- [ ] Burn-in job created
|
|
43
|
+
- [ ] 10 iterations configured
|
|
44
|
+
- [ ] Proper exit on failure (`|| exit 1`)
|
|
45
|
+
- [ ] Runs on appropriate triggers (PR, cron)
|
|
46
|
+
- [ ] Failure artifacts uploaded
|
|
47
|
+
|
|
48
|
+
### Step 5: Caching Configuration
|
|
49
|
+
|
|
50
|
+
- [ ] Dependency cache configured (npm/yarn)
|
|
51
|
+
- [ ] Cache key uses lockfile hash
|
|
52
|
+
- [ ] Browser cache configured (Playwright/Cypress)
|
|
53
|
+
- [ ] Restore-keys defined for fallback
|
|
54
|
+
- [ ] Cache paths correct for platform
|
|
55
|
+
|
|
56
|
+
### Step 6: Artifact Collection
|
|
57
|
+
|
|
58
|
+
- [ ] Artifacts upload on failure only
|
|
59
|
+
- [ ] Correct artifact paths (test-results/, traces/, etc.)
|
|
60
|
+
- [ ] Retention days set (30 default)
|
|
61
|
+
- [ ] Artifact names unique per shard
|
|
62
|
+
- [ ] No sensitive data in artifacts
|
|
63
|
+
|
|
64
|
+
### Step 7: Retry Logic
|
|
65
|
+
|
|
66
|
+
- [ ] Retry action/strategy configured
|
|
67
|
+
- [ ] Max attempts: 2-3
|
|
68
|
+
- [ ] Timeout appropriate (30 min)
|
|
69
|
+
- [ ] Retry only on transient errors
|
|
70
|
+
|
|
71
|
+
### Step 8: Helper Scripts
|
|
72
|
+
|
|
73
|
+
- [ ] `scripts/test-changed.sh` created
|
|
74
|
+
- [ ] `scripts/ci-local.sh` created
|
|
75
|
+
- [ ] `scripts/burn-in.sh` created (optional)
|
|
76
|
+
- [ ] Scripts are executable (`chmod +x`)
|
|
77
|
+
- [ ] Scripts use correct test commands
|
|
78
|
+
- [ ] Shebang present (`#!/bin/bash`)
|
|
79
|
+
|
|
80
|
+
### Step 9: Documentation
|
|
81
|
+
|
|
82
|
+
- [ ] `docs/ci.md` created with pipeline guide
|
|
83
|
+
- [ ] `docs/ci-secrets-checklist.md` created
|
|
84
|
+
- [ ] Required secrets documented
|
|
85
|
+
- [ ] Setup instructions clear
|
|
86
|
+
- [ ] Troubleshooting section included
|
|
87
|
+
- [ ] Badge URLs provided (optional)
|
|
88
|
+
|
|
89
|
+
## Output Validation
|
|
90
|
+
|
|
91
|
+
### Configuration Validation
|
|
92
|
+
|
|
93
|
+
- [ ] CI file loads without errors
|
|
94
|
+
- [ ] All paths resolve correctly
|
|
95
|
+
- [ ] No hardcoded values (use env vars)
|
|
96
|
+
- [ ] Triggers configured (push, pull_request, schedule)
|
|
97
|
+
- [ ] Platform-specific syntax correct
|
|
98
|
+
|
|
99
|
+
### Execution Validation
|
|
100
|
+
|
|
101
|
+
- [ ] First CI run triggered (push to remote)
|
|
102
|
+
- [ ] Pipeline starts without errors
|
|
103
|
+
- [ ] All jobs appear in CI dashboard
|
|
104
|
+
- [ ] Caching works (check logs for cache hit)
|
|
105
|
+
- [ ] Tests execute in parallel
|
|
106
|
+
- [ ] Artifacts collected on failure
|
|
107
|
+
|
|
108
|
+
### Performance Validation
|
|
109
|
+
|
|
110
|
+
- [ ] Lint stage: <2 minutes
|
|
111
|
+
- [ ] Test stage (per shard): <10 minutes
|
|
112
|
+
- [ ] Burn-in stage: <30 minutes
|
|
113
|
+
- [ ] Total pipeline: <45 minutes
|
|
114
|
+
- [ ] Cache reduces install time by 2-5 minutes
|
|
115
|
+
|
|
116
|
+
## Quality Checks
|
|
117
|
+
|
|
118
|
+
### Best Practices Compliance
|
|
119
|
+
|
|
120
|
+
- [ ] Burn-in loop follows production patterns
|
|
121
|
+
- [ ] Parallel sharding configured optimally
|
|
122
|
+
- [ ] Failure-only artifact collection
|
|
123
|
+
- [ ] Selective testing enabled (optional)
|
|
124
|
+
- [ ] Retry logic handles transient failures only
|
|
125
|
+
- [ ] No secrets in configuration files
|
|
126
|
+
|
|
127
|
+
### Knowledge Base Alignment
|
|
128
|
+
|
|
129
|
+
- [ ] Burn-in pattern matches `ci-burn-in.md`
|
|
130
|
+
- [ ] Selective testing matches `selective-testing.md`
|
|
131
|
+
- [ ] Artifact collection matches `visual-debugging.md`
|
|
132
|
+
- [ ] Test quality matches `test-quality.md`
|
|
133
|
+
|
|
134
|
+
### Security Checks
|
|
135
|
+
|
|
136
|
+
- [ ] No credentials in CI configuration
|
|
137
|
+
- [ ] Secrets use platform secret management
|
|
138
|
+
- [ ] Environment variables for sensitive data
|
|
139
|
+
- [ ] Artifact retention appropriate (not too long)
|
|
140
|
+
- [ ] No debug output exposing secrets
|
|
141
|
+
|
|
142
|
+
## Integration Points
|
|
143
|
+
|
|
144
|
+
### Status File Integration
|
|
145
|
+
|
|
146
|
+
- [ ] `bmm-workflow-status.md` exists
|
|
147
|
+
- [ ] CI setup logged in Quality & Testing Progress section
|
|
148
|
+
- [ ] Status updated with completion timestamp
|
|
149
|
+
- [ ] Platform and configuration noted
|
|
150
|
+
|
|
151
|
+
### Knowledge Base Integration
|
|
152
|
+
|
|
153
|
+
- [ ] Relevant knowledge fragments loaded
|
|
154
|
+
- [ ] Patterns applied from knowledge base
|
|
155
|
+
- [ ] Documentation references knowledge base
|
|
156
|
+
- [ ] Knowledge base references in README
|
|
157
|
+
|
|
158
|
+
### Workflow Dependencies
|
|
159
|
+
|
|
160
|
+
- [ ] `framework` workflow completed first
|
|
161
|
+
- [ ] Can proceed to `atdd` workflow after CI setup
|
|
162
|
+
- [ ] Can proceed to `automate` workflow
|
|
163
|
+
- [ ] CI integrates with `gate` workflow
|
|
164
|
+
|
|
165
|
+
## Completion Criteria
|
|
166
|
+
|
|
167
|
+
**All must be true:**
|
|
168
|
+
|
|
169
|
+
- [ ] All prerequisites met
|
|
170
|
+
- [ ] All process steps completed
|
|
171
|
+
- [ ] All output validations passed
|
|
172
|
+
- [ ] All quality checks passed
|
|
173
|
+
- [ ] All integration points verified
|
|
174
|
+
- [ ] First CI run successful
|
|
175
|
+
- [ ] Performance targets met
|
|
176
|
+
- [ ] Documentation complete
|
|
177
|
+
|
|
178
|
+
## Post-Workflow Actions
|
|
179
|
+
|
|
180
|
+
**User must complete:**
|
|
181
|
+
|
|
182
|
+
1. [ ] Commit CI configuration
|
|
183
|
+
2. [ ] Push to remote repository
|
|
184
|
+
3. [ ] Configure required secrets in CI platform
|
|
185
|
+
4. [ ] Open PR to trigger first CI run
|
|
186
|
+
5. [ ] Monitor and verify pipeline execution
|
|
187
|
+
6. [ ] Adjust parallelism if needed (based on actual run times)
|
|
188
|
+
7. [ ] Set up notifications (optional)
|
|
189
|
+
|
|
190
|
+
**Recommended next workflows:**
|
|
191
|
+
|
|
192
|
+
1. [ ] Run `atdd` workflow for test generation
|
|
193
|
+
2. [ ] Run `automate` workflow for coverage expansion
|
|
194
|
+
3. [ ] Run `gate` workflow for quality gates
|
|
195
|
+
|
|
196
|
+
## Rollback Procedure
|
|
197
|
+
|
|
198
|
+
If workflow fails:
|
|
199
|
+
|
|
200
|
+
1. [ ] Delete CI configuration file
|
|
201
|
+
2. [ ] Remove helper scripts directory
|
|
202
|
+
3. [ ] Remove documentation (docs/ci.md, etc.)
|
|
203
|
+
4. [ ] Clear CI platform secrets (if added)
|
|
204
|
+
5. [ ] Review error logs
|
|
205
|
+
6. [ ] Fix issues and retry workflow
|
|
206
|
+
|
|
207
|
+
## Notes
|
|
208
|
+
|
|
209
|
+
### Common Issues
|
|
210
|
+
|
|
211
|
+
**Issue**: CI file syntax errors
|
|
212
|
+
|
|
213
|
+
- **Solution**: Validate YAML syntax online or with linter
|
|
214
|
+
|
|
215
|
+
**Issue**: Tests fail in CI but pass locally
|
|
216
|
+
|
|
217
|
+
- **Solution**: Use `scripts/ci-local.sh` to mirror CI environment
|
|
218
|
+
|
|
219
|
+
**Issue**: Caching not working
|
|
220
|
+
|
|
221
|
+
- **Solution**: Check cache key formula, verify paths
|
|
222
|
+
|
|
223
|
+
**Issue**: Burn-in too slow
|
|
224
|
+
|
|
225
|
+
- **Solution**: Reduce iterations or run on cron only
|
|
226
|
+
|
|
227
|
+
### Platform-Specific
|
|
228
|
+
|
|
229
|
+
**GitHub Actions:**
|
|
230
|
+
|
|
231
|
+
- Secrets: Repository Settings → Secrets and variables → Actions
|
|
232
|
+
- Runners: Ubuntu latest recommended
|
|
233
|
+
- Concurrency limits: 20 jobs for free tier
|
|
234
|
+
|
|
235
|
+
**GitLab CI:**
|
|
236
|
+
|
|
237
|
+
- Variables: Project Settings → CI/CD → Variables
|
|
238
|
+
- Runners: Shared or project-specific
|
|
239
|
+
- Pipeline quota: 400 minutes/month free tier
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
**Checklist Complete**: Sign off when all items validated.
|
|
244
|
+
|
|
245
|
+
**Completed by:** {name}
|
|
246
|
+
**Date:** {date}
|
|
247
|
+
**Platform:** {GitHub Actions, GitLab CI, Other}
|
|
248
|
+
**Notes:** {notes}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# GitHub Actions CI/CD Pipeline for Test Execution
|
|
2
|
+
# Generated by BMad TEA Agent - Test Architect Module
|
|
3
|
+
# Optimized for: Playwright/Cypress, Parallel Sharding, Burn-In Loop
|
|
4
|
+
|
|
5
|
+
name: Test Pipeline
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches: [main, develop]
|
|
10
|
+
pull_request:
|
|
11
|
+
branches: [main, develop]
|
|
12
|
+
schedule:
|
|
13
|
+
# Weekly burn-in on Sundays at 2 AM UTC
|
|
14
|
+
- cron: "0 2 * * 0"
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
18
|
+
cancel-in-progress: true
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
# Lint stage - Code quality checks
|
|
22
|
+
lint:
|
|
23
|
+
name: Lint
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
timeout-minutes: 5
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v4
|
|
29
|
+
|
|
30
|
+
- name: Determine Node version
|
|
31
|
+
id: node-version
|
|
32
|
+
run: |
|
|
33
|
+
if [ -f .nvmrc ]; then
|
|
34
|
+
echo "value=$(cat .nvmrc)" >> "$GITHUB_OUTPUT"
|
|
35
|
+
echo "Using Node from .nvmrc"
|
|
36
|
+
else
|
|
37
|
+
echo "value=24" >> "$GITHUB_OUTPUT"
|
|
38
|
+
echo "Using default Node 24 (current LTS)"
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
- name: Setup Node.js
|
|
42
|
+
uses: actions/setup-node@v4
|
|
43
|
+
with:
|
|
44
|
+
node-version: ${{ steps.node-version.outputs.value }}
|
|
45
|
+
cache: "npm"
|
|
46
|
+
|
|
47
|
+
- name: Install dependencies
|
|
48
|
+
run: npm ci
|
|
49
|
+
|
|
50
|
+
- name: Run linter
|
|
51
|
+
run: npm run lint
|
|
52
|
+
|
|
53
|
+
# Test stage - Parallel execution with sharding
|
|
54
|
+
test:
|
|
55
|
+
name: Test (Shard ${{ matrix.shard }})
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
timeout-minutes: 30
|
|
58
|
+
needs: lint
|
|
59
|
+
|
|
60
|
+
strategy:
|
|
61
|
+
fail-fast: false
|
|
62
|
+
matrix:
|
|
63
|
+
shard: [1, 2, 3, 4]
|
|
64
|
+
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@v4
|
|
67
|
+
|
|
68
|
+
- name: Determine Node version
|
|
69
|
+
id: node-version
|
|
70
|
+
run: |
|
|
71
|
+
if [ -f .nvmrc ]; then
|
|
72
|
+
echo "value=$(cat .nvmrc)" >> "$GITHUB_OUTPUT"
|
|
73
|
+
echo "Using Node from .nvmrc"
|
|
74
|
+
else
|
|
75
|
+
echo "value=22" >> "$GITHUB_OUTPUT"
|
|
76
|
+
echo "Using default Node 22 (current LTS)"
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
- name: Setup Node.js
|
|
80
|
+
uses: actions/setup-node@v4
|
|
81
|
+
with:
|
|
82
|
+
node-version: ${{ steps.node-version.outputs.value }}
|
|
83
|
+
cache: "npm"
|
|
84
|
+
|
|
85
|
+
- name: Cache Playwright browsers
|
|
86
|
+
uses: actions/cache@v4
|
|
87
|
+
with:
|
|
88
|
+
path: ~/.cache/ms-playwright
|
|
89
|
+
key: ${{ runner.os }}-playwright-${{ hashFiles('**/package-lock.json') }}
|
|
90
|
+
restore-keys: |
|
|
91
|
+
${{ runner.os }}-playwright-
|
|
92
|
+
|
|
93
|
+
- name: Install dependencies
|
|
94
|
+
run: npm ci
|
|
95
|
+
|
|
96
|
+
- name: Install Playwright browsers
|
|
97
|
+
run: npx playwright install --with-deps chromium
|
|
98
|
+
|
|
99
|
+
- name: Run tests (shard ${{ matrix.shard }}/4)
|
|
100
|
+
run: npm run test:e2e -- --shard=${{ matrix.shard }}/4
|
|
101
|
+
|
|
102
|
+
- name: Upload test results
|
|
103
|
+
if: failure()
|
|
104
|
+
uses: actions/upload-artifact@v4
|
|
105
|
+
with:
|
|
106
|
+
name: test-results-${{ matrix.shard }}
|
|
107
|
+
path: |
|
|
108
|
+
test-results/
|
|
109
|
+
playwright-report/
|
|
110
|
+
retention-days: 30
|
|
111
|
+
|
|
112
|
+
# Burn-in stage - Flaky test detection
|
|
113
|
+
burn-in:
|
|
114
|
+
name: Burn-In (Flaky Detection)
|
|
115
|
+
runs-on: ubuntu-latest
|
|
116
|
+
timeout-minutes: 60
|
|
117
|
+
needs: test
|
|
118
|
+
# Only run burn-in on PRs to main/develop or on schedule
|
|
119
|
+
if: github.event_name == 'pull_request' || github.event_name == 'schedule'
|
|
120
|
+
|
|
121
|
+
steps:
|
|
122
|
+
- uses: actions/checkout@v4
|
|
123
|
+
|
|
124
|
+
- name: Determine Node version
|
|
125
|
+
id: node-version
|
|
126
|
+
run: |
|
|
127
|
+
if [ -f .nvmrc ]; then
|
|
128
|
+
echo "value=$(cat .nvmrc)" >> "$GITHUB_OUTPUT"
|
|
129
|
+
echo "Using Node from .nvmrc"
|
|
130
|
+
else
|
|
131
|
+
echo "value=22" >> "$GITHUB_OUTPUT"
|
|
132
|
+
echo "Using default Node 22 (current LTS)"
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
- name: Setup Node.js
|
|
136
|
+
uses: actions/setup-node@v4
|
|
137
|
+
with:
|
|
138
|
+
node-version: ${{ steps.node-version.outputs.value }}
|
|
139
|
+
cache: "npm"
|
|
140
|
+
|
|
141
|
+
- name: Cache Playwright browsers
|
|
142
|
+
uses: actions/cache@v4
|
|
143
|
+
with:
|
|
144
|
+
path: ~/.cache/ms-playwright
|
|
145
|
+
key: ${{ runner.os }}-playwright-${{ hashFiles('**/package-lock.json') }}
|
|
146
|
+
|
|
147
|
+
- name: Install dependencies
|
|
148
|
+
run: npm ci
|
|
149
|
+
|
|
150
|
+
- name: Install Playwright browsers
|
|
151
|
+
run: npx playwright install --with-deps chromium
|
|
152
|
+
|
|
153
|
+
- name: Run burn-in loop (10 iterations)
|
|
154
|
+
run: |
|
|
155
|
+
echo "🔥 Starting burn-in loop - detecting flaky tests"
|
|
156
|
+
for i in {1..10}; do
|
|
157
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
158
|
+
echo "🔥 Burn-in iteration $i/10"
|
|
159
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
160
|
+
npm run test:e2e || exit 1
|
|
161
|
+
done
|
|
162
|
+
echo "✅ Burn-in complete - no flaky tests detected"
|
|
163
|
+
|
|
164
|
+
- name: Upload burn-in failure artifacts
|
|
165
|
+
if: failure()
|
|
166
|
+
uses: actions/upload-artifact@v4
|
|
167
|
+
with:
|
|
168
|
+
name: burn-in-failures
|
|
169
|
+
path: |
|
|
170
|
+
test-results/
|
|
171
|
+
playwright-report/
|
|
172
|
+
retention-days: 30
|
|
173
|
+
|
|
174
|
+
# Report stage - Aggregate and publish results
|
|
175
|
+
report:
|
|
176
|
+
name: Test Report
|
|
177
|
+
runs-on: ubuntu-latest
|
|
178
|
+
needs: [test, burn-in]
|
|
179
|
+
if: always()
|
|
180
|
+
|
|
181
|
+
steps:
|
|
182
|
+
- name: Download all artifacts
|
|
183
|
+
uses: actions/download-artifact@v4
|
|
184
|
+
with:
|
|
185
|
+
path: artifacts
|
|
186
|
+
|
|
187
|
+
- name: Generate summary
|
|
188
|
+
run: |
|
|
189
|
+
echo "## Test Execution Summary" >> $GITHUB_STEP_SUMMARY
|
|
190
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
191
|
+
echo "- **Status**: ${{ needs.test.result }}" >> $GITHUB_STEP_SUMMARY
|
|
192
|
+
echo "- **Burn-in**: ${{ needs.burn-in.result }}" >> $GITHUB_STEP_SUMMARY
|
|
193
|
+
echo "- **Shards**: 4" >> $GITHUB_STEP_SUMMARY
|
|
194
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
195
|
+
|
|
196
|
+
if [ "${{ needs.burn-in.result }}" == "failure" ]; then
|
|
197
|
+
echo "⚠️ **Flaky tests detected** - Review burn-in artifacts" >> $GITHUB_STEP_SUMMARY
|
|
198
|
+
fi
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# GitLab CI/CD Pipeline for Test Execution
|
|
2
|
+
# Generated by BMad TEA Agent - Test Architect Module
|
|
3
|
+
# Optimized for: Playwright/Cypress, Parallel Sharding, Burn-In Loop
|
|
4
|
+
|
|
5
|
+
stages:
|
|
6
|
+
- lint
|
|
7
|
+
- test
|
|
8
|
+
- burn-in
|
|
9
|
+
- report
|
|
10
|
+
|
|
11
|
+
variables:
|
|
12
|
+
# Disable git depth for accurate change detection
|
|
13
|
+
GIT_DEPTH: 0
|
|
14
|
+
# Use npm ci for faster, deterministic installs
|
|
15
|
+
npm_config_cache: "$CI_PROJECT_DIR/.npm"
|
|
16
|
+
# Playwright browser cache
|
|
17
|
+
PLAYWRIGHT_BROWSERS_PATH: "$CI_PROJECT_DIR/.cache/ms-playwright"
|
|
18
|
+
# Default Node version when .nvmrc is missing
|
|
19
|
+
DEFAULT_NODE_VERSION: "24"
|
|
20
|
+
|
|
21
|
+
# Caching configuration
|
|
22
|
+
cache:
|
|
23
|
+
key:
|
|
24
|
+
files:
|
|
25
|
+
- package-lock.json
|
|
26
|
+
paths:
|
|
27
|
+
- .npm/
|
|
28
|
+
- .cache/ms-playwright/
|
|
29
|
+
- node_modules/
|
|
30
|
+
|
|
31
|
+
# Lint stage - Code quality checks
|
|
32
|
+
lint:
|
|
33
|
+
stage: lint
|
|
34
|
+
image: node:$DEFAULT_NODE_VERSION
|
|
35
|
+
before_script:
|
|
36
|
+
- |
|
|
37
|
+
NODE_VERSION=$(cat .nvmrc 2>/dev/null || echo "$DEFAULT_NODE_VERSION")
|
|
38
|
+
echo "Using Node $NODE_VERSION"
|
|
39
|
+
npm install -g n
|
|
40
|
+
n "$NODE_VERSION"
|
|
41
|
+
node -v
|
|
42
|
+
- npm ci
|
|
43
|
+
script:
|
|
44
|
+
- npm run lint
|
|
45
|
+
timeout: 5 minutes
|
|
46
|
+
|
|
47
|
+
# Test stage - Parallel execution with sharding
|
|
48
|
+
.test-template: &test-template
|
|
49
|
+
stage: test
|
|
50
|
+
image: node:$DEFAULT_NODE_VERSION
|
|
51
|
+
needs:
|
|
52
|
+
- lint
|
|
53
|
+
before_script:
|
|
54
|
+
- |
|
|
55
|
+
NODE_VERSION=$(cat .nvmrc 2>/dev/null || echo "$DEFAULT_NODE_VERSION")
|
|
56
|
+
echo "Using Node $NODE_VERSION"
|
|
57
|
+
npm install -g n
|
|
58
|
+
n "$NODE_VERSION"
|
|
59
|
+
node -v
|
|
60
|
+
- npm ci
|
|
61
|
+
- npx playwright install --with-deps chromium
|
|
62
|
+
artifacts:
|
|
63
|
+
when: on_failure
|
|
64
|
+
paths:
|
|
65
|
+
- test-results/
|
|
66
|
+
- playwright-report/
|
|
67
|
+
expire_in: 30 days
|
|
68
|
+
timeout: 30 minutes
|
|
69
|
+
|
|
70
|
+
test:shard-1:
|
|
71
|
+
<<: *test-template
|
|
72
|
+
script:
|
|
73
|
+
- npm run test:e2e -- --shard=1/4
|
|
74
|
+
|
|
75
|
+
test:shard-2:
|
|
76
|
+
<<: *test-template
|
|
77
|
+
script:
|
|
78
|
+
- npm run test:e2e -- --shard=2/4
|
|
79
|
+
|
|
80
|
+
test:shard-3:
|
|
81
|
+
<<: *test-template
|
|
82
|
+
script:
|
|
83
|
+
- npm run test:e2e -- --shard=3/4
|
|
84
|
+
|
|
85
|
+
test:shard-4:
|
|
86
|
+
<<: *test-template
|
|
87
|
+
script:
|
|
88
|
+
- npm run test:e2e -- --shard=4/4
|
|
89
|
+
|
|
90
|
+
# Burn-in stage - Flaky test detection
|
|
91
|
+
burn-in:
|
|
92
|
+
stage: burn-in
|
|
93
|
+
image: node:$DEFAULT_NODE_VERSION
|
|
94
|
+
needs:
|
|
95
|
+
- test:shard-1
|
|
96
|
+
- test:shard-2
|
|
97
|
+
- test:shard-3
|
|
98
|
+
- test:shard-4
|
|
99
|
+
# Only run burn-in on merge requests to main/develop or on schedule
|
|
100
|
+
rules:
|
|
101
|
+
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
102
|
+
- if: '$CI_PIPELINE_SOURCE == "schedule"'
|
|
103
|
+
before_script:
|
|
104
|
+
- |
|
|
105
|
+
NODE_VERSION=$(cat .nvmrc 2>/dev/null || echo "$DEFAULT_NODE_VERSION")
|
|
106
|
+
echo "Using Node $NODE_VERSION"
|
|
107
|
+
npm install -g n
|
|
108
|
+
n "$NODE_VERSION"
|
|
109
|
+
node -v
|
|
110
|
+
- npm ci
|
|
111
|
+
- npx playwright install --with-deps chromium
|
|
112
|
+
script:
|
|
113
|
+
- |
|
|
114
|
+
echo "🔥 Starting burn-in loop - detecting flaky tests"
|
|
115
|
+
for i in {1..10}; do
|
|
116
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
117
|
+
echo "🔥 Burn-in iteration $i/10"
|
|
118
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
119
|
+
npm run test:e2e || exit 1
|
|
120
|
+
done
|
|
121
|
+
echo "✅ Burn-in complete - no flaky tests detected"
|
|
122
|
+
artifacts:
|
|
123
|
+
when: on_failure
|
|
124
|
+
paths:
|
|
125
|
+
- test-results/
|
|
126
|
+
- playwright-report/
|
|
127
|
+
expire_in: 30 days
|
|
128
|
+
timeout: 60 minutes
|
|
129
|
+
|
|
130
|
+
# Report stage - Aggregate results
|
|
131
|
+
report:
|
|
132
|
+
stage: report
|
|
133
|
+
image: alpine:latest
|
|
134
|
+
needs:
|
|
135
|
+
- test:shard-1
|
|
136
|
+
- test:shard-2
|
|
137
|
+
- test:shard-3
|
|
138
|
+
- test:shard-4
|
|
139
|
+
- burn-in
|
|
140
|
+
when: always
|
|
141
|
+
script:
|
|
142
|
+
- |
|
|
143
|
+
echo "## Test Execution Summary"
|
|
144
|
+
echo ""
|
|
145
|
+
echo "- Pipeline: $CI_PIPELINE_ID"
|
|
146
|
+
echo "- Shards: 4"
|
|
147
|
+
echo "- Branch: $CI_COMMIT_REF_NAME"
|
|
148
|
+
echo ""
|
|
149
|
+
echo "View detailed results in job artifacts"
|