bmad-method-test-architecture-enterprise 1.3.0 → 1.3.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.
Files changed (32) hide show
  1. package/docs/explanation/tea-overview.md +1 -1
  2. package/docs/explanation/testing-as-engineering.md +39 -35
  3. package/docs/how-to/customization/configure-browser-automation.md +23 -19
  4. package/docs/reference/configuration.md +2 -2
  5. package/docs/reference/troubleshooting.md +3 -2
  6. package/package.json +1 -1
  7. package/release_notes.md +7 -5
  8. package/src/module.yaml +1 -1
  9. package/src/testarch/knowledge/pact-mcp.md +15 -13
  10. package/src/testarch/knowledge/pactjs-utils-consumer-helpers.md +1 -0
  11. package/src/testarch/knowledge/pactjs-utils-provider-verifier.md +2 -2
  12. package/src/testarch/knowledge/pactjs-utils-request-filter.md +20 -13
  13. package/src/workflows/testarch/atdd/validation-report-20260127-095021.md +1 -1
  14. package/src/workflows/testarch/atdd/validation-report-20260127-102401.md +1 -1
  15. package/src/workflows/testarch/automate/validation-report-20260127-095021.md +1 -1
  16. package/src/workflows/testarch/automate/validation-report-20260127-102401.md +1 -1
  17. package/src/workflows/testarch/ci/validation-report-20260127-095021.md +1 -1
  18. package/src/workflows/testarch/ci/validation-report-20260127-102401.md +1 -1
  19. package/src/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +2 -2
  20. package/src/workflows/testarch/framework/validation-report-20260127-095021.md +1 -1
  21. package/src/workflows/testarch/framework/validation-report-20260127-102401.md +1 -1
  22. package/src/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +1 -1
  23. package/src/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +1 -1
  24. package/src/workflows/testarch/teach-me-testing/workflow-plan-teach-me-testing.md +6 -6
  25. package/src/workflows/testarch/test-design/validation-report-20260127-095021.md +1 -1
  26. package/src/workflows/testarch/test-design/validation-report-20260127-102401.md +1 -1
  27. package/src/workflows/testarch/test-review/validation-report-20260127-095021.md +1 -1
  28. package/src/workflows/testarch/test-review/validation-report-20260127-102401.md +1 -1
  29. package/src/workflows/testarch/trace/validation-report-20260127-095021.md +1 -1
  30. package/src/workflows/testarch/trace/validation-report-20260127-102401.md +1 -1
  31. package/tools/validate-doc-links.js +1 -1
  32. package/docs/how-to/customization/enable-tea-mcp-enhancements.md +0 -23
@@ -396,7 +396,7 @@ Optional MCP integration for design-time broker interaction in contract testing
396
396
  **Setup:**
397
397
 
398
398
  - Install: `npm install -g @smartbear/mcp` (or use `npx -y @smartbear/mcp@latest`)
399
- - Claude Code example: `claude mcp add --transport stdio smartbear -- npx -y @smartbear/mcp@latest`
399
+ - Claude Code (global): `claude mcp add-json -s user smartbear '{"type":"stdio","command":"npx","args":["-y","@smartbear/mcp@latest"],"env":{"PACT_BROKER_BASE_URL":"...","PACT_BROKER_TOKEN":"..."}}'`
400
400
  - Required broker env vars: `PACT_BROKER_BASE_URL` and token/basic-auth credentials
401
401
 
402
402
  **Which workflows benefit:**
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  title: 'AI-Generated Testing: Why Most Approaches Fail'
3
- description: How Playwright-Utils, TEA workflows, and Playwright MCPs solve AI test quality problems
3
+ description: How Playwright-Utils, pactjs-utils, TEA workflows, Playwright CLI, and MCPs solve AI test quality problems
4
4
  ---
5
5
 
6
- AI-generated tests frequently fail in production because they lack systematic quality standards. This document explains the problem and presents a solution combining three components: Playwright-Utils, TEA (Test Engineering Architect), and Playwright MCPs.
6
+ AI-generated tests frequently fail in production because they lack systematic quality standards. This document explains the problem and presents a solution combining utility standards, TEA workflows, and automation interfaces across both UI, API and contract testing.
7
7
 
8
8
  :::note[Source]
9
9
  This article is adapted from [The Testing Meta Most Teams Have Not Caught Up To Yet](https://dev.to/muratkeremozcan/the-testing-meta-most-teams-have-not-caught-up-to-yet-5765) by Murat K Ozcan.
@@ -30,25 +30,22 @@ AI excels at generating code quickly, but testing requires precision and consist
30
30
 
31
31
  The solution combines three components that work together to enforce quality:
32
32
 
33
- ### Playwright-Utils
33
+ ### 1. Utilities: Playwright-Utils + Pact.js Utils
34
34
 
35
- Bridges the gap between Cypress ergonomics and Playwright's capabilities by standardizing commonly reinvented primitives through utility functions.
35
+ `@seontechnologies/playwright-utils` standardizes commonly reinvented testing primitives across UI, API, web, and non-web flows. `@seontechnologies/pactjs-utils` standardizes Pact.js contract-testing primitives for provider state setup, request filtering, and provider/message verifier configuration.
36
36
 
37
- | Utility | Purpose |
38
- | ---------------------- | --------------------------------- |
39
- | api-request | API calls with schema validation |
40
- | auth-session | Authentication handling |
41
- | intercept-network-call | Network mocking and interception |
42
- | recurse | Retry logic and polling |
43
- | log | Structured logging |
44
- | network-recorder | Record and replay network traffic |
45
- | burn-in | Smart test selection for CI |
46
- | network-error-monitor | HTTP error detection |
47
- | file-utils | CSV/PDF handling |
37
+ | Track | Utility Layer | Purpose |
38
+ | ------------------ | ------------------------------------ | -------------------------------------------------------- |
39
+ | UI/API/Web/Non-web | `@seontechnologies/playwright-utils` | Reusable testing primitives and fixtures |
40
+ | Contract | `@seontechnologies/pactjs-utils` | Reusable Pact consumer/provider helpers and verification |
48
41
 
49
- These utilities eliminate the need to reinvent authentication, API calls, retries, and logging for every project.
42
+ **Playwright-Utils examples:** `api-request`, `auth-session`, `intercept-network-call`, `recurse`, `log`, `network-recorder`, `burn-in`, `network-error-monitor`, `file-utils`.
50
43
 
51
- ### TEA (Test Architect Agent)
44
+ **pactjs-utils examples:** `createProviderState`, `toJsonMap`, `createRequestFilter`, `noOpRequestFilter`, `buildVerifierOptions`, `buildMessageVerifierOptions`.
45
+
46
+ Together, these utility libraries eliminate the need to reinvent core testing primitives across UI, API, web, non-web, and contract testing.
47
+
48
+ ### 2. Process: TEA (Test Architect Agent)
52
49
 
53
50
  A quality operating model packaged as eight executable workflows spanning test design, CI/CD gates, and release readiness. TEA encodes test architecture expertise into repeatable processes.
54
51
 
@@ -67,28 +64,35 @@ A quality operating model packaged as eight executable workflows spanning test d
67
64
  TEA doesn't just generate tests—it provides a complete quality operating model with workflows for planning, execution, and release gates.
68
65
  :::
69
66
 
70
- ### Playwright MCPs
67
+ ### 3. Automation Interfaces: Playwright CLI + MCPs
68
+
69
+ Automation interfaces enable real-time verification during test generation and review across browser and contract tracks:
70
+
71
+ - **Playwright CLI**: token-efficient browser automation for stateless execution and fast checks in workflows.
72
+ - **Playwright MCP**: stateful browser automation with richer context for interactive exploration and DOM validation.
73
+ - **Pact MCP**: broker-aware contract automation for verification matrix queries, provider-state discovery, compatibility analysis, and `can-i-deploy` deployment decisions.
71
74
 
72
- Model Context Protocols enable real-time verification during test generation. Instead of inferring selectors and behavior from documentation, MCPs allow agents to:
75
+ Instead of inferring behavior from documentation alone, these interfaces allow agents to:
73
76
 
74
- - Run flows and confirm the DOM against the accessibility tree
75
- - Validate network responses in real-time
76
- - Discover actual functionality through interactive exploration
77
- - Verify generated tests against live applications
77
+ - Run browser flows and confirm the DOM against the accessibility tree
78
+ - Validate UI/API network behavior in real-time
79
+ - Query Pact verification matrix results across consumer/provider versions
80
+ - Check provider states and contract compatibility before release
81
+ - Execute `can-i-deploy` checks against target environments
78
82
 
79
83
  ## How They Work Together
80
84
 
81
85
  The three components form a quality pipeline:
82
86
 
83
- | Stage | Component | Action |
84
- | ------------ | ---------------- | --------------------------------------------------- |
85
- | Standards | Playwright-Utils | Provides production-ready patterns and utilities |
86
- | Process | TEA Workflows | Enforces systematic test planning and review |
87
- | Verification | Playwright MCPs | Validates generated tests against live applications |
87
+ | Stage | Component | Action |
88
+ | ------------ | ------------------------------------------ | ------------------------------------------------------------ |
89
+ | Standards | Playwright-Utils + pactjs-utils | Provides production-ready patterns for UI and contract tests |
90
+ | Process | TEA Workflows | Enforces systematic test planning and review |
91
+ | Verification | Playwright CLI + Playwright MCP + Pact MCP | Validates tests and contracts against live systems |
88
92
 
89
93
  **Before (AI-only):** 20 tests with redundant coverage, incorrect assertions, and flaky behavior.
90
94
 
91
- **After (Full Stack):** Risk-based selection, verified selectors, validated behavior, reviewable code.
95
+ **After (Full Stack):** Risk-based selection, verified selectors, validated behavior, contract compatibility checks, reviewable code.
92
96
 
93
97
  ## Why This Matters
94
98
 
@@ -101,11 +105,11 @@ Traditional AI testing approaches fail because they:
101
105
 
102
106
  The three-part stack addresses each gap:
103
107
 
104
- | Gap | Solution |
105
- | --------------- | --------------------------------------------------- |
106
- | No standards | Playwright-Utils provides production-ready patterns |
107
- | No planning | TEA `test-design` creates risk-based test plans |
108
- | No verification | Playwright MCPs validate against live applications |
109
- | No review | TEA `test-review` audits quality with scoring |
108
+ | Gap | Solution |
109
+ | --------------- | ------------------------------------------------------------------------ |
110
+ | No standards | Playwright-Utils + pactjs-utils provide production-ready patterns |
111
+ | No planning | TEA `test-design` creates risk-based test plans |
112
+ | No verification | Playwright CLI + Playwright MCP + Pact MCP validate against live systems |
113
+ | No review | TEA `test-review` audits quality with scoring |
110
114
 
111
115
  This approach is sometimes called _context engineering_—loading domain-specific standards into AI context automatically rather than relying on prompts alone. TEA's `tea-index.csv` manifest loads relevant knowledge fragments so the AI doesn't relearn testing patterns each session.
@@ -43,14 +43,17 @@ Add these MCP server entries to your tool's configuration file:
43
43
  {
44
44
  "mcpServers": {
45
45
  "playwright": {
46
+ "type": "stdio",
46
47
  "command": "npx",
47
- "args": ["@playwright/mcp@latest"]
48
+ "args": ["-y", "@playwright/mcp@latest"]
48
49
  },
49
50
  "playwright-test": {
51
+ "type": "stdio",
50
52
  "command": "npx",
51
53
  "args": ["playwright", "run-test-mcp-server"]
52
54
  },
53
55
  "smartbear": {
56
+ "type": "stdio",
54
57
  "command": "npx",
55
58
  "args": ["-y", "@smartbear/mcp@latest"],
56
59
  "env": {
@@ -62,35 +65,36 @@ Add these MCP server entries to your tool's configuration file:
62
65
  }
63
66
  ```
64
67
 
65
- The `smartbear` server is optional — only needed if you use the [Pact MCP integration](/docs/how-to/customization/configure-browser-automation.md#related) for contract testing workflows. See the [pact-mcp knowledge fragment](../../src/testarch/knowledge/pact-mcp.md) for details.
68
+ The `smartbear` server is optional — only needed if you use the [Pact MCP integration](/docs/reference/configuration.md#tea_pact_mcp) for contract testing workflows. See the [pact-mcp knowledge fragment](/docs/reference/knowledge-base.md#pact-contract-testing-integration) for details.
66
69
 
67
70
  #### Where to put the config
68
71
 
69
- | Tool | Config File | Format |
70
- | ----------- | ------------------------------------- | ---------------------- |
71
- | Claude Code | `~/.claude.json` | JSON (`mcpServers`) |
72
- | Codex | `~/.codex/config.toml` | TOML (`[mcp_servers]`) |
73
- | Gemini CLI | `~/.gemini/settings.json` | JSON (`mcpServers`) |
74
- | Cursor | `~/.cursor/mcp.json` | JSON (`mcpServers`) |
75
- | Windsurf | `~/.codeium/windsurf/mcp_config.json` | JSON (`mcpServers`) |
72
+ | Tool | Config File | Format |
73
+ | ----------------- | ------------------------------------- | ---------------------- |
74
+ | Claude Code | `~/.claude.json` | JSON (`mcpServers`) |
75
+ | Codex | `~/.codex/config.toml` | TOML (`[mcp_servers]`) |
76
+ | Gemini CLI | `~/.gemini/settings.json` | JSON (`mcpServers`) |
77
+ | Cursor | `~/.cursor/mcp.json` | JSON (`mcpServers`) |
78
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` | JSON (`mcpServers`) |
79
+ | VS Code (Copilot) | `.vscode/mcp.json` | JSON (`servers`) |
80
+
81
+ > **Claude Code tip**: Prefer the `claude mcp add` CLI over manual JSON editing — it sets the correct `type` field and validates the config. Use `-s user` for global (all projects) or omit for per-project (default).
76
82
 
77
83
  #### CLI shortcuts
78
84
 
79
85
  Claude Code and Codex support adding MCP servers from the command line:
80
86
 
81
87
  ```bash
82
- # Claude Code — Playwright
83
- claude mcp add playwright -- npx @playwright/mcp@latest
84
- claude mcp add playwright-test -- npx playwright run-test-mcp-server
88
+ # Claude Code — Playwright (use -s user for global, omit for per-project)
89
+ claude mcp add -s user --transport stdio playwright -- npx -y @playwright/mcp@latest
90
+ claude mcp add -s user --transport stdio playwright-test -- npx playwright run-test-mcp-server
85
91
 
86
- # Claude Code — SmartBear (Pact)
87
- claude mcp add smartbear --scope user \
88
- -e PACT_BROKER_BASE_URL=https://{tenant}.pactflow.io \
89
- -e PACT_BROKER_TOKEN=<your-token> \
90
- -- npx -y @smartbear/mcp@latest
92
+ # Claude Code — SmartBear (Pact) — use add-json for servers with env vars
93
+ claude mcp add-json -s user smartbear \
94
+ '{"type":"stdio","command":"npx","args":["-y","@smartbear/mcp@latest"],"env":{"PACT_BROKER_BASE_URL":"https://{tenant}.pactflow.io","PACT_BROKER_TOKEN":"<your-token>"}}'
91
95
 
92
96
  # Codex — Playwright
93
- codex mcp add playwright -- npx @playwright/mcp@latest
97
+ codex mcp add playwright -- npx -y @playwright/mcp@latest
94
98
  codex mcp add playwright-test -- npx playwright run-test-mcp-server
95
99
 
96
100
  # Codex — SmartBear (Pact)
@@ -104,7 +108,7 @@ Codex uses TOML instead of JSON. If editing the config file manually:
104
108
  ```toml
105
109
  [mcp_servers.playwright]
106
110
  command = "npx"
107
- args = ["@playwright/mcp@latest"]
111
+ args = ["-y", "@playwright/mcp@latest"]
108
112
 
109
113
  [mcp_servers.playwright-test]
110
114
  command = "npx"
@@ -141,7 +141,7 @@ Enable Pact.js Utils integration for production-ready contract testing utilities
141
141
 
142
142
  **Type:** `boolean`
143
143
 
144
- **Default:** `false`
144
+ **Default:** `true`
145
145
 
146
146
  **Installer Prompt:**
147
147
 
@@ -201,7 +201,7 @@ Pact MCP strategy for broker interaction during contract testing workflows.
201
201
 
202
202
  **Type:** `string`
203
203
 
204
- **Default:** `"none"`
204
+ **Default:** `"mcp"`
205
205
 
206
206
  **Options:** `"mcp"` | `"none"`
207
207
 
@@ -536,8 +536,9 @@ If the BMAD installer can run but cannot fetch the Test Architect module from Gi
536
536
  {
537
537
  "mcpServers": {
538
538
  "playwright": {
539
+ "type": "stdio",
539
540
  "command": "npx",
540
- "args": ["@playwright/mcp@latest"]
541
+ "args": ["-y", "@playwright/mcp@latest"]
541
542
  }
542
543
  }
543
544
  }
@@ -593,7 +594,7 @@ If the BMAD installer can run but cannot fetch the Test Architect module from Gi
593
594
 
594
595
  **Causes**:
595
596
 
596
- - All 40 fragments loading at once
597
+ - Up to 40 fragments loading at once (depends on workflow and enabled integrations)
597
598
  - Large fragment file sizes
598
599
  - Disk I/O bottleneck
599
600
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method-test-architecture-enterprise",
4
- "version": "1.3.0",
4
+ "version": "1.3.2",
5
5
  "description": "Master Test Architect for quality strategy, test automation, and release gates",
6
6
  "keywords": [
7
7
  "bmad",
package/release_notes.md CHANGED
@@ -1,10 +1,12 @@
1
- ## 🚀 What's New in v1.3.0
1
+ ## 🚀 What's New in v1.3.2
2
2
 
3
- ### New Features
4
- - feat: pactjs utils support
3
+ ### 🐛 Bug Fixes
4
+ - fix: issue 45
5
5
 
6
6
  ### 📦 Other Changes
7
- - Merge pull request #41 from bmad-code-org/feat/pactjs-utils-support
7
+ - docs:update mcp settings
8
+ - Merge pull request #44 from bmad-code-org/docs/update-mcp-settings
9
+ - Merge pull request #46 from bmad-code-org/fix/issue-45
8
10
 
9
11
 
10
12
  ## 📦 Installation
@@ -14,4 +16,4 @@ npx bmad-method install
14
16
  # Select "Test Architect" from module menu
15
17
  ```
16
18
 
17
- **Full Changelog**: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/compare/v1.2.6...v1.3.0
19
+ **Full Changelog**: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/compare/v1.3.1...v1.3.2
package/src/module.yaml CHANGED
@@ -234,7 +234,7 @@ post-install-notes:
234
234
  mcp: |
235
235
  SmartBear MCP Setup (PactFlow integration):
236
236
  Install: npm install -g @smartbear/mcp
237
- Claude Code: claude mcp add --transport stdio smartbear -- npx -y @smartbear/mcp@latest
237
+ Claude Code (global): claude mcp add-json -s user smartbear '{"type":"stdio","command":"npx","args":["-y","@smartbear/mcp@latest"],"env":{"PACT_BROKER_BASE_URL":"https://{tenant}.pactflow.io","PACT_BROKER_TOKEN":"<your-api-token>"}}'
238
238
  Required env vars:
239
239
  PACT_BROKER_BASE_URL=https://{tenant}.pactflow.io
240
240
  PACT_BROKER_TOKEN=<your-api-token>
@@ -37,22 +37,23 @@ Use the SmartBear MCP server to enable AI agent interaction with PactFlow/Pact B
37
37
 
38
38
  ### Config file locations
39
39
 
40
- | Tool | Global Config File | Format |
41
- | ----------- | ------------------------------------- | ---------------------- |
42
- | Claude Code | `~/.claude.json` | JSON (`mcpServers`) |
43
- | Codex | `~/.codex/config.toml` | TOML (`[mcp_servers]`) |
44
- | Gemini CLI | `~/.gemini/settings.json` | JSON (`mcpServers`) |
45
- | Cursor | `~/.cursor/mcp.json` | JSON (`mcpServers`) |
46
- | Windsurf | `~/.codeium/windsurf/mcp_config.json` | JSON (`mcpServers`) |
40
+ | Tool | Global Config File | Format |
41
+ | ----------------- | ------------------------------------- | ---------------------- |
42
+ | Claude Code | `~/.claude.json` | JSON (`mcpServers`) |
43
+ | Codex | `~/.codex/config.toml` | TOML (`[mcp_servers]`) |
44
+ | Gemini CLI | `~/.gemini/settings.json` | JSON (`mcpServers`) |
45
+ | Cursor | `~/.cursor/mcp.json` | JSON (`mcpServers`) |
46
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` | JSON (`mcpServers`) |
47
+ | VS Code (Copilot) | `.vscode/mcp.json` | JSON (`servers`) |
48
+
49
+ > **Claude Code tip**: Prefer the `claude mcp add` CLI over manual JSON editing. Use `-s user` for global (all projects) or omit for per-project (default).
47
50
 
48
51
  ### CLI shortcuts (Claude Code and Codex)
49
52
 
50
53
  ```bash
51
- # Claude Code
52
- claude mcp add smartbear --scope user \
53
- -e PACT_BROKER_BASE_URL=https://{tenant}.pactflow.io \
54
- -e PACT_BROKER_TOKEN=<your-token> \
55
- -- npx -y @smartbear/mcp@latest
54
+ # Claude Code — use add-json for servers with env vars (-s user = global)
55
+ claude mcp add-json -s user smartbear \
56
+ '{"type":"stdio","command":"npx","args":["-y","@smartbear/mcp@latest"],"env":{"PACT_BROKER_BASE_URL":"https://{tenant}.pactflow.io","PACT_BROKER_TOKEN":"<your-token>"}}'
56
57
 
57
58
  # Codex
58
59
  codex mcp add smartbear -- npx -y @smartbear/mcp@latest
@@ -66,6 +67,7 @@ Add a `"smartbear"` entry to the `mcpServers` object in the config file for your
66
67
  {
67
68
  "mcpServers": {
68
69
  "smartbear": {
70
+ "type": "stdio",
69
71
  "command": "npx",
70
72
  "args": ["-y", "@smartbear/mcp@latest"],
71
73
  "env": {
@@ -95,7 +97,7 @@ Note the key is `mcp_servers` (underscored), not `mcpServers`.
95
97
 
96
98
  ### VS Code (GitHub Copilot)
97
99
 
98
- Add to `.vscode/mcp.json`:
100
+ Add to `.vscode/mcp.json` (note: uses `servers` key, not `mcpServers`):
99
101
 
100
102
  ```json
101
103
  {
@@ -154,6 +154,7 @@ await provider
154
154
  - **Null handling**: `null` becomes `"null"` string in JsonMap (Pact requirement)
155
155
  - **Date handling**: Date objects become ISO 8601 strings
156
156
  - **No nested objects in JsonMap**: Nested objects are JSON-stringified — provider state handlers must parse them
157
+ - **Array serialization is lossy**: Arrays are converted via `String()` (e.g., `[1,2,3]` → `"1,2,3"`) — prefer passing arrays as JSON-stringified objects for round-trip safety
157
158
  - **Message pacts**: Works identically with `MessageConsumerPact` — same `.given()` API
158
159
 
159
160
  ## Related Fragments
@@ -265,8 +265,8 @@ const opts: VerifierOptions = {
265
265
  providerVersionBranch: process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME,
266
266
  consumerVersionSelectors:
267
267
  process.env.PACT_BREAKING_CHANGE === 'true'
268
- ? [{ mainBranch: true }, { deployedOrReleased: true }]
269
- : [{ mainBranch: true }, { deployedOrReleased: true }, { matchingBranch: true }],
268
+ ? [{ matchingBranch: true }]
269
+ : [{ matchingBranch: true }, { mainBranch: true }, { deployedOrReleased: true }],
270
270
  pactUrls: process.env.PACT_PAYLOAD_URL ? [process.env.PACT_PAYLOAD_URL] : undefined,
271
271
  stateHandlers: {
272
272
  /* ... */
@@ -198,20 +198,27 @@ const opts: VerifierOptions = {
198
198
  ### Right: Separate auth into createRequestFilter
199
199
 
200
200
  ```typescript
201
- // ✅ Clean separation
202
- const requestFilter = createRequestFilter({
203
- tokenGenerator: () => fetchAuthToken(),
204
- });
201
+ // ✅ Clean separation — async setup wraps token fetch (CommonJS-safe)
202
+ async function setupVerifierOptions() {
203
+ const token = await fetchAuthToken(); // Resolve async token BEFORE creating filter
205
204
 
206
- const opts = buildVerifierOptions({
207
- provider: 'my-api',
208
- port: '3001',
209
- includeMainAndDeployed: true,
210
- requestFilter,
211
- stateHandlers: {
212
- /* ... */
213
- },
214
- });
205
+ const requestFilter = createRequestFilter({
206
+ tokenGenerator: () => token, // Synchronous — returns pre-fetched value
207
+ });
208
+
209
+ return buildVerifierOptions({
210
+ provider: 'my-api',
211
+ port: '3001',
212
+ includeMainAndDeployed: true,
213
+ requestFilter,
214
+ stateHandlers: {
215
+ /* ... */
216
+ },
217
+ });
218
+ }
219
+
220
+ // In tests/hooks, callers can await setupVerifierOptions():
221
+ // const opts = await setupVerifierOptions();
215
222
  ```
216
223
 
217
224
  _Source: @seontechnologies/pactjs-utils request-filter module, pact-js-example-provider verification tests_
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-atdd
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/atdd
4
+ workflowPath: {project-root}/src/workflows/testarch/atdd
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:03:10
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-atdd
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/atdd
4
+ workflowPath: {project-root}/src/workflows/testarch/atdd
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:24:01
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-automate
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/automate
4
+ workflowPath: {project-root}/src/workflows/testarch/automate
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:03:10
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-automate
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/automate
4
+ workflowPath: {project-root}/src/workflows/testarch/automate
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:24:01
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-ci
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/ci
4
+ workflowPath: {project-root}/src/workflows/testarch/ci
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:03:10
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-ci
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/ci
4
+ workflowPath: {project-root}/src/workflows/testarch/ci
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:24:01
7
7
  ---
@@ -59,7 +59,7 @@ Create the idiomatic test directory for the detected language:
59
59
  - **Ruby (RSpec)**: `spec/` with `spec/unit/`, `spec/integration/`, `spec/api/`, `spec/support/`
60
60
  - **Rust**: `tests/` for integration tests, inline `#[cfg(test)]` modules for unit tests
61
61
 
62
- **If `tea_use_pactjs_utils` is enabled** (and `{detected_stack}` is `backend` or `fullstack`):
62
+ **If `config.tea_use_pactjs_utils` is enabled** (and `{detected_stack}` is `backend` or `fullstack`):
63
63
 
64
64
  Create contract testing directory structure:
65
65
 
@@ -180,7 +180,7 @@ Create helpers for:
180
180
  - Auth helpers
181
181
  - Test data factories (language-idiomatic patterns)
182
182
 
183
- **If `tea_use_pactjs_utils` is enabled** (and `{detected_stack}` is `backend` or `fullstack`):
183
+ **If `config.tea_use_pactjs_utils` is enabled** (and `{detected_stack}` is `backend` or `fullstack`):
184
184
 
185
185
  Create contract test samples in `pact/` directory:
186
186
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-framework
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/framework
4
+ workflowPath: {project-root}/src/workflows/testarch/framework
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:03:10
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-framework
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/framework
4
+ workflowPath: {project-root}/src/workflows/testarch/framework
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:24:01
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-nfr
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/nfr-assess
4
+ workflowPath: {project-root}/src/workflows/testarch/nfr-assess
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:03:10
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-nfr
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/nfr-assess
4
+ workflowPath: {project-root}/src/workflows/testarch/nfr-assess
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:24:01
7
7
  ---
@@ -60,7 +60,7 @@ Create an ongoing learning companion that teaches testing progressively through
60
60
  ## Classification Decisions
61
61
 
62
62
  **Workflow Name:** teach-me-testing
63
- **Target Path:** /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/teach-me-testing/
63
+ **Target Path:** {project-root}/src/workflows/testarch/teach-me-testing/
64
64
 
65
65
  **4 Key Decisions:**
66
66
 
@@ -501,7 +501,7 @@ teach-me-testing/
501
501
  └── checklist.md ✓ Created
502
502
  ```
503
503
 
504
- **Location:** /Users/murat.ozcan/opensource/bmad-playground/\_bmad-output/bmb-creations/workflows/teach-me-testing/
504
+ **Location:** {external-project-root}/\_bmad-output/bmb-creations/workflows/teach-me-testing/
505
505
 
506
506
  **Configuration:**
507
507
 
@@ -924,16 +924,16 @@ teach-me-testing/
924
924
  **DEPLOYMENT:** Move workflow from staging to TEA module
925
925
 
926
926
  **Source (Staging):**
927
- `/Users/murat.ozcan/opensource/bmad-playground/_bmad-output/bmb-creations/workflows/teach-me-testing/`
927
+ `{external-project-root}/_bmad-output/bmb-creations/workflows/teach-me-testing/`
928
928
 
929
929
  **Target (Production):**
930
- `/Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/teach-me-testing/`
930
+ `{project-root}/src/workflows/testarch/teach-me-testing/`
931
931
 
932
932
  **Command:**
933
933
 
934
934
  ```bash
935
- cp -r /Users/murat.ozcan/opensource/bmad-playground/_bmad-output/bmb-creations/workflows/teach-me-testing \
936
- /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/
935
+ cp -r {external-project-root}/_bmad-output/bmb-creations/workflows/teach-me-testing \
936
+ {project-root}/src/workflows/testarch/
937
937
  ```
938
938
 
939
939
  **After deployment:**
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-test-design
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/test-design
4
+ workflowPath: {project-root}/src/workflows/testarch/test-design
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:03:10
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-test-design
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/test-design
4
+ workflowPath: {project-root}/src/workflows/testarch/test-design
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:24:01
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-test-review
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/test-review
4
+ workflowPath: {project-root}/src/workflows/testarch/test-review
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:03:10
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-test-review
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/test-review
4
+ workflowPath: {project-root}/src/workflows/testarch/test-review
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:24:01
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-trace
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/trace
4
+ workflowPath: {project-root}/src/workflows/testarch/trace
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:03:10
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  validationDate: 2026-01-27
3
3
  workflowName: testarch-trace
4
- workflowPath: /Users/murat.ozcan/opensource/bmad-method-test-architecture-enterprise/src/workflows/testarch/trace
4
+ workflowPath: {project-root}/src/workflows/testarch/trace
5
5
  validationStatus: COMPLETE
6
6
  completionDate: 2026-01-27 10:24:01
7
7
  ---
@@ -279,7 +279,7 @@ function applyFixes(content, issues) {
279
279
  if (issue.status === 'auto-fixable' && issue.suggestedFix) {
280
280
  const oldLink = `[${issue.linkText}](${issue.href})`;
281
281
  const newLink = `[${issue.linkText}](${issue.suggestedFix})`;
282
- updated = updated.replace(oldLink, newLink);
282
+ updated = updated.replaceAll(oldLink, newLink);
283
283
  }
284
284
  }
285
285
 
@@ -1,23 +0,0 @@
1
- ---
2
- title: 'Enable TEA MCP Enhancements (Deprecated)'
3
- description: This guide has been superseded by Configure Browser Automation
4
- ---
5
-
6
- # Enable TEA MCP Enhancements
7
-
8
- > **Deprecated:** This guide has been replaced by [Configure Browser Automation](/docs/how-to/customization/configure-browser-automation.md).
9
-
10
- The `tea_use_mcp_enhancements` boolean flag has been replaced by `tea_browser_automation`, which supports four modes: `auto`, `cli`, `mcp`, and `none`.
11
-
12
- **Migration:**
13
-
14
- | Old Setting | New Equivalent |
15
- | --------------------------------- | -------------------------------- |
16
- | `tea_use_mcp_enhancements: true` | `tea_browser_automation: "auto"` |
17
- | `tea_use_mcp_enhancements: false` | `tea_browser_automation: "none"` |
18
-
19
- Please see [Configure Browser Automation](/docs/how-to/customization/configure-browser-automation.md) for full setup instructions.
20
-
21
- ---
22
-
23
- Generated with [BMad Method](https://bmad-method.org) - TEA (Test Engineering Architect)