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,294 @@
|
|
|
1
|
+
# Log Utility
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Use structured logging that integrates with Playwright's test reports. Support object logging, test step decoration, and multiple log levels (info, step, success, warning, error, debug).
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
Console.log in Playwright tests has limitations:
|
|
10
|
+
|
|
11
|
+
- Not visible in HTML reports
|
|
12
|
+
- No test step integration
|
|
13
|
+
- No structured output
|
|
14
|
+
- Lost in terminal noise during CI
|
|
15
|
+
|
|
16
|
+
The `log` utility provides:
|
|
17
|
+
|
|
18
|
+
- **Report integration**: Logs appear in Playwright HTML reports
|
|
19
|
+
- **Test step decoration**: `log.step()` creates collapsible steps in UI
|
|
20
|
+
- **Object logging**: Automatically formats objects/arrays
|
|
21
|
+
- **Multiple levels**: info, step, success, warning, error, debug
|
|
22
|
+
- **Optional console**: Can disable console output but keep report logs
|
|
23
|
+
|
|
24
|
+
## Pattern Examples
|
|
25
|
+
|
|
26
|
+
### Example 1: Basic Logging Levels
|
|
27
|
+
|
|
28
|
+
**Context**: Log different types of messages throughout test execution.
|
|
29
|
+
|
|
30
|
+
**Implementation**:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { log } from '@seontechnologies/playwright-utils';
|
|
34
|
+
|
|
35
|
+
test('logging demo', async ({ page }) => {
|
|
36
|
+
await log.step('Navigate to login page');
|
|
37
|
+
await page.goto('/login');
|
|
38
|
+
|
|
39
|
+
await log.info('Entering credentials');
|
|
40
|
+
await page.fill('#username', 'testuser');
|
|
41
|
+
|
|
42
|
+
await log.success('Login successful');
|
|
43
|
+
|
|
44
|
+
await log.warning('Rate limit approaching');
|
|
45
|
+
|
|
46
|
+
await log.debug({ userId: '123', sessionId: 'abc' });
|
|
47
|
+
|
|
48
|
+
// Errors still throw but get logged first
|
|
49
|
+
try {
|
|
50
|
+
await page.click('#nonexistent');
|
|
51
|
+
} catch (error) {
|
|
52
|
+
await log.error('Click failed', false); // false = no console output
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Key Points**:
|
|
59
|
+
|
|
60
|
+
- `step()` creates collapsible steps in Playwright UI
|
|
61
|
+
- `info()`, `success()`, `warning()` for different message types
|
|
62
|
+
- `debug()` for detailed data (objects/arrays)
|
|
63
|
+
- `error()` with optional console suppression
|
|
64
|
+
- All logs appear in test reports
|
|
65
|
+
|
|
66
|
+
### Example 2: Object and Array Logging
|
|
67
|
+
|
|
68
|
+
**Context**: Log structured data for debugging without cluttering console.
|
|
69
|
+
|
|
70
|
+
**Implementation**:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
test('object logging', async ({ apiRequest }) => {
|
|
74
|
+
const { body } = await apiRequest({
|
|
75
|
+
method: 'GET',
|
|
76
|
+
path: '/api/users',
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// Log array of objects
|
|
80
|
+
await log.debug(body); // Formatted as JSON in report
|
|
81
|
+
|
|
82
|
+
// Log specific object
|
|
83
|
+
await log.info({
|
|
84
|
+
totalUsers: body.length,
|
|
85
|
+
firstUser: body[0]?.name,
|
|
86
|
+
timestamp: new Date().toISOString(),
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// Complex nested structures
|
|
90
|
+
await log.debug({
|
|
91
|
+
request: {
|
|
92
|
+
method: 'GET',
|
|
93
|
+
path: '/api/users',
|
|
94
|
+
timestamp: Date.now(),
|
|
95
|
+
},
|
|
96
|
+
response: {
|
|
97
|
+
status: 200,
|
|
98
|
+
body: body.slice(0, 3), // First 3 items
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Key Points**:
|
|
105
|
+
|
|
106
|
+
- Objects auto-formatted as pretty JSON
|
|
107
|
+
- Arrays handled gracefully
|
|
108
|
+
- Nested structures supported
|
|
109
|
+
- All visible in Playwright report attachments
|
|
110
|
+
|
|
111
|
+
### Example 3: Test Step Organization
|
|
112
|
+
|
|
113
|
+
**Context**: Organize test execution into collapsible steps for better readability in reports.
|
|
114
|
+
|
|
115
|
+
**Implementation**:
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
test('organized with steps', async ({ page, apiRequest }) => {
|
|
119
|
+
await log.step('ARRANGE: Setup test data');
|
|
120
|
+
const { body: user } = await apiRequest({
|
|
121
|
+
method: 'POST',
|
|
122
|
+
path: '/api/users',
|
|
123
|
+
body: { name: 'Test User' },
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
await log.step('ACT: Perform user action');
|
|
127
|
+
await page.goto(`/users/${user.id}`);
|
|
128
|
+
await page.click('#edit');
|
|
129
|
+
await page.fill('#name', 'Updated Name');
|
|
130
|
+
await page.click('#save');
|
|
131
|
+
|
|
132
|
+
await log.step('ASSERT: Verify changes');
|
|
133
|
+
await expect(page.getByText('Updated Name')).toBeVisible();
|
|
134
|
+
|
|
135
|
+
// In Playwright UI, each step is collapsible
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Key Points**:
|
|
140
|
+
|
|
141
|
+
- `log.step()` creates collapsible sections
|
|
142
|
+
- Organize by Arrange-Act-Assert
|
|
143
|
+
- Steps visible in Playwright trace viewer
|
|
144
|
+
- Better debugging when tests fail
|
|
145
|
+
|
|
146
|
+
### Example 4: Conditional Logging
|
|
147
|
+
|
|
148
|
+
**Context**: Log different messages based on environment or test conditions.
|
|
149
|
+
|
|
150
|
+
**Implementation**:
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
test('conditional logging', async ({ page }) => {
|
|
154
|
+
const isCI = process.env.CI === 'true';
|
|
155
|
+
|
|
156
|
+
if (isCI) {
|
|
157
|
+
await log.info('Running in CI environment');
|
|
158
|
+
} else {
|
|
159
|
+
await log.debug('Running locally');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const isKafkaWorking = await checkKafkaHealth();
|
|
163
|
+
|
|
164
|
+
if (!isKafkaWorking) {
|
|
165
|
+
await log.warning('Kafka unavailable - skipping event checks');
|
|
166
|
+
} else {
|
|
167
|
+
await log.step('Verifying Kafka events');
|
|
168
|
+
// ... event verification
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Key Points**:
|
|
174
|
+
|
|
175
|
+
- Log based on environment
|
|
176
|
+
- Skip logging with conditionals
|
|
177
|
+
- Use appropriate log levels
|
|
178
|
+
- Debug info for local, minimal for CI
|
|
179
|
+
|
|
180
|
+
### Example 5: Integration with Auth and API
|
|
181
|
+
|
|
182
|
+
**Context**: Log authenticated API requests with tokens (safely).
|
|
183
|
+
|
|
184
|
+
**Implementation**:
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
import { test } from '@seontechnologies/playwright-utils/fixtures';
|
|
188
|
+
|
|
189
|
+
// Helper to create safe token preview
|
|
190
|
+
function createTokenPreview(token: string): string {
|
|
191
|
+
if (!token || token.length < 10) return '[invalid]';
|
|
192
|
+
return `${token.slice(0, 6)}...${token.slice(-4)}`;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
test('should log auth flow', async ({ authToken, apiRequest }) => {
|
|
196
|
+
await log.info(`Using token: ${createTokenPreview(authToken)}`);
|
|
197
|
+
|
|
198
|
+
await log.step('Fetch protected resource');
|
|
199
|
+
const { status, body } = await apiRequest({
|
|
200
|
+
method: 'GET',
|
|
201
|
+
path: '/api/protected',
|
|
202
|
+
headers: { Authorization: `Bearer ${authToken}` },
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
await log.debug({
|
|
206
|
+
status,
|
|
207
|
+
bodyPreview: {
|
|
208
|
+
id: body.id,
|
|
209
|
+
recordCount: body.data?.length,
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
await log.success('Protected resource accessed successfully');
|
|
214
|
+
});
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Key Points**:
|
|
218
|
+
|
|
219
|
+
- Never log full tokens (security risk)
|
|
220
|
+
- Use preview functions for sensitive data
|
|
221
|
+
- Combine with auth and API utilities
|
|
222
|
+
- Log at appropriate detail level
|
|
223
|
+
|
|
224
|
+
## Log Levels Guide
|
|
225
|
+
|
|
226
|
+
| Level | When to Use | Shows in Report | Shows in Console |
|
|
227
|
+
| --------- | ----------------------------------- | -------------------- | ---------------- |
|
|
228
|
+
| `step` | Test organization, major actions | ✅ Collapsible steps | ✅ Yes |
|
|
229
|
+
| `info` | General information, state changes | ✅ Yes | ✅ Yes |
|
|
230
|
+
| `success` | Successful operations | ✅ Yes | ✅ Yes |
|
|
231
|
+
| `warning` | Non-critical issues, skipped checks | ✅ Yes | ✅ Yes |
|
|
232
|
+
| `error` | Failures, exceptions | ✅ Yes | ✅ Configurable |
|
|
233
|
+
| `debug` | Detailed data, objects | ✅ Yes (attached) | ✅ Configurable |
|
|
234
|
+
|
|
235
|
+
## Comparison with console.log
|
|
236
|
+
|
|
237
|
+
| console.log | log Utility |
|
|
238
|
+
| ----------------------- | ------------------------- |
|
|
239
|
+
| Not in reports | Appears in reports |
|
|
240
|
+
| No test steps | Creates collapsible steps |
|
|
241
|
+
| Manual JSON.stringify() | Auto-formats objects |
|
|
242
|
+
| No log levels | 6 log levels |
|
|
243
|
+
| Lost in CI output | Preserved in artifacts |
|
|
244
|
+
|
|
245
|
+
## Related Fragments
|
|
246
|
+
|
|
247
|
+
- `overview.md` - Basic usage and imports
|
|
248
|
+
- `api-request.md` - Log API requests
|
|
249
|
+
- `auth-session.md` - Log auth flow (safely)
|
|
250
|
+
- `recurse.md` - Log polling progress
|
|
251
|
+
|
|
252
|
+
## Anti-Patterns
|
|
253
|
+
|
|
254
|
+
**❌ Logging objects in steps:**
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
await log.step({ user: 'test', action: 'create' }); // Shows empty in UI
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**✅ Use strings for steps, objects for debug:**
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
await log.step('Creating user: test'); // Readable in UI
|
|
264
|
+
await log.debug({ user: 'test', action: 'create' }); // Detailed data
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**❌ Logging sensitive data:**
|
|
268
|
+
|
|
269
|
+
```typescript
|
|
270
|
+
await log.info(`Password: ${password}`); // Security risk!
|
|
271
|
+
await log.info(`Token: ${authToken}`); // Full token exposed!
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**✅ Use previews or omit sensitive data:**
|
|
275
|
+
|
|
276
|
+
```typescript
|
|
277
|
+
await log.info('User authenticated successfully'); // No sensitive data
|
|
278
|
+
await log.debug({ tokenPreview: token.slice(0, 6) + '...' });
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**❌ Excessive logging in loops:**
|
|
282
|
+
|
|
283
|
+
```typescript
|
|
284
|
+
for (const item of items) {
|
|
285
|
+
await log.info(`Processing ${item.id}`); // 100 log entries!
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**✅ Log summary or use debug level:**
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
await log.step(`Processing ${items.length} items`);
|
|
293
|
+
await log.debug({ itemIds: items.map((i) => i.id) }); // One log entry
|
|
294
|
+
```
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Network Error Monitor
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Automatically detect and fail tests when HTTP 4xx/5xx errors occur during execution. Act like Sentry for tests - catch silent backend failures even when UI passes assertions.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
Traditional Playwright tests focus on UI:
|
|
10
|
+
|
|
11
|
+
- Backend 500 errors ignored if UI looks correct
|
|
12
|
+
- Silent failures slip through
|
|
13
|
+
- No visibility into background API health
|
|
14
|
+
- Tests pass while features are broken
|
|
15
|
+
|
|
16
|
+
The `network-error-monitor` provides:
|
|
17
|
+
|
|
18
|
+
- **Automatic detection**: All HTTP 4xx/5xx responses tracked
|
|
19
|
+
- **Test failures**: Fail tests with backend errors (even if UI passes)
|
|
20
|
+
- **Structured artifacts**: JSON reports with error details
|
|
21
|
+
- **Smart opt-out**: Disable for validation tests expecting errors
|
|
22
|
+
- **Deduplication**: Group repeated errors by pattern
|
|
23
|
+
- **Domino effect prevention**: Limit test failures per error pattern
|
|
24
|
+
|
|
25
|
+
## Pattern Examples
|
|
26
|
+
|
|
27
|
+
### Example 1: Basic Auto-Monitoring
|
|
28
|
+
|
|
29
|
+
**Context**: Automatically fail tests when backend errors occur.
|
|
30
|
+
|
|
31
|
+
**Implementation**:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { test } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
|
|
35
|
+
|
|
36
|
+
// Monitoring automatically enabled
|
|
37
|
+
test('should load dashboard', async ({ page }) => {
|
|
38
|
+
await page.goto('/dashboard');
|
|
39
|
+
await expect(page.locator('h1')).toContainText('Dashboard');
|
|
40
|
+
|
|
41
|
+
// ✅ Passes if no HTTP errors
|
|
42
|
+
// ❌ Fails if any 4xx/5xx errors detected with clear message:
|
|
43
|
+
// "Network errors detected: 2 request(s) failed"
|
|
44
|
+
// Failed requests:
|
|
45
|
+
// GET 500 https://api.example.com/users
|
|
46
|
+
// POST 503 https://api.example.com/metrics
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Key Points**:
|
|
51
|
+
|
|
52
|
+
- Zero setup - auto-enabled for all tests
|
|
53
|
+
- Fails on any 4xx/5xx response
|
|
54
|
+
- Structured error message with URLs and status codes
|
|
55
|
+
- JSON artifact attached to test report
|
|
56
|
+
|
|
57
|
+
### Example 2: Opt-Out for Validation Tests
|
|
58
|
+
|
|
59
|
+
**Context**: Some tests expect errors (validation, error handling, edge cases).
|
|
60
|
+
|
|
61
|
+
**Implementation**:
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
import { test } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
|
|
65
|
+
|
|
66
|
+
// Opt-out with annotation
|
|
67
|
+
test('should show error on invalid input', { annotation: [{ type: 'skipNetworkMonitoring' }] }, async ({ page }) => {
|
|
68
|
+
await page.goto('/form');
|
|
69
|
+
await page.click('#submit'); // Triggers 400 error
|
|
70
|
+
|
|
71
|
+
// Monitoring disabled - test won't fail on 400
|
|
72
|
+
await expect(page.getByText('Invalid input')).toBeVisible();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Or opt-out entire describe block
|
|
76
|
+
test.describe('error handling', { annotation: [{ type: 'skipNetworkMonitoring' }] }, () => {
|
|
77
|
+
test('handles 404', async ({ page }) => {
|
|
78
|
+
// All tests in this block skip monitoring
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
test('handles 500', async ({ page }) => {
|
|
82
|
+
// Monitoring disabled
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Key Points**:
|
|
88
|
+
|
|
89
|
+
- Use annotation `{ type: 'skipNetworkMonitoring' }`
|
|
90
|
+
- Can opt-out single test or entire describe block
|
|
91
|
+
- Monitoring still active for other tests
|
|
92
|
+
- Perfect for intentional error scenarios
|
|
93
|
+
|
|
94
|
+
### Example 3: Integration with Merged Fixtures
|
|
95
|
+
|
|
96
|
+
**Context**: Combine network-error-monitor with other utilities.
|
|
97
|
+
|
|
98
|
+
**Implementation**:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
// playwright/support/merged-fixtures.ts
|
|
102
|
+
import { mergeTests } from '@playwright/test';
|
|
103
|
+
import { test as authFixture } from '@seontechnologies/playwright-utils/auth-session/fixtures';
|
|
104
|
+
import { test as networkErrorMonitorFixture } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
|
|
105
|
+
|
|
106
|
+
export const test = mergeTests(
|
|
107
|
+
authFixture,
|
|
108
|
+
networkErrorMonitorFixture,
|
|
109
|
+
// Add other fixtures
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
// In tests
|
|
113
|
+
import { test, expect } from '../support/merged-fixtures';
|
|
114
|
+
|
|
115
|
+
test('authenticated with monitoring', async ({ page, authToken }) => {
|
|
116
|
+
// Both auth and network monitoring active
|
|
117
|
+
await page.goto('/protected');
|
|
118
|
+
|
|
119
|
+
// Fails if backend returns errors during auth flow
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Key Points**:
|
|
124
|
+
|
|
125
|
+
- Combine with `mergeTests`
|
|
126
|
+
- Works alongside all other utilities
|
|
127
|
+
- Monitoring active automatically
|
|
128
|
+
- No extra setup needed
|
|
129
|
+
|
|
130
|
+
### Example 4: Domino Effect Prevention
|
|
131
|
+
|
|
132
|
+
**Context**: One failing endpoint shouldn't fail all tests.
|
|
133
|
+
|
|
134
|
+
**Implementation**:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
// Configuration (internal to utility)
|
|
138
|
+
const config = {
|
|
139
|
+
maxTestsPerError: 3, // Max 3 tests fail per unique error pattern
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// Scenario:
|
|
143
|
+
// Test 1: GET /api/broken → 500 error → Test fails ❌
|
|
144
|
+
// Test 2: GET /api/broken → 500 error → Test fails ❌
|
|
145
|
+
// Test 3: GET /api/broken → 500 error → Test fails ❌
|
|
146
|
+
// Test 4: GET /api/broken → 500 error → Test passes ⚠️ (limit reached, warning logged)
|
|
147
|
+
// Test 5: Different error pattern → Test fails ❌ (new pattern, counter resets)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Key Points**:
|
|
151
|
+
|
|
152
|
+
- Limits cascading failures
|
|
153
|
+
- Groups errors by URL + status code pattern
|
|
154
|
+
- Warns when limit reached
|
|
155
|
+
- Prevents flaky backend from failing entire suite
|
|
156
|
+
|
|
157
|
+
### Example 5: Artifact Structure
|
|
158
|
+
|
|
159
|
+
**Context**: Debugging failed tests with network error artifacts.
|
|
160
|
+
|
|
161
|
+
**Implementation**:
|
|
162
|
+
|
|
163
|
+
When test fails due to network errors, artifact attached:
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
// test-results/my-test/network-errors.json
|
|
167
|
+
{
|
|
168
|
+
"errors": [
|
|
169
|
+
{
|
|
170
|
+
"url": "https://api.example.com/users",
|
|
171
|
+
"method": "GET",
|
|
172
|
+
"status": 500,
|
|
173
|
+
"statusText": "Internal Server Error",
|
|
174
|
+
"timestamp": "2024-08-13T10:30:45.123Z"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"url": "https://api.example.com/metrics",
|
|
178
|
+
"method": "POST",
|
|
179
|
+
"status": 503,
|
|
180
|
+
"statusText": "Service Unavailable",
|
|
181
|
+
"timestamp": "2024-08-13T10:30:46.456Z"
|
|
182
|
+
}
|
|
183
|
+
],
|
|
184
|
+
"summary": {
|
|
185
|
+
"totalErrors": 2,
|
|
186
|
+
"uniquePatterns": 2
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Key Points**:
|
|
192
|
+
|
|
193
|
+
- JSON artifact per failed test
|
|
194
|
+
- Full error details (URL, method, status, timestamp)
|
|
195
|
+
- Summary statistics
|
|
196
|
+
- Easy debugging with structured data
|
|
197
|
+
|
|
198
|
+
## Comparison with Manual Error Checks
|
|
199
|
+
|
|
200
|
+
| Manual Approach | network-error-monitor |
|
|
201
|
+
| ------------------------------------------------------ | -------------------------- |
|
|
202
|
+
| `page.on('response', resp => { if (!resp.ok()) ... })` | Auto-enabled, zero setup |
|
|
203
|
+
| Check each response manually | Automatic for all requests |
|
|
204
|
+
| Custom error tracking logic | Built-in deduplication |
|
|
205
|
+
| No structured artifacts | JSON artifacts attached |
|
|
206
|
+
| Easy to forget | Never miss a backend error |
|
|
207
|
+
|
|
208
|
+
## When to Use
|
|
209
|
+
|
|
210
|
+
**Auto-enabled for:**
|
|
211
|
+
|
|
212
|
+
- ✅ All E2E tests
|
|
213
|
+
- ✅ Integration tests
|
|
214
|
+
- ✅ Any test hitting real APIs
|
|
215
|
+
|
|
216
|
+
**Opt-out for:**
|
|
217
|
+
|
|
218
|
+
- ❌ Validation tests (expecting 4xx)
|
|
219
|
+
- ❌ Error handling tests (expecting 5xx)
|
|
220
|
+
- ❌ Offline tests (network-recorder playback)
|
|
221
|
+
|
|
222
|
+
## Integration with Framework Setup
|
|
223
|
+
|
|
224
|
+
In `*framework` workflow, mention network-error-monitor:
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
// Add to merged-fixtures.ts
|
|
228
|
+
import { test as networkErrorMonitorFixture } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
|
|
229
|
+
|
|
230
|
+
export const test = mergeTests(
|
|
231
|
+
// ... other fixtures
|
|
232
|
+
networkErrorMonitorFixture,
|
|
233
|
+
);
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Related Fragments
|
|
237
|
+
|
|
238
|
+
- `overview.md` - Installation and fixtures
|
|
239
|
+
- `fixtures-composition.md` - Merging with other utilities
|
|
240
|
+
- `error-handling.md` - Traditional error handling patterns
|
|
241
|
+
|
|
242
|
+
## Anti-Patterns
|
|
243
|
+
|
|
244
|
+
**❌ Opting out of monitoring globally:**
|
|
245
|
+
|
|
246
|
+
```typescript
|
|
247
|
+
// Every test skips monitoring
|
|
248
|
+
test.use({ annotation: [{ type: 'skipNetworkMonitoring' }] });
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**✅ Opt-out only for specific error tests:**
|
|
252
|
+
|
|
253
|
+
```typescript
|
|
254
|
+
test.describe('error scenarios', { annotation: [{ type: 'skipNetworkMonitoring' }] }, () => {
|
|
255
|
+
// Only these tests skip monitoring
|
|
256
|
+
});
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**❌ Ignoring network error artifacts:**
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// Test fails, artifact shows 500 errors
|
|
263
|
+
// Developer: "Works on my machine" ¯\_(ツ)_/¯
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**✅ Check artifacts for root cause:**
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
// Read network-errors.json artifact
|
|
270
|
+
// Identify failing endpoint: GET /api/users → 500
|
|
271
|
+
// Fix backend issue before merging
|
|
272
|
+
```
|