siesa-agents 2.1.40 → 2.1.42
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/README.md +147 -147
- package/bin/install.js +534 -534
- package/bin/prepare-publish.js +26 -26
- package/bin/restore-folders.js +26 -26
- package/bmad/_config/agent-manifest.csv +20 -20
- package/bmad/_config/agents/bmb-agent-builder.customize.yaml +41 -41
- package/bmad/_config/agents/bmb-module-builder.customize.yaml +41 -41
- package/bmad/_config/agents/bmb-workflow-builder.customize.yaml +41 -41
- package/bmad/_config/files-manifest.csv +469 -469
- package/bmad/_config/ides/claude-code.yaml +6 -6
- package/bmad/_config/manifest.yaml +14 -14
- package/bmad/_config/task-manifest.csv +6 -6
- package/bmad/_config/tool-manifest.csv +1 -1
- package/bmad/_config/workflow-manifest.csv +45 -45
- package/bmad/_memory/config.yaml +11 -11
- package/bmad/bmb/README.md +25 -25
- package/bmad/bmb/agents/agent-builder.md +57 -57
- package/bmad/bmb/agents/module-builder.md +60 -60
- package/bmad/bmb/agents/workflow-builder.md +56 -56
- package/bmad/bmb/config.yaml +12 -12
- package/bmad/bmb/docs/workflows/architecture.md +220 -220
- package/bmad/bmb/docs/workflows/common-workflow-tools.csv +18 -18
- package/bmad/bmb/docs/workflows/csv-data-file-standards.md +206 -206
- package/bmad/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -220
- package/bmad/bmb/docs/workflows/step-file-rules.md +469 -469
- package/bmad/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -241
- package/bmad/bmb/docs/workflows/templates/step-1b-template.md +223 -223
- package/bmad/bmb/docs/workflows/templates/step-file.md +139 -139
- package/bmad/bmb/docs/workflows/templates/step-template.md +290 -290
- package/bmad/bmb/docs/workflows/templates/workflow-template.md +104 -104
- package/bmad/bmb/docs/workflows/templates/workflow.md +58 -58
- package/bmad/bmb/docs/workflows/terms.md +97 -97
- package/bmad/bmb/reference/agents/simple-examples/README.md +223 -223
- package/bmad/bmb/reference/readme.md +3 -3
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +17 -17
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +15 -15
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +27 -27
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -177
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +121 -121
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +165 -165
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +154 -154
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +183 -183
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +168 -168
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +195 -195
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -25
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -68
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -29
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -47
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -37
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -18
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/workflow.md +59 -59
- package/bmad/bmb/workflows/agent/data/agent-compilation.md +273 -273
- package/bmad/bmb/workflows/agent/data/agent-menu-patterns.md +233 -233
- package/bmad/bmb/workflows/agent/data/agent-metadata.md +208 -208
- package/bmad/bmb/workflows/agent/data/brainstorm-context.md +146 -146
- package/bmad/bmb/workflows/agent/data/communication-presets.csv +61 -61
- package/bmad/bmb/workflows/agent/data/critical-actions.md +120 -120
- package/bmad/bmb/workflows/agent/data/expert-agent-architecture.md +236 -236
- package/bmad/bmb/workflows/agent/data/expert-agent-validation.md +173 -173
- package/bmad/bmb/workflows/agent/data/module-agent-validation.md +124 -124
- package/bmad/bmb/workflows/agent/data/persona-properties.md +266 -266
- package/bmad/bmb/workflows/agent/data/principles-crafting.md +292 -292
- package/bmad/bmb/workflows/agent/data/reference/expert-examples/journal-keeper/journal-keeper-sidecar/entries/yy-mm-dd-entry-template.md +16 -16
- package/bmad/bmb/workflows/agent/data/reference/module-examples/architect.md +68 -68
- package/bmad/bmb/workflows/agent/data/simple-agent-architecture.md +204 -204
- package/bmad/bmb/workflows/agent/data/simple-agent-validation.md +132 -132
- package/bmad/bmb/workflows/agent/data/understanding-agent-types.md +222 -222
- package/bmad/bmb/workflows/agent/steps-c/step-01-brainstorm.md +126 -126
- package/bmad/bmb/workflows/agent/steps-c/step-02-discovery.md +168 -168
- package/bmad/bmb/workflows/agent/steps-c/step-03-type-metadata.md +294 -294
- package/bmad/bmb/workflows/agent/steps-c/step-04-persona.md +210 -210
- package/bmad/bmb/workflows/agent/steps-c/step-05-commands-menu.md +176 -176
- package/bmad/bmb/workflows/agent/steps-c/step-06-activation.md +275 -275
- package/bmad/bmb/workflows/agent/steps-c/step-07a-build-simple.md +185 -185
- package/bmad/bmb/workflows/agent/steps-c/step-07b-build-expert.md +201 -201
- package/bmad/bmb/workflows/agent/steps-c/step-07c-build-module.md +258 -258
- package/bmad/bmb/workflows/agent/steps-c/step-08a-plan-traceability.md +203 -203
- package/bmad/bmb/workflows/agent/steps-c/step-08b-metadata-validation.md +135 -135
- package/bmad/bmb/workflows/agent/steps-c/step-08c-persona-validation.md +161 -161
- package/bmad/bmb/workflows/agent/steps-c/step-08d-menu-validation.md +158 -158
- package/bmad/bmb/workflows/agent/steps-c/step-08e-structure-validation.md +306 -306
- package/bmad/bmb/workflows/agent/steps-c/step-08f-sidecar-validation.md +462 -462
- package/bmad/bmb/workflows/agent/steps-c/step-09-celebrate.md +244 -244
- package/bmad/bmb/workflows/agent/steps-e/e-01-load-existing.md +214 -214
- package/bmad/bmb/workflows/agent/steps-e/e-02-discover-edits.md +191 -191
- package/bmad/bmb/workflows/agent/steps-e/e-03a-validate-metadata.md +78 -78
- package/bmad/bmb/workflows/agent/steps-e/e-03b-validate-persona.md +76 -76
- package/bmad/bmb/workflows/agent/steps-e/e-03c-validate-menu.md +75 -75
- package/bmad/bmb/workflows/agent/steps-e/e-03d-validate-structure.md +75 -75
- package/bmad/bmb/workflows/agent/steps-e/e-03e-validate-sidecar.md +78 -78
- package/bmad/bmb/workflows/agent/steps-e/e-03f-validation-summary.md +119 -119
- package/bmad/bmb/workflows/agent/steps-e/e-04-type-metadata.md +122 -122
- package/bmad/bmb/workflows/agent/steps-e/e-05-persona.md +132 -132
- package/bmad/bmb/workflows/agent/steps-e/e-06-commands-menu.md +120 -120
- package/bmad/bmb/workflows/agent/steps-e/e-07-activation.md +122 -122
- package/bmad/bmb/workflows/agent/steps-e/e-08a-edit-simple.md +134 -134
- package/bmad/bmb/workflows/agent/steps-e/e-08b-edit-expert.md +117 -117
- package/bmad/bmb/workflows/agent/steps-e/e-08c-edit-module.md +120 -120
- package/bmad/bmb/workflows/agent/steps-e/e-09a-validate-metadata.md +70 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09b-validate-persona.md +70 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09c-validate-menu.md +69 -69
- package/bmad/bmb/workflows/agent/steps-e/e-09d-validate-structure.md +69 -69
- package/bmad/bmb/workflows/agent/steps-e/e-09e-validate-sidecar.md +70 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09f-validation-summary.md +111 -111
- package/bmad/bmb/workflows/agent/steps-e/e-10-celebrate.md +150 -150
- package/bmad/bmb/workflows/agent/steps-v/v-01-load-review.md +128 -128
- package/bmad/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +73 -73
- package/bmad/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +72 -72
- package/bmad/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +71 -71
- package/bmad/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +71 -71
- package/bmad/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +76 -76
- package/bmad/bmb/workflows/agent/steps-v/v-03-summary.md +100 -100
- package/bmad/bmb/workflows/agent/templates/agent-plan.template.md +5 -5
- package/bmad/bmb/workflows/agent/templates/expert-agent-template/expert-agent.template.md +76 -76
- package/bmad/bmb/workflows/agent/templates/simple-agent.template.md +71 -71
- package/bmad/bmb/workflows/agent/workflow.md +123 -123
- package/bmad/bmb/workflows/create-module/steps/step-01-init.md +156 -156
- package/bmad/bmb/workflows/create-module/steps/step-01b-continue.md +170 -170
- package/bmad/bmb/workflows/create-module/steps/step-02-concept.md +218 -218
- package/bmad/bmb/workflows/create-module/steps/step-03-components.md +268 -268
- package/bmad/bmb/workflows/create-module/steps/step-04-structure.md +229 -229
- package/bmad/bmb/workflows/create-module/steps/step-05-config.md +234 -234
- package/bmad/bmb/workflows/create-module/steps/step-06-agents.md +297 -297
- package/bmad/bmb/workflows/create-module/steps/step-07-workflows.md +229 -229
- package/bmad/bmb/workflows/create-module/steps/step-08-installer.md +187 -187
- package/bmad/bmb/workflows/create-module/steps/step-09-documentation.md +310 -310
- package/bmad/bmb/workflows/create-module/steps/step-10-roadmap.md +338 -338
- package/bmad/bmb/workflows/create-module/steps/step-11-validate.md +336 -336
- package/bmad/bmb/workflows/create-module/templates/agent.template.md +313 -313
- package/bmad/bmb/workflows/create-module/templates/installer.template.js +47 -47
- package/bmad/bmb/workflows/create-module/templates/module-plan.template.md +5 -5
- package/bmad/bmb/workflows/create-module/templates/module.template.yaml +53 -53
- package/bmad/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -23
- package/bmad/bmb/workflows/create-module/validation.md +126 -126
- package/bmad/bmb/workflows/create-module/workflow.md +56 -56
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/dietary-restrictions.csv +17 -17
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/macro-calculator.csv +15 -15
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/recipe-database.csv +27 -27
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-01-init.md +177 -177
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-01b-continue.md +150 -150
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-02-profile.md +164 -164
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-03-assessment.md +152 -152
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-04-strategy.md +182 -182
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-05-shopping.md +167 -167
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -194
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/assessment-section.md +25 -25
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/nutrition-plan.md +68 -68
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/prep-schedule-section.md +29 -29
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/profile-section.md +47 -47
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/shopping-section.md +37 -37
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/strategy-section.md +18 -18
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/workflow.md +58 -58
- package/bmad/bmb/workflows/create-workflow/steps/step-01-init.md +158 -158
- package/bmad/bmb/workflows/create-workflow/steps/step-02-gather.md +212 -212
- package/bmad/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +251 -251
- package/bmad/bmb/workflows/create-workflow/steps/step-04-plan-review.md +217 -217
- package/bmad/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +290 -290
- package/bmad/bmb/workflows/create-workflow/steps/step-06-design.md +272 -272
- package/bmad/bmb/workflows/create-workflow/steps/step-07-build.md +323 -323
- package/bmad/bmb/workflows/create-workflow/steps/step-08-review.md +285 -285
- package/bmad/bmb/workflows/create-workflow/steps/step-09-complete.md +188 -188
- package/bmad/bmb/workflows/create-workflow/workflow.md +59 -59
- package/bmad/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -217
- package/bmad/bmb/workflows/edit-workflow/steps/step-02-discover.md +254 -254
- package/bmad/bmb/workflows/edit-workflow/steps/step-03-improve.md +218 -218
- package/bmad/bmb/workflows/edit-workflow/steps/step-04-validate.md +194 -194
- package/bmad/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +246 -246
- package/bmad/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -75
- package/bmad/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -68
- package/bmad/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -40
- package/bmad/bmb/workflows/edit-workflow/templates/validation-results.md +51 -51
- package/bmad/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -56
- package/bmad/bmb/workflows/edit-workflow/workflow.md +59 -59
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +153 -153
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +244 -244
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +275 -275
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +296 -296
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +265 -265
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +361 -361
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +259 -259
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +302 -302
- package/bmad/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -140
- package/bmad/bmb/workflows/workflow-compliance-check/workflow.md +59 -59
- package/bmad/bmb/workflows-legacy/edit-module/README.md +171 -171
- package/bmad/bmb/workflows-legacy/edit-module/checklist.md +163 -163
- package/bmad/bmb/workflows-legacy/edit-module/instructions.md +340 -340
- package/bmad/bmb/workflows-legacy/edit-module/workflow.yaml +32 -32
- package/bmad/bmb/workflows-legacy/module-brief/README.md +264 -264
- package/bmad/bmb/workflows-legacy/module-brief/checklist.md +116 -116
- package/bmad/bmb/workflows-legacy/module-brief/instructions.md +268 -268
- package/bmad/bmb/workflows-legacy/module-brief/template.md +275 -275
- package/bmad/bmb/workflows-legacy/module-brief/workflow.yaml +34 -34
- package/bmad/bmm/agents/analyst.md +76 -76
- package/bmad/bmm/agents/architect.md +68 -68
- package/bmad/bmm/agents/dev.md +70 -70
- package/bmad/bmm/agents/pm.md +70 -70
- package/bmad/bmm/agents/quick-flow-solo-dev.md +68 -68
- package/bmad/bmm/agents/sm.md +71 -71
- package/bmad/bmm/agents/tea.md +71 -71
- package/bmad/bmm/agents/tech-writer.md +72 -72
- package/bmad/bmm/agents/ux-designer.md +68 -68
- package/bmad/bmm/config.yaml +18 -18
- package/bmad/bmm/data/README.md +29 -29
- package/bmad/bmm/data/documentation-standards.md +262 -262
- package/bmad/bmm/data/project-context-template.md +40 -40
- package/bmad/bmm/teams/default-party.csv +21 -21
- package/bmad/bmm/teams/team-fullstack.yaml +12 -12
- package/bmad/bmm/testarch/knowledge/api-request.md +303 -303
- package/bmad/bmm/testarch/knowledge/auth-session.md +356 -356
- package/bmad/bmm/testarch/knowledge/burn-in.md +273 -273
- package/bmad/bmm/testarch/knowledge/ci-burn-in.md +675 -675
- package/bmad/bmm/testarch/knowledge/component-tdd.md +486 -486
- package/bmad/bmm/testarch/knowledge/contract-testing.md +957 -957
- package/bmad/bmm/testarch/knowledge/data-factories.md +500 -500
- package/bmad/bmm/testarch/knowledge/email-auth.md +721 -721
- package/bmad/bmm/testarch/knowledge/error-handling.md +725 -725
- package/bmad/bmm/testarch/knowledge/feature-flags.md +750 -750
- package/bmad/bmm/testarch/knowledge/file-utils.md +260 -260
- package/bmad/bmm/testarch/knowledge/fixture-architecture.md +401 -401
- package/bmad/bmm/testarch/knowledge/fixtures-composition.md +382 -382
- package/bmad/bmm/testarch/knowledge/intercept-network-call.md +280 -280
- package/bmad/bmm/testarch/knowledge/log.md +294 -294
- package/bmad/bmm/testarch/knowledge/network-error-monitor.md +272 -272
- package/bmad/bmm/testarch/knowledge/network-first.md +486 -486
- package/bmad/bmm/testarch/knowledge/network-recorder.md +265 -265
- package/bmad/bmm/testarch/knowledge/nfr-criteria.md +670 -670
- package/bmad/bmm/testarch/knowledge/overview.md +283 -283
- package/bmad/bmm/testarch/knowledge/playwright-config.md +730 -730
- package/bmad/bmm/testarch/knowledge/probability-impact.md +601 -601
- package/bmad/bmm/testarch/knowledge/recurse.md +296 -296
- package/bmad/bmm/testarch/knowledge/risk-governance.md +615 -615
- package/bmad/bmm/testarch/knowledge/selective-testing.md +732 -732
- package/bmad/bmm/testarch/knowledge/selector-resilience.md +527 -527
- package/bmad/bmm/testarch/knowledge/test-healing-patterns.md +644 -644
- package/bmad/bmm/testarch/knowledge/test-levels-framework.md +473 -473
- package/bmad/bmm/testarch/knowledge/test-priorities-matrix.md +373 -373
- package/bmad/bmm/testarch/knowledge/test-quality.md +664 -664
- package/bmad/bmm/testarch/knowledge/timing-debugging.md +372 -372
- package/bmad/bmm/testarch/knowledge/visual-debugging.md +524 -524
- package/bmad/bmm/testarch/tea-index.csv +33 -33
- package/bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -10
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +182 -182
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +166 -166
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +204 -204
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +207 -207
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +210 -210
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +224 -224
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +199 -199
- package/bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -58
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -137
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -229
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -238
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -206
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -234
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -443
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -182
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -237
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -200
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -249
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -259
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -177
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -475
- package/bmad/bmm/workflows/1-analysis/research/research.template.md +29 -29
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -137
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -239
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -248
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -202
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -239
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -486
- package/bmad/bmm/workflows/1-analysis/research/workflow.md +173 -173
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -135
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -127
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -190
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -216
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -219
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -234
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -252
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -254
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -224
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -224
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -241
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +332 -248
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -237
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -264
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +228 -228
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -13
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +59 -43
- package/bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +12 -12
- package/bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +11 -11
- package/bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +10 -10
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +197 -197
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +166 -166
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +421 -421
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +290 -290
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +291 -291
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +271 -271
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +262 -262
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +258 -258
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +299 -299
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +270 -270
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +294 -294
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +186 -186
- package/bmad/bmm/workflows/2-plan-workflows/prd/workflow.md +63 -63
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -190
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -178
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -179
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -139
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -252
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +133 -133
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -4
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -55
- package/bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -12
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/architecture-patterns.md +415 -415
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/backend-standards.md +811 -811
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/frontend-standards.md +375 -375
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/technical-preferences-ux.md +422 -422
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/technology-stack.md +235 -235
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +10 -10
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +6 -6
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +166 -166
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -164
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -224
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +342 -342
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +328 -328
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +368 -368
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -379
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +366 -366
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +352 -352
- package/bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +51 -51
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -259
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -233
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -272
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +145 -145
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -57
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -59
- package/bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -23
- package/bmad/bmm/workflows/4-implementation/code-review/instructions.xml +224 -224
- package/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +49 -49
- package/bmad/bmm/workflows/4-implementation/correct-course/checklist.md +279 -279
- package/bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -206
- package/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -58
- package/bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -358
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-01-determine-story.md +85 -85
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-02-analyze.md +67 -67
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-03-architecture.md +71 -71
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-04-web-research.md +58 -58
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-05-create-file.md +76 -76
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-06-finalize.md +66 -66
- package/bmad/bmm/workflows/4-implementation/create-story/template.md +49 -49
- package/bmad/bmm/workflows/4-implementation/create-story/workflow.md +58 -58
- package/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml.bak +63 -63
- package/bmad/bmm/workflows/4-implementation/dev-story/checklist.md +85 -85
- package/bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +470 -470
- package/bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +25 -25
- package/bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -1443
- package/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +56 -56
- package/bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -33
- package/bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -225
- package/bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -55
- package/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -52
- package/bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -229
- package/bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +34 -34
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-01-understand.md +189 -189
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-02-investigate.md +144 -144
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-03-generate.md +128 -128
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-04-review.md +173 -173
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/tech-spec-template.md +74 -74
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.md +79 -79
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -156
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -120
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -113
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -113
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -106
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -140
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +52 -52
- package/bmad/bmm/workflows/document-project/checklist.md +245 -245
- package/bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -12
- package/bmad/bmm/workflows/document-project/instructions.md +221 -221
- package/bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -345
- package/bmad/bmm/workflows/document-project/templates/index-template.md +169 -169
- package/bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -103
- package/bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -160
- package/bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -135
- package/bmad/bmm/workflows/document-project/workflow.yaml +28 -28
- package/bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -298
- package/bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -31
- package/bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -1106
- package/bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -31
- package/bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -90
- package/bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -127
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -39
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -130
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +25 -25
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -43
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -141
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +25 -25
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -49
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -241
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +25 -25
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -38
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -133
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +25 -25
- package/bmad/bmm/workflows/generate-project-context/project-context-template.md +21 -21
- package/bmad/bmm/workflows/generate-project-context/steps/step-01-discover.md +218 -218
- package/bmad/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -318
- package/bmad/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -278
- package/bmad/bmm/workflows/generate-project-context/workflow.md +50 -50
- package/bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +364 -364
- package/bmad/bmm/workflows/testarch/atdd/checklist.md +374 -374
- package/bmad/bmm/workflows/testarch/atdd/instructions.md +806 -806
- package/bmad/bmm/workflows/testarch/atdd/workflow.yaml +45 -45
- package/bmad/bmm/workflows/testarch/automate/checklist.md +582 -582
- package/bmad/bmm/workflows/testarch/automate/instructions.md +1324 -1324
- package/bmad/bmm/workflows/testarch/automate/workflow.yaml +52 -52
- package/bmad/bmm/workflows/testarch/ci/checklist.md +248 -248
- package/bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -198
- package/bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -149
- package/bmad/bmm/workflows/testarch/ci/instructions.md +536 -536
- package/bmad/bmm/workflows/testarch/ci/workflow.yaml +45 -45
- package/bmad/bmm/workflows/testarch/framework/checklist.md +321 -321
- package/bmad/bmm/workflows/testarch/framework/instructions.md +481 -481
- package/bmad/bmm/workflows/testarch/framework/workflow.yaml +47 -47
- package/bmad/bmm/workflows/testarch/nfr-assess/checklist.md +407 -407
- package/bmad/bmm/workflows/testarch/nfr-assess/instructions.md +722 -722
- package/bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +445 -445
- package/bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +47 -47
- package/bmad/bmm/workflows/testarch/test-design/checklist.md +235 -235
- package/bmad/bmm/workflows/testarch/test-design/instructions.md +788 -788
- package/bmad/bmm/workflows/testarch/test-design/test-design-template.md +294 -294
- package/bmad/bmm/workflows/testarch/test-design/workflow.yaml +54 -54
- package/bmad/bmm/workflows/testarch/test-review/checklist.md +472 -472
- package/bmad/bmm/workflows/testarch/test-review/instructions.md +628 -628
- package/bmad/bmm/workflows/testarch/test-review/test-review-template.md +390 -390
- package/bmad/bmm/workflows/testarch/test-review/workflow.yaml +46 -46
- package/bmad/bmm/workflows/testarch/trace/checklist.md +655 -655
- package/bmad/bmm/workflows/testarch/trace/instructions.md +1047 -1047
- package/bmad/bmm/workflows/testarch/trace/trace-template.md +675 -675
- package/bmad/bmm/workflows/testarch/trace/workflow.yaml +55 -55
- package/bmad/bmm/workflows/workflow-status/init/instructions.md +346 -346
- package/bmad/bmm/workflows/workflow-status/init/workflow.yaml +28 -28
- package/bmad/bmm/workflows/workflow-status/instructions.md +395 -395
- package/bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +103 -103
- package/bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +100 -100
- package/bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +103 -103
- package/bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +100 -100
- package/bmad/bmm/workflows/workflow-status/project-levels.yaml +59 -59
- package/bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -24
- package/bmad/bmm/workflows/workflow-status/workflow.yaml +30 -30
- package/bmad/cis/agents/brainstorming-coach.md +60 -60
- package/bmad/cis/agents/creative-problem-solver.md +60 -60
- package/bmad/cis/agents/design-thinking-coach.md +60 -60
- package/bmad/cis/agents/innovation-strategist.md +60 -60
- package/bmad/cis/agents/presentation-master.md +66 -66
- package/bmad/cis/agents/storyteller/storyteller.md +57 -57
- package/bmad/cis/config.yaml +11 -11
- package/bmad/cis/teams/creative-squad.yaml +7 -7
- package/bmad/cis/teams/default-party.csv +12 -12
- package/bmad/cis/workflows/README.md +139 -139
- package/bmad/cis/workflows/design-thinking/README.md +56 -56
- package/bmad/cis/workflows/design-thinking/design-methods.csv +30 -30
- package/bmad/cis/workflows/design-thinking/instructions.md +202 -202
- package/bmad/cis/workflows/design-thinking/template.md +111 -111
- package/bmad/cis/workflows/design-thinking/workflow.yaml +27 -27
- package/bmad/cis/workflows/innovation-strategy/README.md +56 -56
- package/bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +30 -30
- package/bmad/cis/workflows/innovation-strategy/instructions.md +276 -276
- package/bmad/cis/workflows/innovation-strategy/template.md +189 -189
- package/bmad/cis/workflows/innovation-strategy/workflow.yaml +27 -27
- package/bmad/cis/workflows/problem-solving/README.md +56 -56
- package/bmad/cis/workflows/problem-solving/instructions.md +252 -252
- package/bmad/cis/workflows/problem-solving/solving-methods.csv +30 -30
- package/bmad/cis/workflows/problem-solving/template.md +165 -165
- package/bmad/cis/workflows/problem-solving/workflow.yaml +27 -27
- package/bmad/cis/workflows/storytelling/README.md +58 -58
- package/bmad/cis/workflows/storytelling/instructions.md +293 -293
- package/bmad/cis/workflows/storytelling/story-types.csv +25 -25
- package/bmad/cis/workflows/storytelling/template.md +113 -113
- package/bmad/cis/workflows/storytelling/workflow.yaml +27 -27
- package/bmad/core/agents/bmad-master.md +57 -57
- package/bmad/core/config.yaml +9 -9
- package/bmad/core/resources/excalidraw/README.md +160 -160
- package/bmad/core/resources/excalidraw/excalidraw-helpers.md +127 -127
- package/bmad/core/resources/excalidraw/library-loader.md +50 -50
- package/bmad/core/resources/excalidraw/validate-json-instructions.md +79 -79
- package/bmad/core/tasks/index-docs.xml +64 -64
- package/bmad/core/tasks/review-adversarial-general.xml +41 -41
- package/bmad/core/tasks/shard-doc.xml +108 -108
- package/bmad/core/tasks/validate-workflow.xml +88 -88
- package/bmad/core/tasks/workflow.xml +234 -234
- package/bmad/core/workflows/advanced-elicitation/methods.csv +51 -51
- package/bmad/core/workflows/advanced-elicitation/workflow.xml +116 -116
- package/bmad/core/workflows/brainstorming/brain-methods.csv +61 -61
- package/bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -197
- package/bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -122
- package/bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -225
- package/bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -237
- package/bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -209
- package/bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -264
- package/bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +340 -340
- package/bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -303
- package/bmad/core/workflows/brainstorming/template.md +15 -15
- package/bmad/core/workflows/brainstorming/workflow.md +51 -51
- package/bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +139 -139
- package/bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +204 -204
- package/bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +159 -159
- package/bmad/core/workflows/party-mode/workflow.md +206 -206
- package/claude/hooks/file-restriction-hook.py +51 -51
- package/claude/hooks/track-agent.py +67 -67
- package/claude/settings.local.json +76 -76
- package/gemini/commands/BMad/agents/analyst.toml +6 -0
- package/gemini/commands/BMad/agents/architect.toml +6 -0
- package/gemini/commands/BMad/agents/bmad-master.toml +6 -0
- package/gemini/commands/BMad/agents/bmad-orchestrator.toml +6 -0
- package/gemini/commands/BMad/agents/dev.toml +6 -0
- package/gemini/commands/BMad/agents/pm.toml +6 -0
- package/gemini/commands/BMad/agents/po.toml +6 -0
- package/gemini/commands/BMad/agents/qa.toml +6 -0
- package/gemini/commands/BMad/agents/sm.toml +6 -0
- package/gemini/commands/BMad/agents/ux-expert.toml +6 -0
- package/gemini/commands/BMad/tasks/advanced-elicitation.toml +6 -0
- package/gemini/commands/BMad/tasks/apply-qa-fixes.toml +6 -0
- package/gemini/commands/BMad/tasks/brownfield-create-epic.toml +6 -0
- package/gemini/commands/BMad/tasks/brownfield-create-story.toml +6 -0
- package/gemini/commands/BMad/tasks/correct-course.toml +6 -0
- package/gemini/commands/BMad/tasks/create-brownfield-story.toml +6 -0
- package/gemini/commands/BMad/tasks/create-deep-research-prompt.toml +6 -0
- package/gemini/commands/BMad/tasks/create-doc.toml +6 -0
- package/gemini/commands/BMad/tasks/create-next-story.toml +6 -0
- package/gemini/commands/BMad/tasks/document-project.toml +6 -0
- package/gemini/commands/BMad/tasks/execute-checklist.toml +6 -0
- package/gemini/commands/BMad/tasks/facilitate-brainstorming-session.toml +6 -0
- package/gemini/commands/BMad/tasks/generate-ai-frontend-prompt.toml +6 -0
- package/gemini/commands/BMad/tasks/index-docs.toml +6 -0
- package/gemini/commands/BMad/tasks/kb-mode-interaction.toml +6 -0
- package/gemini/commands/BMad/tasks/nfr-assess.toml +6 -0
- package/gemini/commands/BMad/tasks/qa-gate.toml +6 -0
- package/gemini/commands/BMad/tasks/review-story.toml +6 -0
- package/gemini/commands/BMad/tasks/risk-profile.toml +6 -0
- package/gemini/commands/BMad/tasks/shard-doc.toml +6 -0
- package/gemini/commands/BMad/tasks/test-design.toml +6 -0
- package/gemini/commands/BMad/tasks/trace-requirements.toml +6 -0
- package/gemini/commands/BMad/tasks/validate-next-story.toml +6 -0
- package/github/workflows/publish.yml +150 -150
- package/index.js +9 -9
- package/mcp.json +14 -14
- package/package.json +41 -40
- package/resources/images/Siesa_Logosimbolo_Azul.svg +24 -24
- package/resources/images/Siesa_Logosimbolo_Blanco.svg +24 -24
- package/resources/images/Siesa_Simbolo_Azul.svg +14 -14
- package/resources/images/Siesa_Simbolo_Blanco.svg +14 -14
- package/vscode/mcp.json +15 -15
- package/vscode/settings.json +12 -12
|
@@ -1,303 +1,303 @@
|
|
|
1
|
-
# API Request Utility
|
|
2
|
-
|
|
3
|
-
## Principle
|
|
4
|
-
|
|
5
|
-
Use typed HTTP client with built-in schema validation and automatic retry for server errors. The utility handles URL resolution, header management, response parsing, and single-line response validation with proper TypeScript support.
|
|
6
|
-
|
|
7
|
-
## Rationale
|
|
8
|
-
|
|
9
|
-
Vanilla Playwright's request API requires boilerplate for common patterns:
|
|
10
|
-
|
|
11
|
-
- Manual JSON parsing (`await response.json()`)
|
|
12
|
-
- Repetitive status code checking
|
|
13
|
-
- No built-in retry logic for transient failures
|
|
14
|
-
- No schema validation
|
|
15
|
-
- Complex URL construction
|
|
16
|
-
|
|
17
|
-
The `apiRequest` utility provides:
|
|
18
|
-
|
|
19
|
-
- **Automatic JSON parsing**: Response body pre-parsed
|
|
20
|
-
- **Built-in retry**: 5xx errors retry with exponential backoff
|
|
21
|
-
- **Schema validation**: Single-line validation (JSON Schema, Zod, OpenAPI)
|
|
22
|
-
- **URL resolution**: Four-tier strategy (explicit > config > Playwright > direct)
|
|
23
|
-
- **TypeScript generics**: Type-safe response bodies
|
|
24
|
-
|
|
25
|
-
## Pattern Examples
|
|
26
|
-
|
|
27
|
-
### Example 1: Basic API Request
|
|
28
|
-
|
|
29
|
-
**Context**: Making authenticated API requests with automatic retry and type safety.
|
|
30
|
-
|
|
31
|
-
**Implementation**:
|
|
32
|
-
|
|
33
|
-
```typescript
|
|
34
|
-
import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
35
|
-
|
|
36
|
-
test('should fetch user data', async ({ apiRequest }) => {
|
|
37
|
-
const { status, body } = await apiRequest<User>({
|
|
38
|
-
method: 'GET',
|
|
39
|
-
path: '/api/users/123',
|
|
40
|
-
headers: { Authorization: 'Bearer token' },
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
expect(status).toBe(200);
|
|
44
|
-
expect(body.name).toBe('John Doe'); // TypeScript knows body is User
|
|
45
|
-
});
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Key Points**:
|
|
49
|
-
|
|
50
|
-
- Generic type `<User>` provides TypeScript autocomplete for `body`
|
|
51
|
-
- Status and body destructured from response
|
|
52
|
-
- Headers passed as object
|
|
53
|
-
- Automatic retry for 5xx errors (configurable)
|
|
54
|
-
|
|
55
|
-
### Example 2: Schema Validation (Single Line)
|
|
56
|
-
|
|
57
|
-
**Context**: Validate API responses match expected schema with single-line syntax.
|
|
58
|
-
|
|
59
|
-
**Implementation**:
|
|
60
|
-
|
|
61
|
-
```typescript
|
|
62
|
-
import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
63
|
-
|
|
64
|
-
test('should validate response schema', async ({ apiRequest }) => {
|
|
65
|
-
// JSON Schema validation
|
|
66
|
-
const response = await apiRequest({
|
|
67
|
-
method: 'GET',
|
|
68
|
-
path: '/api/users/123',
|
|
69
|
-
validateSchema: {
|
|
70
|
-
type: 'object',
|
|
71
|
-
required: ['id', 'name', 'email'],
|
|
72
|
-
properties: {
|
|
73
|
-
id: { type: 'string' },
|
|
74
|
-
name: { type: 'string' },
|
|
75
|
-
email: { type: 'string', format: 'email' },
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
// Throws if schema validation fails
|
|
80
|
-
|
|
81
|
-
// Zod schema validation
|
|
82
|
-
import { z } from 'zod';
|
|
83
|
-
|
|
84
|
-
const UserSchema = z.object({
|
|
85
|
-
id: z.string(),
|
|
86
|
-
name: z.string(),
|
|
87
|
-
email: z.string().email(),
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
const response = await apiRequest({
|
|
91
|
-
method: 'GET',
|
|
92
|
-
path: '/api/users/123',
|
|
93
|
-
validateSchema: UserSchema,
|
|
94
|
-
});
|
|
95
|
-
// Response body is type-safe AND validated
|
|
96
|
-
});
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**Key Points**:
|
|
100
|
-
|
|
101
|
-
- Single `validateSchema` parameter
|
|
102
|
-
- Supports JSON Schema, Zod, YAML files, OpenAPI specs
|
|
103
|
-
- Throws on validation failure with detailed errors
|
|
104
|
-
- Zero boilerplate validation code
|
|
105
|
-
|
|
106
|
-
### Example 3: POST with Body and Retry Configuration
|
|
107
|
-
|
|
108
|
-
**Context**: Creating resources with custom retry behavior for error testing.
|
|
109
|
-
|
|
110
|
-
**Implementation**:
|
|
111
|
-
|
|
112
|
-
```typescript
|
|
113
|
-
test('should create user', async ({ apiRequest }) => {
|
|
114
|
-
const newUser = {
|
|
115
|
-
name: 'Jane Doe',
|
|
116
|
-
email: 'jane@example.com',
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
const { status, body } = await apiRequest({
|
|
120
|
-
method: 'POST',
|
|
121
|
-
path: '/api/users',
|
|
122
|
-
body: newUser, // Automatically sent as JSON
|
|
123
|
-
headers: { Authorization: 'Bearer token' },
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
expect(status).toBe(201);
|
|
127
|
-
expect(body.id).toBeDefined();
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
// Disable retry for error testing
|
|
131
|
-
test('should handle 500 errors', async ({ apiRequest }) => {
|
|
132
|
-
await expect(
|
|
133
|
-
apiRequest({
|
|
134
|
-
method: 'GET',
|
|
135
|
-
path: '/api/error',
|
|
136
|
-
retryConfig: { maxRetries: 0 }, // Disable retry
|
|
137
|
-
}),
|
|
138
|
-
).rejects.toThrow('Request failed with status 500');
|
|
139
|
-
});
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**Key Points**:
|
|
143
|
-
|
|
144
|
-
- `body` parameter auto-serializes to JSON
|
|
145
|
-
- Default retry: 5xx errors, 3 retries, exponential backoff
|
|
146
|
-
- Disable retry with `retryConfig: { maxRetries: 0 }`
|
|
147
|
-
- Only 5xx errors retry (4xx errors fail immediately)
|
|
148
|
-
|
|
149
|
-
### Example 4: URL Resolution Strategy
|
|
150
|
-
|
|
151
|
-
**Context**: Flexible URL handling for different environments and test contexts.
|
|
152
|
-
|
|
153
|
-
**Implementation**:
|
|
154
|
-
|
|
155
|
-
```typescript
|
|
156
|
-
// Strategy 1: Explicit baseUrl (highest priority)
|
|
157
|
-
await apiRequest({
|
|
158
|
-
method: 'GET',
|
|
159
|
-
path: '/users',
|
|
160
|
-
baseUrl: 'https://api.example.com', // Uses https://api.example.com/users
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
// Strategy 2: Config baseURL (from fixture)
|
|
164
|
-
import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
165
|
-
|
|
166
|
-
test.use({ configBaseUrl: 'https://staging-api.example.com' });
|
|
167
|
-
|
|
168
|
-
test('uses config baseURL', async ({ apiRequest }) => {
|
|
169
|
-
await apiRequest({
|
|
170
|
-
method: 'GET',
|
|
171
|
-
path: '/users', // Uses https://staging-api.example.com/users
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
// Strategy 3: Playwright baseURL (from playwright.config.ts)
|
|
176
|
-
// playwright.config.ts
|
|
177
|
-
export default defineConfig({
|
|
178
|
-
use: {
|
|
179
|
-
baseURL: 'https://api.example.com',
|
|
180
|
-
},
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
test('uses Playwright baseURL', async ({ apiRequest }) => {
|
|
184
|
-
await apiRequest({
|
|
185
|
-
method: 'GET',
|
|
186
|
-
path: '/users', // Uses https://api.example.com/users
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
// Strategy 4: Direct path (full URL)
|
|
191
|
-
await apiRequest({
|
|
192
|
-
method: 'GET',
|
|
193
|
-
path: 'https://api.example.com/users', // Full URL works too
|
|
194
|
-
});
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
**Key Points**:
|
|
198
|
-
|
|
199
|
-
- Four-tier resolution: explicit > config > Playwright > direct
|
|
200
|
-
- Trailing slashes normalized automatically
|
|
201
|
-
- Environment-specific baseUrl easy to configure
|
|
202
|
-
|
|
203
|
-
### Example 5: Integration with Recurse (Polling)
|
|
204
|
-
|
|
205
|
-
**Context**: Waiting for async operations to complete (background jobs, eventual consistency).
|
|
206
|
-
|
|
207
|
-
**Implementation**:
|
|
208
|
-
|
|
209
|
-
```typescript
|
|
210
|
-
import { test } from '@seontechnologies/playwright-utils/fixtures';
|
|
211
|
-
|
|
212
|
-
test('should poll until job completes', async ({ apiRequest, recurse }) => {
|
|
213
|
-
// Create job
|
|
214
|
-
const { body } = await apiRequest({
|
|
215
|
-
method: 'POST',
|
|
216
|
-
path: '/api/jobs',
|
|
217
|
-
body: { type: 'export' },
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
const jobId = body.id;
|
|
221
|
-
|
|
222
|
-
// Poll until ready
|
|
223
|
-
const completedJob = await recurse(
|
|
224
|
-
() => apiRequest({ method: 'GET', path: `/api/jobs/${jobId}` }),
|
|
225
|
-
(response) => response.body.status === 'completed',
|
|
226
|
-
{ timeout: 60000, interval: 2000 },
|
|
227
|
-
);
|
|
228
|
-
|
|
229
|
-
expect(completedJob.body.result).toBeDefined();
|
|
230
|
-
});
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
**Key Points**:
|
|
234
|
-
|
|
235
|
-
- `apiRequest` returns full response object
|
|
236
|
-
- `recurse` polls until predicate returns true
|
|
237
|
-
- Composable utilities work together seamlessly
|
|
238
|
-
|
|
239
|
-
## Comparison with Vanilla Playwright
|
|
240
|
-
|
|
241
|
-
| Vanilla Playwright | playwright-utils apiRequest |
|
|
242
|
-
| ---------------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
243
|
-
| `const resp = await request.get('/api/users')` | `const { status, body } = await apiRequest({ method: 'GET', path: '/api/users' })` |
|
|
244
|
-
| `const body = await resp.json()` | Response already parsed |
|
|
245
|
-
| `expect(resp.ok()).toBeTruthy()` | Status code directly accessible |
|
|
246
|
-
| No retry logic | Auto-retry 5xx errors with backoff |
|
|
247
|
-
| No schema validation | Built-in multi-format validation |
|
|
248
|
-
| Manual error handling | Descriptive error messages |
|
|
249
|
-
|
|
250
|
-
## When to Use
|
|
251
|
-
|
|
252
|
-
**Use apiRequest for:**
|
|
253
|
-
|
|
254
|
-
- ✅ API endpoint testing
|
|
255
|
-
- ✅ Background API calls in UI tests
|
|
256
|
-
- ✅ Schema validation needs
|
|
257
|
-
- ✅ Tests requiring retry logic
|
|
258
|
-
- ✅ Typed API responses
|
|
259
|
-
|
|
260
|
-
**Stick with vanilla Playwright for:**
|
|
261
|
-
|
|
262
|
-
- Simple one-off requests where utility overhead isn't worth it
|
|
263
|
-
- Testing Playwright's native features specifically
|
|
264
|
-
- Legacy tests where migration isn't justified
|
|
265
|
-
|
|
266
|
-
## Related Fragments
|
|
267
|
-
|
|
268
|
-
- `overview.md` - Installation and design principles
|
|
269
|
-
- `auth-session.md` - Authentication token management
|
|
270
|
-
- `recurse.md` - Polling for async operations
|
|
271
|
-
- `fixtures-composition.md` - Combining utilities with mergeTests
|
|
272
|
-
- `log.md` - Logging API requests
|
|
273
|
-
|
|
274
|
-
## Anti-Patterns
|
|
275
|
-
|
|
276
|
-
**❌ Ignoring retry failures:**
|
|
277
|
-
|
|
278
|
-
```typescript
|
|
279
|
-
try {
|
|
280
|
-
await apiRequest({ method: 'GET', path: '/api/unstable' });
|
|
281
|
-
} catch {
|
|
282
|
-
// Silent failure - loses retry information
|
|
283
|
-
}
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
**✅ Let retries happen, handle final failure:**
|
|
287
|
-
|
|
288
|
-
```typescript
|
|
289
|
-
await expect(apiRequest({ method: 'GET', path: '/api/unstable' })).rejects.toThrow(); // Retries happen automatically, then final error caught
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
**❌ Disabling TypeScript benefits:**
|
|
293
|
-
|
|
294
|
-
```typescript
|
|
295
|
-
const response: any = await apiRequest({ method: 'GET', path: '/users' });
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
**✅ Use generic types:**
|
|
299
|
-
|
|
300
|
-
```typescript
|
|
301
|
-
const { body } = await apiRequest<User[]>({ method: 'GET', path: '/users' });
|
|
302
|
-
// body is typed as User[]
|
|
303
|
-
```
|
|
1
|
+
# API Request Utility
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Use typed HTTP client with built-in schema validation and automatic retry for server errors. The utility handles URL resolution, header management, response parsing, and single-line response validation with proper TypeScript support.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
Vanilla Playwright's request API requires boilerplate for common patterns:
|
|
10
|
+
|
|
11
|
+
- Manual JSON parsing (`await response.json()`)
|
|
12
|
+
- Repetitive status code checking
|
|
13
|
+
- No built-in retry logic for transient failures
|
|
14
|
+
- No schema validation
|
|
15
|
+
- Complex URL construction
|
|
16
|
+
|
|
17
|
+
The `apiRequest` utility provides:
|
|
18
|
+
|
|
19
|
+
- **Automatic JSON parsing**: Response body pre-parsed
|
|
20
|
+
- **Built-in retry**: 5xx errors retry with exponential backoff
|
|
21
|
+
- **Schema validation**: Single-line validation (JSON Schema, Zod, OpenAPI)
|
|
22
|
+
- **URL resolution**: Four-tier strategy (explicit > config > Playwright > direct)
|
|
23
|
+
- **TypeScript generics**: Type-safe response bodies
|
|
24
|
+
|
|
25
|
+
## Pattern Examples
|
|
26
|
+
|
|
27
|
+
### Example 1: Basic API Request
|
|
28
|
+
|
|
29
|
+
**Context**: Making authenticated API requests with automatic retry and type safety.
|
|
30
|
+
|
|
31
|
+
**Implementation**:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
35
|
+
|
|
36
|
+
test('should fetch user data', async ({ apiRequest }) => {
|
|
37
|
+
const { status, body } = await apiRequest<User>({
|
|
38
|
+
method: 'GET',
|
|
39
|
+
path: '/api/users/123',
|
|
40
|
+
headers: { Authorization: 'Bearer token' },
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
expect(status).toBe(200);
|
|
44
|
+
expect(body.name).toBe('John Doe'); // TypeScript knows body is User
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Key Points**:
|
|
49
|
+
|
|
50
|
+
- Generic type `<User>` provides TypeScript autocomplete for `body`
|
|
51
|
+
- Status and body destructured from response
|
|
52
|
+
- Headers passed as object
|
|
53
|
+
- Automatic retry for 5xx errors (configurable)
|
|
54
|
+
|
|
55
|
+
### Example 2: Schema Validation (Single Line)
|
|
56
|
+
|
|
57
|
+
**Context**: Validate API responses match expected schema with single-line syntax.
|
|
58
|
+
|
|
59
|
+
**Implementation**:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
63
|
+
|
|
64
|
+
test('should validate response schema', async ({ apiRequest }) => {
|
|
65
|
+
// JSON Schema validation
|
|
66
|
+
const response = await apiRequest({
|
|
67
|
+
method: 'GET',
|
|
68
|
+
path: '/api/users/123',
|
|
69
|
+
validateSchema: {
|
|
70
|
+
type: 'object',
|
|
71
|
+
required: ['id', 'name', 'email'],
|
|
72
|
+
properties: {
|
|
73
|
+
id: { type: 'string' },
|
|
74
|
+
name: { type: 'string' },
|
|
75
|
+
email: { type: 'string', format: 'email' },
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
// Throws if schema validation fails
|
|
80
|
+
|
|
81
|
+
// Zod schema validation
|
|
82
|
+
import { z } from 'zod';
|
|
83
|
+
|
|
84
|
+
const UserSchema = z.object({
|
|
85
|
+
id: z.string(),
|
|
86
|
+
name: z.string(),
|
|
87
|
+
email: z.string().email(),
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const response = await apiRequest({
|
|
91
|
+
method: 'GET',
|
|
92
|
+
path: '/api/users/123',
|
|
93
|
+
validateSchema: UserSchema,
|
|
94
|
+
});
|
|
95
|
+
// Response body is type-safe AND validated
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Key Points**:
|
|
100
|
+
|
|
101
|
+
- Single `validateSchema` parameter
|
|
102
|
+
- Supports JSON Schema, Zod, YAML files, OpenAPI specs
|
|
103
|
+
- Throws on validation failure with detailed errors
|
|
104
|
+
- Zero boilerplate validation code
|
|
105
|
+
|
|
106
|
+
### Example 3: POST with Body and Retry Configuration
|
|
107
|
+
|
|
108
|
+
**Context**: Creating resources with custom retry behavior for error testing.
|
|
109
|
+
|
|
110
|
+
**Implementation**:
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
test('should create user', async ({ apiRequest }) => {
|
|
114
|
+
const newUser = {
|
|
115
|
+
name: 'Jane Doe',
|
|
116
|
+
email: 'jane@example.com',
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const { status, body } = await apiRequest({
|
|
120
|
+
method: 'POST',
|
|
121
|
+
path: '/api/users',
|
|
122
|
+
body: newUser, // Automatically sent as JSON
|
|
123
|
+
headers: { Authorization: 'Bearer token' },
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
expect(status).toBe(201);
|
|
127
|
+
expect(body.id).toBeDefined();
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// Disable retry for error testing
|
|
131
|
+
test('should handle 500 errors', async ({ apiRequest }) => {
|
|
132
|
+
await expect(
|
|
133
|
+
apiRequest({
|
|
134
|
+
method: 'GET',
|
|
135
|
+
path: '/api/error',
|
|
136
|
+
retryConfig: { maxRetries: 0 }, // Disable retry
|
|
137
|
+
}),
|
|
138
|
+
).rejects.toThrow('Request failed with status 500');
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Key Points**:
|
|
143
|
+
|
|
144
|
+
- `body` parameter auto-serializes to JSON
|
|
145
|
+
- Default retry: 5xx errors, 3 retries, exponential backoff
|
|
146
|
+
- Disable retry with `retryConfig: { maxRetries: 0 }`
|
|
147
|
+
- Only 5xx errors retry (4xx errors fail immediately)
|
|
148
|
+
|
|
149
|
+
### Example 4: URL Resolution Strategy
|
|
150
|
+
|
|
151
|
+
**Context**: Flexible URL handling for different environments and test contexts.
|
|
152
|
+
|
|
153
|
+
**Implementation**:
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
// Strategy 1: Explicit baseUrl (highest priority)
|
|
157
|
+
await apiRequest({
|
|
158
|
+
method: 'GET',
|
|
159
|
+
path: '/users',
|
|
160
|
+
baseUrl: 'https://api.example.com', // Uses https://api.example.com/users
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// Strategy 2: Config baseURL (from fixture)
|
|
164
|
+
import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
165
|
+
|
|
166
|
+
test.use({ configBaseUrl: 'https://staging-api.example.com' });
|
|
167
|
+
|
|
168
|
+
test('uses config baseURL', async ({ apiRequest }) => {
|
|
169
|
+
await apiRequest({
|
|
170
|
+
method: 'GET',
|
|
171
|
+
path: '/users', // Uses https://staging-api.example.com/users
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// Strategy 3: Playwright baseURL (from playwright.config.ts)
|
|
176
|
+
// playwright.config.ts
|
|
177
|
+
export default defineConfig({
|
|
178
|
+
use: {
|
|
179
|
+
baseURL: 'https://api.example.com',
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
test('uses Playwright baseURL', async ({ apiRequest }) => {
|
|
184
|
+
await apiRequest({
|
|
185
|
+
method: 'GET',
|
|
186
|
+
path: '/users', // Uses https://api.example.com/users
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
// Strategy 4: Direct path (full URL)
|
|
191
|
+
await apiRequest({
|
|
192
|
+
method: 'GET',
|
|
193
|
+
path: 'https://api.example.com/users', // Full URL works too
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Key Points**:
|
|
198
|
+
|
|
199
|
+
- Four-tier resolution: explicit > config > Playwright > direct
|
|
200
|
+
- Trailing slashes normalized automatically
|
|
201
|
+
- Environment-specific baseUrl easy to configure
|
|
202
|
+
|
|
203
|
+
### Example 5: Integration with Recurse (Polling)
|
|
204
|
+
|
|
205
|
+
**Context**: Waiting for async operations to complete (background jobs, eventual consistency).
|
|
206
|
+
|
|
207
|
+
**Implementation**:
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
import { test } from '@seontechnologies/playwright-utils/fixtures';
|
|
211
|
+
|
|
212
|
+
test('should poll until job completes', async ({ apiRequest, recurse }) => {
|
|
213
|
+
// Create job
|
|
214
|
+
const { body } = await apiRequest({
|
|
215
|
+
method: 'POST',
|
|
216
|
+
path: '/api/jobs',
|
|
217
|
+
body: { type: 'export' },
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
const jobId = body.id;
|
|
221
|
+
|
|
222
|
+
// Poll until ready
|
|
223
|
+
const completedJob = await recurse(
|
|
224
|
+
() => apiRequest({ method: 'GET', path: `/api/jobs/${jobId}` }),
|
|
225
|
+
(response) => response.body.status === 'completed',
|
|
226
|
+
{ timeout: 60000, interval: 2000 },
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
expect(completedJob.body.result).toBeDefined();
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Key Points**:
|
|
234
|
+
|
|
235
|
+
- `apiRequest` returns full response object
|
|
236
|
+
- `recurse` polls until predicate returns true
|
|
237
|
+
- Composable utilities work together seamlessly
|
|
238
|
+
|
|
239
|
+
## Comparison with Vanilla Playwright
|
|
240
|
+
|
|
241
|
+
| Vanilla Playwright | playwright-utils apiRequest |
|
|
242
|
+
| ---------------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
243
|
+
| `const resp = await request.get('/api/users')` | `const { status, body } = await apiRequest({ method: 'GET', path: '/api/users' })` |
|
|
244
|
+
| `const body = await resp.json()` | Response already parsed |
|
|
245
|
+
| `expect(resp.ok()).toBeTruthy()` | Status code directly accessible |
|
|
246
|
+
| No retry logic | Auto-retry 5xx errors with backoff |
|
|
247
|
+
| No schema validation | Built-in multi-format validation |
|
|
248
|
+
| Manual error handling | Descriptive error messages |
|
|
249
|
+
|
|
250
|
+
## When to Use
|
|
251
|
+
|
|
252
|
+
**Use apiRequest for:**
|
|
253
|
+
|
|
254
|
+
- ✅ API endpoint testing
|
|
255
|
+
- ✅ Background API calls in UI tests
|
|
256
|
+
- ✅ Schema validation needs
|
|
257
|
+
- ✅ Tests requiring retry logic
|
|
258
|
+
- ✅ Typed API responses
|
|
259
|
+
|
|
260
|
+
**Stick with vanilla Playwright for:**
|
|
261
|
+
|
|
262
|
+
- Simple one-off requests where utility overhead isn't worth it
|
|
263
|
+
- Testing Playwright's native features specifically
|
|
264
|
+
- Legacy tests where migration isn't justified
|
|
265
|
+
|
|
266
|
+
## Related Fragments
|
|
267
|
+
|
|
268
|
+
- `overview.md` - Installation and design principles
|
|
269
|
+
- `auth-session.md` - Authentication token management
|
|
270
|
+
- `recurse.md` - Polling for async operations
|
|
271
|
+
- `fixtures-composition.md` - Combining utilities with mergeTests
|
|
272
|
+
- `log.md` - Logging API requests
|
|
273
|
+
|
|
274
|
+
## Anti-Patterns
|
|
275
|
+
|
|
276
|
+
**❌ Ignoring retry failures:**
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
try {
|
|
280
|
+
await apiRequest({ method: 'GET', path: '/api/unstable' });
|
|
281
|
+
} catch {
|
|
282
|
+
// Silent failure - loses retry information
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**✅ Let retries happen, handle final failure:**
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
await expect(apiRequest({ method: 'GET', path: '/api/unstable' })).rejects.toThrow(); // Retries happen automatically, then final error caught
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**❌ Disabling TypeScript benefits:**
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
const response: any = await apiRequest({ method: 'GET', path: '/users' });
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
**✅ Use generic types:**
|
|
299
|
+
|
|
300
|
+
```typescript
|
|
301
|
+
const { body } = await apiRequest<User[]>({ method: 'GET', path: '/users' });
|
|
302
|
+
// body is typed as User[]
|
|
303
|
+
```
|