ma-agents 3.5.0 → 3.5.2
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 +20 -10
- package/_bmad-output/implementation-artifacts/16-4-validation-report.md +79 -0
- package/_bmad-output/implementation-artifacts/19-1-knowledge-graph-core-library.md +239 -0
- package/_bmad-output/implementation-artifacts/19-2-graph-emission-create-prd.md +171 -0
- package/_bmad-output/implementation-artifacts/19-3-graph-emission-create-architecture-epics.md +179 -0
- package/_bmad-output/implementation-artifacts/19-4-graph-emission-create-story-remaining.md +190 -0
- package/_bmad-output/implementation-artifacts/19-5-open-graph-skill.md +213 -0
- package/_bmad-output/implementation-artifacts/19-6-interactive-visualization-renderer.md +259 -0
- package/_bmad-output/implementation-artifacts/19-7-llm-writability-validation-tests.md +280 -0
- package/_bmad-output/implementation-artifacts/sprint-status.yaml +31 -18
- package/_bmad-output/planning-artifacts/architecture.md +354 -2
- package/_bmad-output/planning-artifacts/epics.md +556 -8
- package/_bmad-output/planning-artifacts/prd.md +92 -10
- package/_bmad-output/planning-artifacts/validation-report-prd-2026-04-07.md +330 -0
- package/lib/bmad-cache/bmb/.claude-plugin/marketplace.json +39 -4
- package/lib/bmad-cache/bmb/README.md +39 -27
- package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/logs/HEAD +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/logs/refs/heads/main +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/logs/refs/remotes/origin/HEAD +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-4b395d030ca386fc5748f1b670dcf8c0ef41c94c.idx +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-4b395d030ca386fc5748f1b670dcf8c0ef41c94c.pack +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-4b395d030ca386fc5748f1b670dcf8c0ef41c94c.rev +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/bmb/package.json +1 -9
- package/lib/bmad-cache/bmb/samples/bmad-agent-code-coach/scripts/init-sanctum.py +288 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-creative-muse/scripts/init-sanctum.py +274 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/assets/module-help.csv +9 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/assets/module.yaml +8 -0
- package/lib/bmad-cache/bmb/{skills/bmad-builder-setup → samples/bmad-agent-dream-weaver}/scripts/merge-help-csv.py +3 -5
- package/lib/bmad-cache/bmb/samples/bmad-agent-sentinel/scripts/init-sanctum.py +285 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-sentinel/scripts/tests/test-init-sanctum.py +174 -0
- package/lib/bmad-cache/bmb/samples/sample-module-setup/assets/module-help.csv +16 -0
- package/lib/bmad-cache/bmb/samples/sample-module-setup/assets/module.yaml +13 -0
- package/lib/bmad-cache/bmb/samples/sample-module-setup/scripts/merge-config.py +408 -0
- package/lib/bmad-cache/bmb/samples/sample-module-setup/scripts/merge-help-csv.py +218 -0
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/init-sanctum-template.py +277 -0
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/references/sample-init-sanctum.py +274 -0
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-execution-deps.py +4 -4
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-prompt-metrics.py +22 -0
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-sanctum-architecture.py +385 -0
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-structure-capabilities.py +64 -27
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/process-template.py +190 -0
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/scan-path-standards.py +17 -32
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/scan-scripts.py +5 -3
- package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/assets/module-help.csv +10 -0
- package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/cleanup-legacy.py +259 -0
- package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/merge-config.py +408 -0
- package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/merge-help-csv.py +218 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/assets/module-help.csv +1 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/assets/module.yaml +6 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/cleanup-legacy.py +259 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/merge-config.py +408 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/merge-help-csv.py +218 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/standalone-module-template/merge-config.py +408 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/standalone-module-template/merge-help-csv.py +218 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/scaffold-setup-skill.py +124 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/scaffold-standalone-module.py +190 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-scaffold-setup-skill.py +223 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-scaffold-standalone-module.py +266 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-validate-module.py +314 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/validate-module.py +293 -0
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/generate-convert-report.py +406 -0
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/prepass-workflow-integrity.py +1 -6
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/scan-path-standards.py +14 -16
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/tests/test_generate_convert_report.py +243 -0
- package/lib/bmad-cache/bmb/skills/module-help.csv +10 -5
- package/lib/bmad-cache/bmb/tools/validate-file-refs.mjs +1 -1
- package/lib/bmad-cache/bmb/website/astro.config.mjs +10 -6
- package/lib/bmad-cache/bmb/website/src/components/Banner.astro +6 -5
- package/lib/bmad-cache/bmb/website/src/styles/custom.css +60 -42
- package/lib/bmad-cache/cache-manifest.json +11 -11
- package/lib/bmad-cache/cis/README.md +9 -0
- package/lib/bmad-cache/cis/_git_preserved/index +0 -0
- package/lib/bmad-cache/cis/_git_preserved/logs/HEAD +1 -1
- package/lib/bmad-cache/cis/_git_preserved/logs/refs/heads/main +1 -1
- package/lib/bmad-cache/cis/_git_preserved/logs/refs/remotes/origin/HEAD +1 -1
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.idx +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/{pack-9d60aae6b09bbea0d0c5e79fdbe96e8f66de84e6.pack → pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.pack} +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.rev +0 -0
- package/lib/bmad-cache/cis/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/cis/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/cis/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/cis/src/module-help.csv +1 -0
- package/lib/bmad-cache/cis/website/astro.config.mjs +14 -6
- package/lib/bmad-cache/cis/website/src/components/Banner.astro +26 -11
- package/lib/bmad-cache/cis/website/src/styles/custom.css +60 -41
- package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +1 -1
- package/lib/bmad-cache/gds/README.md +9 -0
- package/lib/bmad-cache/gds/_git_preserved/index +0 -0
- package/lib/bmad-cache/gds/_git_preserved/logs/HEAD +1 -1
- package/lib/bmad-cache/gds/_git_preserved/logs/refs/heads/main +1 -1
- package/lib/bmad-cache/gds/_git_preserved/logs/refs/remotes/origin/HEAD +1 -1
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.idx +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/{pack-8099a88fca0ad946a573316a00887a2921ca1712.pack → pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.pack} +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.rev +0 -0
- package/lib/bmad-cache/gds/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/gds/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/gds/package.json +1 -1
- package/lib/bmad-cache/gds/src/module-help.csv +1 -0
- package/lib/bmad-cache/gds/website/astro.config.mjs +14 -6
- package/lib/bmad-cache/gds/website/src/components/Banner.astro +26 -11
- package/lib/bmad-cache/gds/website/src/styles/custom.css +60 -41
- package/lib/bmad-cache/tea/README.md +14 -0
- package/lib/bmad-cache/tea/_git_preserved/index +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-c79805bb3fee27fa6d8c612a971af7fc86fc80e1.idx +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/{pack-d243f64f83b36190434d68872a69a40870c53030.pack → pack-c79805bb3fee27fa6d8c612a971af7fc86fc80e1.pack} +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-c79805bb3fee27fa6d8c612a971af7fc86fc80e1.rev +0 -0
- package/lib/bmad-cache/tea/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/tea/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/tea/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/tea/docs/index.md +4 -14
- package/lib/bmad-cache/tea/package-lock.json +2 -2
- package/lib/bmad-cache/tea/package.json +1 -1
- package/lib/bmad-cache/tea/src/agents/bmad-tea/SKILL.md +6 -6
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/playwright-cli.md +119 -4
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/playwright-config.md +8 -4
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/visual-debugging.md +34 -31
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/module-help.csv +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/atdd-checklist-template.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/instructions.md +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/playwright-cli.md +280 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/playwright-config.md +734 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/visual-debugging.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01-preflight-and-context.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/instructions.md +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/playwright-cli.md +280 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/playwright-config.md +734 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/visual-debugging.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01-preflight-and-context.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03c-aggregate.md +8 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/harness-pipeline-template.yaml +7 -6
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/instructions.md +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/playwright-cli.md +280 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/playwright-config.md +734 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/visual-debugging.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-02-generate-pipeline.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-03-configure-quality-gates.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/checklist.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/instructions.md +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/playwright-cli.md +280 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/playwright-config.md +734 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/visual-debugging.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/playwright-cli.md +280 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/playwright-config.md +734 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/visual-debugging.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/instructions.md +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/playwright-cli.md +280 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/playwright-config.md +734 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/visual-debugging.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/checklist.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/playwright-cli.md +280 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/playwright-config.md +734 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/visual-debugging.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01-load-context.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-02-discover-tests.md +7 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03a-subagent-determinism.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/playwright-cli.md +280 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/playwright-config.md +734 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/visual-debugging.md +527 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01-load-context.md +1 -1
- package/lib/bmad-cache/tea/website/astro.config.mjs +10 -6
- package/lib/bmad-cache/tea/website/src/components/Banner.astro +28 -13
- package/lib/bmad-cache/tea/website/src/components/Header.astro +1 -1
- package/lib/bmad-cache/tea/website/src/components/MobileMenuFooter.astro +1 -1
- package/lib/bmad-cache/tea/website/src/styles/custom.css +60 -41
- package/lib/bmad-cache/wds/README.md +13 -0
- package/lib/bmad-cache/wds/_git_preserved/index +0 -0
- package/lib/bmad-cache/wds/_git_preserved/logs/HEAD +1 -1
- package/lib/bmad-cache/wds/_git_preserved/logs/refs/heads/main +1 -1
- package/lib/bmad-cache/wds/_git_preserved/logs/refs/remotes/origin/HEAD +1 -1
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.idx +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/{pack-92d32f26e3a97a0786dcea5cb2c24bf90384521c.pack → pack-96877c1c09123cccb1f91c1412184b11d2b492ad.pack} +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.rev +0 -0
- package/lib/bmad-cache/wds/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/wds/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/wds/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/wds/src/module-help.csv +3 -2
- package/lib/bmad-cache/wds/src/module.yaml +1 -4
- package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-1-project-brief/templates/platform-requirements.template.yaml +69 -0
- package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-7-design-system/templates/catalog.template.html +363 -0
- package/lib/bmad-customize/bmm-qa.customize.yaml +19 -1
- package/lib/bmad-extension/module-help.csv +4 -1
- package/lib/bmad-extension/skills/bmad-ma-agent-sqa/SKILL.md +58 -0
- package/lib/bmad-extension/skills/bmad-ma-agent-sqa/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-extension/skills/sqa-audit/.gitkeep +0 -0
- package/lib/bmad-extension/skills/sqa-audit/SKILL.md +279 -0
- package/lib/bmad-extension/skills/sqa-audit/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/sqa-ieee12207/.gitkeep +0 -0
- package/lib/bmad-extension/skills/sqa-ieee12207/SKILL.md +374 -0
- package/lib/bmad-extension/skills/sqa-ieee12207/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/sqa-requirements-quality/.gitkeep +0 -0
- package/lib/bmad-extension/skills/sqa-requirements-quality/SKILL.md +244 -0
- package/lib/bmad-extension/skills/sqa-requirements-quality/bmad-skill-manifest.yaml +3 -0
- package/package.json +1 -1
- package/test/extension-module-restructure.test.js +29 -6
- package/test/migration-validation.test.js +20 -16
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-0de89e0854d5b2b3b3b0c1ee56eee73a739f15e7.idx +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-0de89e0854d5b2b3b3b0c1ee56eee73a739f15e7.pack +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-0de89e0854d5b2b3b3b0c1ee56eee73a739f15e7.rev +0 -0
- package/lib/bmad-cache/bmb/skills/bmad-builder-setup/assets/module-help.csv +0 -6
- package/lib/bmad-cache/bmb/skills/bmad-builder-setup/scripts/tests/test-cleanup-legacy.py +0 -429
- package/lib/bmad-cache/bmb/skills/bmad-builder-setup/scripts/tests/test-merge-config.py +0 -644
- package/lib/bmad-cache/bmb/skills/bmad-builder-setup/scripts/tests/test-merge-help-csv.py +0 -237
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-9d60aae6b09bbea0d0c5e79fdbe96e8f66de84e6.idx +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-9d60aae6b09bbea0d0c5e79fdbe96e8f66de84e6.rev +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-8099a88fca0ad946a573316a00887a2921ca1712.idx +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-8099a88fca0ad946a573316a00887a2921ca1712.rev +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-d243f64f83b36190434d68872a69a40870c53030.idx +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-d243f64f83b36190434d68872a69a40870c53030.rev +0 -0
- package/lib/bmad-cache/tea/_git_preserved/refs/tags/v1.7.3 +0 -1
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-92d32f26e3a97a0786dcea5cb2c24bf90384521c.idx +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-92d32f26e3a97a0786dcea5cb2c24bf90384521c.rev +0 -0
- package/lib/bmad-extension/skills/bmad-ma-agent-mil498/SKILL.md +0 -54
- package/lib/bmad-extension/skills/bmad-ma-agent-mil498/bmad-skill-manifest.yaml +0 -11
- /package/lib/bmad-cache/bmb/{skills/bmad-builder-setup → samples/bmad-agent-dream-weaver}/scripts/merge-config.py +0 -0
- /package/lib/bmad-cache/bmb/{skills/bmad-builder-setup → samples/sample-module-setup}/scripts/cleanup-legacy.py +0 -0
- /package/lib/bmad-cache/bmb/skills/{bmad-builder-setup → bmad-bmb-setup}/assets/module.yaml +0 -0
- /package/lib/bmad-extension/skills/{bmad-ma-agent-mil498 → bmad-ma-agent-sqa}/.gitkeep +0 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Pact.js Utils Overview
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Use production-ready utilities from `@seontechnologies/pactjs-utils` to eliminate boilerplate in consumer-driven contract testing. The library wraps `@pact-foundation/pact` with type-safe helpers for provider state creation, PactV4 JSON interaction builders, verifier configuration, and request filter injection — working equally well for HTTP and message (async/Kafka) contracts.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
### Problems with raw @pact-foundation/pact
|
|
10
|
+
|
|
11
|
+
- **JsonMap casting**: Provider state parameters require `JsonMap` type — manually casting every value is error-prone and verbose
|
|
12
|
+
- **Repeated builder lambdas**: PactV4 interactions often repeat inline callbacks with `builder.query(...)`, `builder.headers(...)`, and `builder.jsonBody(...)`
|
|
13
|
+
- **Verifier configuration sprawl**: `VerifierOptions` requires 30+ lines of scattered configuration (broker URL, selectors, state handlers, request filters, version tags)
|
|
14
|
+
- **Environment variable juggling**: Different env vars for local vs remote flows, breaking change coordination, payload URL matching
|
|
15
|
+
- **Express middleware types**: Request filter requires Express types that aren't re-exported from Pact
|
|
16
|
+
- **Bearer prefix bugs**: Easy to double-prefix tokens as `Bearer Bearer ...` in request filters
|
|
17
|
+
- **CI version tagging**: Manual logic to extract branch/tag info from CI environment
|
|
18
|
+
|
|
19
|
+
### Solutions from pactjs-utils
|
|
20
|
+
|
|
21
|
+
- **`createProviderState`**: One-call tuple builder for `.given()` — handles all JsonMap conversion automatically
|
|
22
|
+
- **`toJsonMap`**: Explicit type coercion (null→"null", Date→ISO string, nested objects flattened)
|
|
23
|
+
- **`setJsonContent`**: Curried callback helper for PactV4 `.withRequest(...)` / `.willRespondWith(...)` builders (query/headers/body)
|
|
24
|
+
- **`setJsonBody`**: Body-only shorthand alias of `setJsonContent({ body })`
|
|
25
|
+
- **`buildVerifierOptions`**: Single function assembles complete VerifierOptions from minimal inputs — handles local/remote/BDCT flows
|
|
26
|
+
- **`buildMessageVerifierOptions`**: Same as above but for message/Kafka provider verification
|
|
27
|
+
- **`handlePactBrokerUrlAndSelectors`**: Resolves broker URL and consumer version selectors from env vars with breaking change awareness
|
|
28
|
+
- **`getProviderVersionTags`**: CI-aware version tagging (extracts branch/tag from GitHub Actions, GitLab CI, etc.)
|
|
29
|
+
- **`createRequestFilter`**: Pluggable token generator pattern — prevents double-Bearer bugs by contract
|
|
30
|
+
- **`noOpRequestFilter`**: Pass-through for providers that don't require auth injection
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -D @seontechnologies/pactjs-utils
|
|
36
|
+
|
|
37
|
+
# Peer dependency
|
|
38
|
+
npm install -D @pact-foundation/pact
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Requirements**: `@pact-foundation/pact` >= 16.2.0, Node.js >= 18
|
|
42
|
+
|
|
43
|
+
## Available Utilities
|
|
44
|
+
|
|
45
|
+
| Category | Function | Description | Use Case |
|
|
46
|
+
| ----------------- | --------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------- |
|
|
47
|
+
| Consumer Helpers | `createProviderState` | Builds `[stateName, JsonMap]` tuple from typed input | Consumer tests: `.given(...createProviderState(input))` |
|
|
48
|
+
| Consumer Helpers | `toJsonMap` | Converts any object to Pact-compatible `JsonMap` | Explicit type coercion for provider state params |
|
|
49
|
+
| Consumer Helpers | `setJsonContent` | Curried request/response JSON callback helper | PactV4 `.withRequest(...)` and `.willRespondWith(...)` builders |
|
|
50
|
+
| Consumer Helpers | `setJsonBody` | Body-only alias of `setJsonContent` | Body-only `.willRespondWith(...)` responses |
|
|
51
|
+
| Provider Verifier | `buildVerifierOptions` | Assembles complete HTTP `VerifierOptions` | Provider verification: `new Verifier(buildVerifierOptions(...))` |
|
|
52
|
+
| Provider Verifier | `buildMessageVerifierOptions` | Assembles message `VerifierOptions` | Kafka/async provider verification |
|
|
53
|
+
| Provider Verifier | `handlePactBrokerUrlAndSelectors` | Resolves broker URL + selectors from env vars | Env-aware broker configuration |
|
|
54
|
+
| Provider Verifier | `getProviderVersionTags` | CI-aware version tag extraction | Provider version tagging in CI |
|
|
55
|
+
| Request Filter | `createRequestFilter` | Express middleware with pluggable token generator | Auth injection for provider verification |
|
|
56
|
+
| Request Filter | `noOpRequestFilter` | Pass-through filter (no-op) | Providers without auth requirements |
|
|
57
|
+
|
|
58
|
+
## Decision Tree: Which Flow?
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Is this a monorepo (consumer + provider in same repo)?
|
|
62
|
+
├── YES → Local Flow
|
|
63
|
+
│ - Consumer generates pact files to ./pacts/
|
|
64
|
+
│ - Provider reads pact files from ./pacts/ (no broker needed)
|
|
65
|
+
│ - Use buildVerifierOptions with pactUrls option
|
|
66
|
+
│
|
|
67
|
+
└── NO → Do you have a Pact Broker / PactFlow?
|
|
68
|
+
├── YES → Remote (CDCT) Flow
|
|
69
|
+
│ - Consumer publishes pacts to broker
|
|
70
|
+
│ - Provider verifies from broker
|
|
71
|
+
│ - Use buildVerifierOptions with broker config
|
|
72
|
+
│ - Set PACT_BROKER_BASE_URL + PACT_BROKER_TOKEN
|
|
73
|
+
│
|
|
74
|
+
└── Do you have an OpenAPI spec?
|
|
75
|
+
├── YES → BDCT Flow (PactFlow only)
|
|
76
|
+
│ - Provider publishes OpenAPI spec to PactFlow
|
|
77
|
+
│ - PactFlow cross-validates consumer pacts against spec
|
|
78
|
+
│ - No provider verification test needed
|
|
79
|
+
│
|
|
80
|
+
└── NO → Start with Local Flow, migrate to Remote later
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Design Philosophy
|
|
84
|
+
|
|
85
|
+
1. **One-call setup**: Each utility does one thing completely — no multi-step assembly required
|
|
86
|
+
2. **Environment-aware**: Utilities read env vars for CI/CD integration without manual wiring
|
|
87
|
+
3. **Type-safe**: Full TypeScript types for all inputs and outputs, exported for consumer use
|
|
88
|
+
4. **Fail-safe defaults**: Sensible defaults that work locally; env vars override for CI
|
|
89
|
+
5. **Composable**: Utilities work independently — use only what you need
|
|
90
|
+
|
|
91
|
+
## Pattern Examples
|
|
92
|
+
|
|
93
|
+
### Example 1: Minimal Consumer Test
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import { PactV3 } from '@pact-foundation/pact';
|
|
97
|
+
import { createProviderState } from '@seontechnologies/pactjs-utils';
|
|
98
|
+
|
|
99
|
+
const provider = new PactV3({
|
|
100
|
+
consumer: 'my-frontend',
|
|
101
|
+
provider: 'my-api',
|
|
102
|
+
dir: './pacts',
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('should get user by id', async () => {
|
|
106
|
+
await provider
|
|
107
|
+
.given(...createProviderState({ name: 'user exists', params: { id: 1 } }))
|
|
108
|
+
.uponReceiving('a request for user 1')
|
|
109
|
+
.withRequest({ method: 'GET', path: '/users/1' })
|
|
110
|
+
.willRespondWith({ status: 200, body: { id: 1, name: 'John' } })
|
|
111
|
+
.executeTest(async (mockServer) => {
|
|
112
|
+
const res = await fetch(`${mockServer.url}/users/1`);
|
|
113
|
+
expect(res.status).toBe(200);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Example 2: Minimal Provider Verification
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
import { Verifier } from '@pact-foundation/pact';
|
|
122
|
+
import { buildVerifierOptions, createRequestFilter } from '@seontechnologies/pactjs-utils';
|
|
123
|
+
|
|
124
|
+
const opts = buildVerifierOptions({
|
|
125
|
+
provider: 'my-api',
|
|
126
|
+
port: '3001',
|
|
127
|
+
includeMainAndDeployed: true,
|
|
128
|
+
stateHandlers: {
|
|
129
|
+
'user exists': async (params) => {
|
|
130
|
+
await db.seed({ users: [{ id: params?.id }] });
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
requestFilter: createRequestFilter({
|
|
134
|
+
tokenGenerator: () => 'test-token-123',
|
|
135
|
+
}),
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
await new Verifier(opts).verifyProvider();
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Key Points
|
|
142
|
+
|
|
143
|
+
- **Import path**: Always use `@seontechnologies/pactjs-utils` (no subpath exports)
|
|
144
|
+
- **Peer dependency**: `@pact-foundation/pact` must be installed separately
|
|
145
|
+
- **Local flow**: No broker needed — set `pactUrls` in verifier options pointing to local pact files
|
|
146
|
+
- **Remote flow**: Set `PACT_BROKER_BASE_URL` and `PACT_BROKER_TOKEN` env vars
|
|
147
|
+
- **Breaking changes**: Set `includeMainAndDeployed: false` when coordinating breaking changes (verifies only matchingBranch)
|
|
148
|
+
- **Builder helpers**: Use `setJsonContent` when you need query/headers/body together; use `setJsonBody` for body-only callbacks
|
|
149
|
+
- **Type exports**: Library exports `StateHandlers`, `RequestFilter`, `JsonMap`, `JsonContentInput`, `ConsumerVersionSelector` types
|
|
150
|
+
|
|
151
|
+
## Related Fragments
|
|
152
|
+
|
|
153
|
+
- `pactjs-utils-consumer-helpers.md` — detailed createProviderState, toJsonMap, setJsonContent, and setJsonBody usage
|
|
154
|
+
- `pactjs-utils-provider-verifier.md` — detailed buildVerifierOptions and broker configuration
|
|
155
|
+
- `pactjs-utils-request-filter.md` — detailed createRequestFilter and auth patterns
|
|
156
|
+
- `contract-testing.md` — foundational contract testing patterns (raw Pact.js approach)
|
|
157
|
+
- `test-levels-framework.md` — where contract tests fit in the testing pyramid
|
|
158
|
+
|
|
159
|
+
## Anti-Patterns
|
|
160
|
+
|
|
161
|
+
### Wrong: Manual VerifierOptions assembly when pactjs-utils is available
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
// ❌ Don't assemble VerifierOptions manually
|
|
165
|
+
const opts: VerifierOptions = {
|
|
166
|
+
provider: 'my-api',
|
|
167
|
+
providerBaseUrl: 'http://localhost:3001',
|
|
168
|
+
pactBrokerUrl: process.env.PACT_BROKER_BASE_URL,
|
|
169
|
+
pactBrokerToken: process.env.PACT_BROKER_TOKEN,
|
|
170
|
+
publishVerificationResult: process.env.CI === 'true',
|
|
171
|
+
providerVersion: process.env.GIT_SHA || 'dev',
|
|
172
|
+
consumerVersionSelectors: [{ mainBranch: true }, { deployedOrReleased: true }],
|
|
173
|
+
stateHandlers: {
|
|
174
|
+
/* ... */
|
|
175
|
+
},
|
|
176
|
+
requestFilter: (req, res, next) => {
|
|
177
|
+
/* ... */
|
|
178
|
+
},
|
|
179
|
+
// ... 20 more lines
|
|
180
|
+
};
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Right: Use buildVerifierOptions
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// ✅ Single call handles all configuration
|
|
187
|
+
const opts = buildVerifierOptions({
|
|
188
|
+
provider: 'my-api',
|
|
189
|
+
port: '3001',
|
|
190
|
+
includeMainAndDeployed: true,
|
|
191
|
+
stateHandlers: {
|
|
192
|
+
/* ... */
|
|
193
|
+
},
|
|
194
|
+
requestFilter: createRequestFilter({ tokenGenerator: () => 'token' }),
|
|
195
|
+
});
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Wrong: Importing raw Pact types for JsonMap conversion
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
// ❌ Manual JsonMap casting
|
|
202
|
+
import type { JsonMap } from '@pact-foundation/pact';
|
|
203
|
+
|
|
204
|
+
provider.given('user exists', { id: 1 as unknown as JsonMap['id'] });
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Right: Use createProviderState
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
// ✅ Automatic type conversion
|
|
211
|
+
import { createProviderState } from '@seontechnologies/pactjs-utils';
|
|
212
|
+
|
|
213
|
+
provider.given(...createProviderState({ name: 'user exists', params: { id: 1 } }));
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
_Source: @seontechnologies/pactjs-utils library, pactjs-utils README, pact-js-example-provider workflows_
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# Pact.js Utils Provider Verifier
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Use `buildVerifierOptions`, `buildMessageVerifierOptions`, `handlePactBrokerUrlAndSelectors`, and `getProviderVersionTags` from `@seontechnologies/pactjs-utils` to assemble complete provider verification configuration in a single call. These utilities handle local/remote flow detection, broker URL resolution, consumer version selector strategy, and CI-aware version tagging. The caller controls breaking change behavior via the required `includeMainAndDeployed` parameter.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
### Problems with manual VerifierOptions
|
|
10
|
+
|
|
11
|
+
- **30+ lines of scattered config**: Assembling `VerifierOptions` manually requires broker URL, token, selectors, state handlers, request filters, version info, publish flags — all in one object
|
|
12
|
+
- **Environment variable logic**: Different env vars for local vs remote, CI vs local dev, breaking change vs normal flow
|
|
13
|
+
- **Consumer version selector complexity**: Choosing between `mainBranch`, `deployedOrReleased`, `matchingBranch`, and `includeMainAndDeployed` requires understanding Pact Broker semantics
|
|
14
|
+
- **Breaking change coordination**: When a provider intentionally breaks a contract, manual selector switching is error-prone
|
|
15
|
+
- **Cross-execution protection**: `PACT_PAYLOAD_URL` webhook payloads need special handling to verify only the triggering pact
|
|
16
|
+
|
|
17
|
+
### Solutions
|
|
18
|
+
|
|
19
|
+
- **`buildVerifierOptions`**: Single function that reads env vars, selects the right flow, and returns complete `VerifierOptions`
|
|
20
|
+
- **`buildMessageVerifierOptions`**: Same as above for message/Kafka provider verification
|
|
21
|
+
- **`handlePactBrokerUrlAndSelectors`**: Pure function for broker URL + selector resolution (used internally, also exported for advanced use)
|
|
22
|
+
- **`getProviderVersionTags`**: Extracts CI branch/tag info from environment for provider version tagging
|
|
23
|
+
|
|
24
|
+
## Pattern Examples
|
|
25
|
+
|
|
26
|
+
### Example 1: HTTP Provider Verification (Remote Flow)
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { Verifier } from '@pact-foundation/pact';
|
|
30
|
+
import { buildVerifierOptions, createRequestFilter } from '@seontechnologies/pactjs-utils';
|
|
31
|
+
import type { StateHandlers } from '@seontechnologies/pactjs-utils';
|
|
32
|
+
|
|
33
|
+
const stateHandlers: StateHandlers = {
|
|
34
|
+
'movie with id 1 exists': {
|
|
35
|
+
setup: async (params) => {
|
|
36
|
+
await db.seed({ movies: [{ id: params?.id ?? 1, name: 'Inception' }] });
|
|
37
|
+
},
|
|
38
|
+
teardown: async () => {
|
|
39
|
+
await db.clean('movies');
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
'no movies exist': async () => {
|
|
43
|
+
await db.clean('movies');
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// buildVerifierOptions reads these env vars automatically:
|
|
48
|
+
// - PACT_BROKER_BASE_URL (broker URL)
|
|
49
|
+
// - PACT_BROKER_TOKEN (broker auth)
|
|
50
|
+
// - PACT_PAYLOAD_URL (webhook trigger — cross-execution protection)
|
|
51
|
+
// - PACT_BREAKING_CHANGE (if "true", uses includeMainAndDeployed selectors)
|
|
52
|
+
// - GITHUB_SHA (provider version)
|
|
53
|
+
// - CI (publish verification results if "true")
|
|
54
|
+
|
|
55
|
+
const opts = buildVerifierOptions({
|
|
56
|
+
provider: 'SampleMoviesAPI',
|
|
57
|
+
port: '3001',
|
|
58
|
+
includeMainAndDeployed: process.env.PACT_BREAKING_CHANGE !== 'true',
|
|
59
|
+
stateHandlers,
|
|
60
|
+
requestFilter: createRequestFilter({
|
|
61
|
+
tokenGenerator: () => process.env.TEST_AUTH_TOKEN ?? 'test-token',
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
await new Verifier(opts).verifyProvider();
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Key Points**:
|
|
69
|
+
|
|
70
|
+
- Set `PACT_BROKER_BASE_URL` and `PACT_BROKER_TOKEN` as env vars — `buildVerifierOptions` reads them automatically
|
|
71
|
+
- `port` is a string (e.g., `'3001'`) — the function builds `providerBaseUrl: http://localhost:${port}` internally
|
|
72
|
+
- `includeMainAndDeployed` is **required** — set `true` for normal flow, `false` for breaking changes
|
|
73
|
+
- State handlers support both simple functions and `{ setup, teardown }` objects
|
|
74
|
+
- `params` in state handlers correspond to the `JsonMap` from consumer's `createProviderState`
|
|
75
|
+
- Verification results are published by default (`publishVerificationResult` defaults to `true`)
|
|
76
|
+
|
|
77
|
+
### Example 2: Local Flow (Monorepo, No Broker)
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import { Verifier } from '@pact-foundation/pact';
|
|
81
|
+
import { buildVerifierOptions } from '@seontechnologies/pactjs-utils';
|
|
82
|
+
|
|
83
|
+
// When PACT_BROKER_BASE_URL is NOT set, buildVerifierOptions
|
|
84
|
+
// falls back to local pact file verification
|
|
85
|
+
const opts = buildVerifierOptions({
|
|
86
|
+
provider: 'SampleMoviesAPI',
|
|
87
|
+
port: '3001',
|
|
88
|
+
includeMainAndDeployed: true,
|
|
89
|
+
// Specify local pact files directly — skips broker entirely
|
|
90
|
+
pactUrls: ['./pacts/movie-web-SampleMoviesAPI.json'],
|
|
91
|
+
stateHandlers: {
|
|
92
|
+
'movie exists': async (params) => {
|
|
93
|
+
await db.seed({ movies: [{ id: params?.id }] });
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
await new Verifier(opts).verifyProvider();
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Example 3: Message Provider Verification (Kafka/Async)
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { Verifier } from '@pact-foundation/pact';
|
|
105
|
+
import { buildMessageVerifierOptions } from '@seontechnologies/pactjs-utils';
|
|
106
|
+
|
|
107
|
+
const opts = buildMessageVerifierOptions({
|
|
108
|
+
provider: 'OrderEventsProducer',
|
|
109
|
+
includeMainAndDeployed: process.env.PACT_BREAKING_CHANGE !== 'true',
|
|
110
|
+
// Message handlers return the message content that the provider would produce
|
|
111
|
+
messageProviders: {
|
|
112
|
+
'an order created event': async () => ({
|
|
113
|
+
orderId: 'order-123',
|
|
114
|
+
userId: 'user-456',
|
|
115
|
+
items: [{ productId: 'prod-789', quantity: 2 }],
|
|
116
|
+
createdAt: new Date().toISOString(),
|
|
117
|
+
}),
|
|
118
|
+
'an order cancelled event': async () => ({
|
|
119
|
+
orderId: 'order-123',
|
|
120
|
+
reason: 'customer_request',
|
|
121
|
+
cancelledAt: new Date().toISOString(),
|
|
122
|
+
}),
|
|
123
|
+
},
|
|
124
|
+
stateHandlers: {
|
|
125
|
+
'order exists': async (params) => {
|
|
126
|
+
await db.seed({ orders: [{ id: params?.orderId }] });
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
await new Verifier(opts).verifyProvider();
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Key Points**:
|
|
135
|
+
|
|
136
|
+
- `buildMessageVerifierOptions` adds `messageProviders` to the verifier config
|
|
137
|
+
- Each message provider function returns the expected message payload
|
|
138
|
+
- State handlers work the same as HTTP verification
|
|
139
|
+
- Broker integration works identically (same env vars)
|
|
140
|
+
|
|
141
|
+
### Example 4: Breaking Change Coordination
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
// When a provider intentionally introduces a breaking change:
|
|
145
|
+
//
|
|
146
|
+
// 1. Set PACT_BREAKING_CHANGE=true in CI environment
|
|
147
|
+
// 2. Your test reads the env var and passes includeMainAndDeployed: false
|
|
148
|
+
// to buildVerifierOptions — this verifies ONLY against the matching
|
|
149
|
+
// branch, skipping main/deployed consumers that would fail
|
|
150
|
+
// 3. Coordinate with consumer team to update their pact on a matching branch
|
|
151
|
+
// 4. Remove PACT_BREAKING_CHANGE flag after consumer updates
|
|
152
|
+
|
|
153
|
+
// In CI environment (.github/workflows/provider-verify.yml):
|
|
154
|
+
// env:
|
|
155
|
+
// PACT_BREAKING_CHANGE: 'true'
|
|
156
|
+
|
|
157
|
+
// Your provider test code reads the env var:
|
|
158
|
+
const isBreakingChange = process.env.PACT_BREAKING_CHANGE === 'true';
|
|
159
|
+
|
|
160
|
+
const opts = buildVerifierOptions({
|
|
161
|
+
provider: 'SampleMoviesAPI',
|
|
162
|
+
port: '3001',
|
|
163
|
+
includeMainAndDeployed: !isBreakingChange, // false during breaking changes
|
|
164
|
+
stateHandlers: {
|
|
165
|
+
/* ... */
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
// When includeMainAndDeployed is false (breaking change):
|
|
169
|
+
// selectors = [{ matchingBranch: true }]
|
|
170
|
+
// When includeMainAndDeployed is true (normal):
|
|
171
|
+
// selectors = [{ matchingBranch: true }, { mainBranch: true }, { deployedOrReleased: true }]
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Example 5: handlePactBrokerUrlAndSelectors (Advanced)
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
import { handlePactBrokerUrlAndSelectors } from '@seontechnologies/pactjs-utils';
|
|
178
|
+
import type { VerifierOptions } from '@pact-foundation/pact';
|
|
179
|
+
|
|
180
|
+
// For advanced use cases — mutates the options object in-place (returns void)
|
|
181
|
+
const options: VerifierOptions = {
|
|
182
|
+
provider: 'SampleMoviesAPI',
|
|
183
|
+
providerBaseUrl: 'http://localhost:3001',
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
handlePactBrokerUrlAndSelectors({
|
|
187
|
+
pactPayloadUrl: process.env.PACT_PAYLOAD_URL,
|
|
188
|
+
pactBrokerUrl: process.env.PACT_BROKER_BASE_URL,
|
|
189
|
+
consumer: undefined, // or specific consumer name
|
|
190
|
+
includeMainAndDeployed: true,
|
|
191
|
+
options, // mutated in-place: sets pactBrokerUrl, consumerVersionSelectors, or pactUrls
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
// After call, options has been mutated with:
|
|
195
|
+
// - options.pactBrokerUrl (from pactBrokerUrl param)
|
|
196
|
+
// - options.consumerVersionSelectors (based on includeMainAndDeployed)
|
|
197
|
+
// OR if pactPayloadUrl matches: options.pactUrls = [pactPayloadUrl]
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Note**: `handlePactBrokerUrlAndSelectors` is called internally by `buildVerifierOptions`. You rarely need it directly — use it only for advanced custom verifier assembly.
|
|
201
|
+
|
|
202
|
+
### Example 6: getProviderVersionTags
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
import { getProviderVersionTags } from '@seontechnologies/pactjs-utils';
|
|
206
|
+
|
|
207
|
+
// Extracts version tags from CI environment
|
|
208
|
+
const tags = getProviderVersionTags();
|
|
209
|
+
|
|
210
|
+
// In GitHub Actions on branch "feature/add-movies" (non-breaking):
|
|
211
|
+
// tags = ['dev', 'feature/add-movies']
|
|
212
|
+
//
|
|
213
|
+
// In GitHub Actions on main branch (non-breaking):
|
|
214
|
+
// tags = ['dev', 'main']
|
|
215
|
+
//
|
|
216
|
+
// In GitHub Actions with PACT_BREAKING_CHANGE=true:
|
|
217
|
+
// tags = ['feature/add-movies'] (no 'dev' tag)
|
|
218
|
+
//
|
|
219
|
+
// Locally (no CI):
|
|
220
|
+
// tags = ['local']
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Environment Variables Reference
|
|
224
|
+
|
|
225
|
+
| Variable | Required | Description | Default |
|
|
226
|
+
| ---------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
|
|
227
|
+
| `PACT_BROKER_BASE_URL` | For remote flow | Pact Broker / PactFlow URL | — |
|
|
228
|
+
| `PACT_BROKER_TOKEN` | For remote flow | API token for broker authentication | — |
|
|
229
|
+
| `GITHUB_SHA` | Recommended | Provider version for verification result publishing (auto-set by GitHub Actions) | `'unknown'` |
|
|
230
|
+
| `GITHUB_BRANCH` | Recommended | Branch name for provider version branch and version tags (**not auto-set** — define as `${{ github.head_ref \|\| github.ref_name }}`) | `'main'` |
|
|
231
|
+
| `PACT_PAYLOAD_URL` | Optional | Webhook payload URL — triggers verification of specific pact only | — |
|
|
232
|
+
| `PACT_BREAKING_CHANGE` | Optional | Set to `"true"` to use breaking change selector strategy | `'false'` |
|
|
233
|
+
| `CI` | Auto-detected | When `"true"`, enables verification result publishing | — |
|
|
234
|
+
|
|
235
|
+
## Key Points
|
|
236
|
+
|
|
237
|
+
- **Flow auto-detection**: If `PACT_BROKER_BASE_URL` is set → remote flow; otherwise → local flow (requires `pactUrls`)
|
|
238
|
+
- **`port` is a string**: Pass port number as string (e.g., `'3001'`); function builds `http://localhost:${port}` internally
|
|
239
|
+
- **`includeMainAndDeployed` is required**: `true` = verify matchingBranch + mainBranch + deployedOrReleased; `false` = verify matchingBranch only (for breaking changes)
|
|
240
|
+
- **Selector strategy**: Normal flow (`includeMainAndDeployed: true`) includes all selectors; breaking change flow (`false`) includes only `matchingBranch`
|
|
241
|
+
- **Webhook support**: `PACT_PAYLOAD_URL` takes precedence — verifies only the specific pact that triggered the webhook
|
|
242
|
+
- **State handler types**: Both `async (params) => void` and `{ setup: async (params) => void, teardown: async () => void }` are supported
|
|
243
|
+
- **Version publishing**: Verification results are published by default (`publishVerificationResult` defaults to `true`)
|
|
244
|
+
|
|
245
|
+
## Related Fragments
|
|
246
|
+
|
|
247
|
+
- `pactjs-utils-overview.md` — installation, decision tree, design philosophy
|
|
248
|
+
- `pactjs-utils-consumer-helpers.md` — consumer-side state parameter creation
|
|
249
|
+
- `pactjs-utils-request-filter.md` — auth injection for provider verification
|
|
250
|
+
- `contract-testing.md` — foundational patterns with raw Pact.js
|
|
251
|
+
|
|
252
|
+
## Anti-Patterns
|
|
253
|
+
|
|
254
|
+
### Wrong: Manual broker URL and selector assembly
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
// ❌ Manual environment variable handling
|
|
258
|
+
const opts: VerifierOptions = {
|
|
259
|
+
provider: 'my-api',
|
|
260
|
+
providerBaseUrl: 'http://localhost:3001',
|
|
261
|
+
pactBrokerUrl: process.env.PACT_BROKER_BASE_URL,
|
|
262
|
+
pactBrokerToken: process.env.PACT_BROKER_TOKEN,
|
|
263
|
+
publishVerificationResult: process.env.CI === 'true',
|
|
264
|
+
providerVersion: process.env.GIT_SHA || process.env.GITHUB_SHA || 'dev',
|
|
265
|
+
providerVersionBranch: process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME,
|
|
266
|
+
consumerVersionSelectors:
|
|
267
|
+
process.env.PACT_BREAKING_CHANGE === 'true'
|
|
268
|
+
? [{ matchingBranch: true }]
|
|
269
|
+
: [{ matchingBranch: true }, { mainBranch: true }, { deployedOrReleased: true }],
|
|
270
|
+
pactUrls: process.env.PACT_PAYLOAD_URL ? [process.env.PACT_PAYLOAD_URL] : undefined,
|
|
271
|
+
stateHandlers: {
|
|
272
|
+
/* ... */
|
|
273
|
+
},
|
|
274
|
+
requestFilter: (req, res, next) => {
|
|
275
|
+
req.headers['authorization'] = `Bearer ${process.env.TEST_TOKEN}`;
|
|
276
|
+
next();
|
|
277
|
+
},
|
|
278
|
+
};
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Right: Use buildVerifierOptions
|
|
282
|
+
|
|
283
|
+
```typescript
|
|
284
|
+
// ✅ All env var logic handled internally
|
|
285
|
+
const opts = buildVerifierOptions({
|
|
286
|
+
provider: 'my-api',
|
|
287
|
+
port: '3001',
|
|
288
|
+
includeMainAndDeployed: process.env.PACT_BREAKING_CHANGE !== 'true',
|
|
289
|
+
stateHandlers: {
|
|
290
|
+
/* ... */
|
|
291
|
+
},
|
|
292
|
+
requestFilter: createRequestFilter({
|
|
293
|
+
tokenGenerator: () => process.env.TEST_TOKEN ?? 'test-token',
|
|
294
|
+
}),
|
|
295
|
+
});
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Wrong: Hardcoding consumer version selectors
|
|
299
|
+
|
|
300
|
+
```typescript
|
|
301
|
+
// ❌ Hardcoded selectors — breaks when flow changes
|
|
302
|
+
consumerVersionSelectors: [{ mainBranch: true }, { deployedOrReleased: true }],
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Right: Let buildVerifierOptions choose selectors
|
|
306
|
+
|
|
307
|
+
```typescript
|
|
308
|
+
// ✅ Selector strategy adapts to PACT_BREAKING_CHANGE env var
|
|
309
|
+
const opts = buildVerifierOptions({
|
|
310
|
+
/* ... */
|
|
311
|
+
});
|
|
312
|
+
// Selectors chosen automatically based on environment
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
_Source: @seontechnologies/pactjs-utils provider-verifier module, pact-js-example-provider CI workflows_
|