TEA Configuration Reference
TEA Configuration Reference
Section titled âTEA Configuration ReferenceâComplete reference for all TEA (Test Engineering Architect) configuration options.
Configuration File Locations
Section titled âConfiguration File LocationsâUser Configuration (Installer-Generated)
Section titled âUser Configuration (Installer-Generated)âLocation: _bmad/tea/config.yaml
Purpose: Project-specific configuration values for your repository
Created By: BMad installer
Status: Typically gitignored (user-specific values)
Usage: Edit this file to change TEA behavior in your project
Example:
project_name: my-awesome-appuser_skill_level: intermediateoutput_folder: _bmad-outputtest_artifacts: _bmad-output/test-artifactstea_use_playwright_utils: truetea_use_pactjs_utils: truetea_pact_mcp: 'mcp'tea_browser_automation: 'auto'tea_execution_mode: 'auto'tea_capability_probe: trueCanonical Schema (Source of Truth)
Section titled âCanonical Schema (Source of Truth)âLocation: src/module.yaml
Purpose: Defines available configuration keys, defaults, and installer prompts
Created By: BMAD maintainers (part of BMAD repo)
Status: Versioned in BMAD repository
Usage: Reference only (do not edit unless contributing to BMAD)
Note: The installer reads module.yaml to prompt for config values, then writes user choices to _bmad/tea/config.yaml in your project.
TEA Configuration Options
Section titled âTEA Configuration Optionsâtest_artifacts
Section titled âtest_artifactsâBase output folder for TEA-generated artifacts (test designs, reports, traceability, etc).
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: string
Default: {output_folder}/test-artifacts
Purpose: Allows TEA outputs to live outside the core BMM output folder.
Example:
test_artifacts: docs/testing-artifactstea_use_playwright_utils
Section titled âtea_use_playwright_utilsâEnable Playwright Utils integration for production-ready fixtures and utilities.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: boolean
Default: true
Installer Prompt:
Enable Playwright Utils integration?Purpose: Enables TEA to:
- Include playwright-utils in
frameworkscaffold - Generate tests using playwright-utils fixtures
- Review tests against playwright-utils patterns
- Configure CI with burn-in and selective testing utilities
Affects Workflows:
framework- Includes playwright-utils imports and fixture examplesatdd- Uses fixtures likeapiRequest,authSessionin generated testsautomate- Leverages utilities for test patternstest-review- Reviews against playwright-utils best practicesci- Includes burn-in utility and selective testing
Example (Enable):
tea_use_playwright_utils: trueExample (Disable):
tea_use_playwright_utils: falsePrerequisites:
npm install -D @seontechnologies/playwright-utilsRelated:
tea_use_pactjs_utils
Section titled âtea_use_pactjs_utilsâEnable Pact.js Utils integration for production-ready contract testing utilities.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: boolean
Default: true
Installer Prompt:
Enable Pact.js Utils integration for contract testing?Purpose: Enables TEA to:
- Load Pact.js Utils knowledge fragments during context loading
- Scaffold contract test structure and examples in
framework - Generate contract testing guidance in
atddandautomate - Review provider verification patterns in
test-review - Add contract pipeline stage and gates in
ci
Affects Workflows:
framework- Creates pact test folders and pactjs-utils sample patternsatdd- Loads pactjs-utils fragments for contract-aware generation contextautomate- Loads pactjs-utils fragments and passes pact config to subagentstest-design- Loads pactjs-utils fragments for system/epic planningtest-review- Uses pactjs-utils provider/review patternsci- Adds contract-test stage and quality gates
Example (Enable):
tea_use_pactjs_utils: trueExample (Disable):
tea_use_pactjs_utils: falsePrerequisites:
npm install -D @seontechnologies/pactjs-utils @pact-foundation/pactRelated:
tea_pact_mcp
Section titled âtea_pact_mcpâPact MCP strategy for broker interaction during contract testing workflows.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: string
Default: "mcp"
Options: "mcp" | "none"
Installer Prompt:
Enable SmartBear MCP for PactFlow/Pact Broker interaction?Purpose: Controls whether TEA can use SmartBear MCP tools for:
- Provider-state discovery in design/generation workflows
- Pact test review assistance
- Can-i-deploy and matrix guidance in CI workflows
Affects Workflows:
test-design- Broker-aware contract context loadingautomate- Broker-assisted pact generation contexttest-review- MCP-assisted pact review contextci- MCP can-i-deploy/matrix guidance references
Prerequisites:
npm install -g @smartbear/mcp# or: npx -y @smartbear/mcp@latestRequired broker env vars (for Pact features):
PACT_BROKER_BASE_URLPACT_BROKER_TOKEN(or username/password for basic auth)
Example (Enable MCP):
tea_pact_mcp: 'mcp'Example (Disable MCP):
tea_pact_mcp: 'none'Related:
tea_browser_automation
Section titled âtea_browser_automationâBrowser automation strategy for TEA workflows. Controls how TEA interacts with live browsers during test generation.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: string
Default: "auto"
Options: "auto" | "cli" | "mcp" | "none"
Installer Prompt:
How should TEA interact with browsers during test generation?Purpose: Controls which browser automation tool TEA uses:
| Mode | Behavior |
|---|---|
auto | Smart selection â CLI for stateless tasks, MCP for stateful flows. Falls back gracefully. (Recommended) |
cli | CLI only (@playwright/cli). MCP ignored. |
mcp | MCP only. CLI ignored. Same as old tea_use_mcp_enhancements: true. |
none | No browser interaction. Pure AI generation from docs/code. |
Affects Workflows:
test-design- Exploratory mode (CLI snapshots for page discovery)atdd- Recording mode (CLI for selector verification, MCP for complex interactions)automate- Healing mode (MCP for debugging) + recording mode (CLI for snapshots)test-review- Evidence collection (CLI for traces, screenshots)
Prerequisites:
- CLI:
npm install -g @playwright/cli@latestthenplaywright-cli install --skills - MCP: Configure MCP servers in IDE (see Configure Browser Automation)
Example (Auto â Recommended):
tea_browser_automation: 'auto'Example (CLI only):
tea_browser_automation: 'cli'Example (MCP only â same as old behavior):
tea_browser_automation: 'mcp'Example (Disable):
tea_browser_automation: 'none'Migration from old flag:
| Old Setting | New Equivalent |
|---|---|
tea_use_mcp_enhancements: true | tea_browser_automation: "auto" |
tea_use_mcp_enhancements: false | tea_browser_automation: "none" |
Related:
tea_execution_mode
Section titled âtea_execution_modeâExecution strategy for orchestration-capable TEA workflows.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: string
Default: "auto"
Options: "auto" | "subagent" | "agent-team" | "sequential"
Installer Prompt:
How should TEA orchestrate multi-step generation and evaluation?Purpose: Defines how TEA orchestrates worker-style steps in these workflows:
automateatddtest-reviewnfr-assessframeworkcitest-designtrace
teach-me-testing does not use this setting.
Mode behavior:
| Mode | Behavior |
|---|---|
auto | Recommended. TEA picks best supported mode using runtime capability checks (if probing enabled). |
agent-team | Prefer runtime team/delegation orchestration. |
subagent | Prefer isolated subagent-style orchestration. |
sequential | Force one-by-one execution. Most deterministic, typically slowest. |
Important: In agent-team and subagent modes, runtime decides scheduling and concurrency. TEA does not enforce a separate parallel-worker cap.
Per-workflow effect:
| Workflow | Orchestrated unit | What mode changes |
|---|---|---|
automate | API + E2E/backend generation workers | Dispatch style only |
atdd | failing API + failing E2E workers | Dispatch style only |
test-review | quality-dimension workers | Dispatch style only |
nfr-assess | domain assessment workers | Dispatch style only |
framework | scaffold work units | Dispatch style only |
ci | orchestration-capable pipeline generation step | Orchestration policy |
test-design | orchestration-capable output generation step | Orchestration policy |
trace | phase/work-unit separation with dependencies | Orchestration policy |
Output contracts remain the same across modes for a given workflow.
Resolution order:
- Normalize explicit run-level wording (if present):
agent team/agent teams/agentteam->agent-teamsubagent/subagents/sub agent/sub agents->subagentsequential->sequentialauto->auto
- If no explicit override exists, use
tea_execution_modefrom_bmad/tea/config.yaml. - If
tea_capability_probe: true, detect runtime support foragent-teamandsubagent. - Resolve mode:
auto->agent-team->subagent->sequential- explicit
agent-team/subagent-> fallback only when probing is enabled sequential-> always sequential
Default when no explicit run request is given: configured value (typically auto).
Example (Recommended):
tea_execution_mode: 'auto'Example (Force Sequential):
tea_execution_mode: 'sequential'tea_capability_probe
Section titled âtea_capability_probeâWhether TEA should probe runtime capabilities before resolving execution mode.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: boolean
Default: true
Purpose: When enabled, TEA checks whether agent-team or subagent execution is actually supported and falls back safely. When disabled, TEA honors configured mode strictly and fails if unsupported.
Example (Recommended):
tea_capability_probe: trueExample (Strict):
tea_capability_probe: falsetest_stack_type
Section titled âtest_stack_typeâDetected or configured project stack type. Controls CI pipeline generation and framework selection.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: string
Default: "auto"
Options: "auto" | "frontend" | "backend" | "fullstack"
Purpose: Determines stack-specific behavior:
| Stack Type | Behavior |
|---|---|
auto | Auto-detect from project manifests (playwright.config, jest.config, etc.) |
frontend | Browser-based tests (Playwright/Cypress), browser install in CI, burn-in enabled |
backend | API/unit tests (pytest, JUnit, Go test, Jest/Vitest, etc.), no browser install, burn-in skipped by default |
fullstack | Both frontend and backend tests, full CI pipeline |
Affects Workflows:
ci- Stack-conditional pipeline stages (browser install, burn-in)framework- Framework scaffold adapts to stack type
Example:
test_stack_type: 'fullstack'ci_platform
Section titled âci_platformâCI/CD platform for pipeline generation.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: string
Default: "auto"
Options: "auto" | "github-actions" | "gitlab-ci" | "jenkins" | "azure-devops" | "harness" | "circle-ci" | "other"
Purpose: Controls which CI template is used for pipeline generation.
When set to "auto", TEA detects the platform by scanning for existing CI configuration files (.github/workflows/, .gitlab-ci.yml, Jenkinsfile, azure-pipelines.yml, .harness/, .circleci/config.yml) and falls back to inferring from the git remote.
Affects Workflows:
ci- Template selection and output path
Example:
ci_platform: 'github-actions'test_framework
Section titled âtest_frameworkâDetected or configured test framework preference.
Schema Location: src/module.yaml (TEA module config)
User Config: _bmad/tea/config.yaml
Type: string
Default: "auto"
Options: "auto" | "playwright" | "cypress" | "jest" | "vitest" | "pytest" | "junit" | "go-test" | "dotnet-test" | "rspec" | "other"
Purpose: Controls which test framework patterns TEA uses for code generation. When set to "auto", TEA detects from project configuration files and manifests. Supports both frontend (Playwright, Cypress, Jest, Vitest) and backend (pytest, JUnit, Go test, dotnet test, RSpec) frameworks.
Affects Workflows:
framework- Scaffold generationci- Test commands in pipelineatdd- Test code generation patternsautomate- Test code generation patterns
Example:
test_framework: 'playwright'Core BMM Configuration (Inherited by TEA)
Section titled âCore BMM Configuration (Inherited by TEA)âTEA also uses core BMM configuration options from _bmad/tea/config.yaml:
output_folder
Section titled âoutput_folderâType: string
Default: _bmad-output
Purpose: Base output folder for core BMM artifacts. TEA writes test artifacts under test_artifacts (defaults to {output_folder}/test-artifacts).
Example:
output_folder: _bmad-outputTEA Output Files (under {test_artifacts}):
test-design-architecture.md+test-design-qa.md(fromtest-designsystem-level - TWO documents)test-design-epic-N.md(fromtest-designepic-level)test-review.md(fromtest-review)traceability-matrix.md(fromtracePhase 1)gate-decision-{gate_type}-{story_id}.md(fromtracePhase 2)nfr-assessment.md(fromnfr-assess)automation-summary.md(fromautomate)atdd-checklist-{story_id}.md(fromatdd)
user_skill_level
Section titled âuser_skill_levelâType: enum
Options: beginner | intermediate | expert
Default: intermediate
Purpose: Affects how TEA explains concepts in chat responses
Example:
user_skill_level: beginnerImpact on TEA:
- Beginner: More detailed explanations, links to concepts, verbose guidance
- Intermediate: Balanced explanations, assumes basic knowledge
- Expert: Concise, technical, minimal hand-holding
project_name
Section titled âproject_nameâType: string
Default: Directory name
Purpose: Used in TEA-generated documentation and reports
Example:
project_name: my-awesome-appUsed in:
- Report headers
- Documentation titles
- CI configuration comments
communication_language
Section titled âcommunication_languageâType: string
Default: english
Purpose: Language for TEA chat responses
Example:
communication_language: englishSupported: Any language (TEA responds in specified language)
document_output_language
Section titled âdocument_output_languageâType: string
Default: english
Purpose: Language for TEA-generated documents (test designs, reports)
Example:
document_output_language: englishNote: Can differ from communication_language - chat in Spanish, generate docs in English.
Environment Variables
Section titled âEnvironment VariablesâTEA workflows may use environment variables for test configuration.
Test Framework Variables
Section titled âTest Framework VariablesâPlaywright:
BASE_URL=https://todomvc.com/examples/react/dist/API_BASE_URL=https://api.example.comTEST_USER_EMAIL=test@example.comTEST_USER_PASSWORD=password123Cypress:
# cypress.env.json or .envCYPRESS_BASE_URL=https://example.comCYPRESS_API_URL=https://api.example.comCI/CD Variables
Section titled âCI/CD VariablesâSet in CI platform (GitHub Actions secrets, GitLab CI variables):
env: BASE_URL: ${{ secrets.STAGING_URL }} API_KEY: ${{ secrets.API_KEY }} TEST_USER_EMAIL: ${{ secrets.TEST_USER }}Configuration Patterns
Section titled âConfiguration PatternsâDevelopment vs Production
Section titled âDevelopment vs ProductionâSeparate configs for environments:
output_folder: _bmad-output
# .env.developmentBASE_URL=http://localhost:3000API_BASE_URL=http://localhost:4000
# .env.stagingBASE_URL=https://staging.example.comAPI_BASE_URL=https://api-staging.example.com
# .env.production (read-only tests only!)BASE_URL=https://example.comAPI_BASE_URL=https://api.example.comTeam vs Individual
Section titled âTeam vs IndividualâTeam config (committed):
# _bmad/tea/config.yaml.example (committed to repo)project_name: team-projectoutput_folder: _bmad-outputtea_use_playwright_utils: truetea_browser_automation: 'none'tea_execution_mode: 'sequential'Individual config (typically gitignored):
# _bmad/tea/config.yaml (user adds to .gitignore)user_name: John Doeuser_skill_level: experttea_browser_automation: 'auto' # Individual preferencetea_execution_mode: 'auto' # Capability-aware preferenceMonorepo Configuration
Section titled âMonorepo ConfigurationâRoot config:
# _bmad/tea/config.yaml (root)project_name: monorepo-parentoutput_folder: _bmad-outputPackage-specific:
project_name: web-appoutput_folder: ../../_bmad-output/web-apptea_use_playwright_utils: true
# packages/mobile-app/_bmad/tea/config.yamlproject_name: mobile-appoutput_folder: ../../_bmad-output/mobile-apptea_use_playwright_utils: falseConfiguration Best Practices
Section titled âConfiguration Best Practicesâ1. Use Version Control Wisely
Section titled â1. Use Version Control WiselyâCommit:
_bmad/tea/config.yaml.example # Template for team.nvmrc # Node versionpackage.json # DependenciesRecommended for .gitignore:
_bmad/tea/config.yaml # User-specific values.env # Secrets.env.local # Local overrides2. Document Required Setup
Section titled â2. Document Required SetupâIn your README:
## Setup
1. Install BMad
2. Copy config template: cp \_bmad/tea/config.yaml.example \_bmad/tea/config.yaml
3. Edit config with your values: - Set user_name - Enable tea_use_playwright_utils if using playwright-utils - Set tea_browser_automation mode (auto, cli, mcp, or none) - Set tea_execution_mode (auto, subagent, agent-team, or sequential)3. Validate Configuration
Section titled â3. Validate ConfigurationâCheck config is valid:
# Check TEA config is setcat _bmad/tea/config.yaml | grep tea_use
# Verify playwright-utils installed (if enabled)npm list @seontechnologies/playwright-utils
# Verify MCP servers configured (if enabled)# Check your IDE's MCP settings4. Keep Config Minimal
Section titled â4. Keep Config MinimalâDonât over-configure:
# â Bad - overriding everything unnecessarilyproject_name: my-projectuser_name: John Doeuser_skill_level: expertoutput_folder: custom/pathplanning_artifacts: custom/planningimplementation_artifacts: custom/implementationproject_knowledge: custom/docstea_use_playwright_utils: truetea_browser_automation: "auto"tea_execution_mode: "auto"communication_language: englishdocument_output_language: english# Overriding 11 config options when most can use defaults
# â
Good - only essential overridestea_use_playwright_utils: truetea_execution_mode: "auto"output_folder: docs/testing# Only override what differs from defaultsUse defaults when possible - only override what you actually need to change.
Troubleshooting
Section titled âTroubleshootingâConfiguration Not Loaded
Section titled âConfiguration Not LoadedâProblem: TEA doesnât use my config values.
Causes:
- Config file in wrong location
- YAML syntax error
- Typo in config key
Solution:
# Check file existsls -la _bmad/tea/config.yaml
# Validate YAML syntaxnpm install -g js-yamljs-yaml _bmad/tea/config.yaml
# Check for typos (compare to module.yaml)diff _bmad/tea/config.yaml src/module.yamlPlaywright Utils Not Working
Section titled âPlaywright Utils Not WorkingâProblem: tea_use_playwright_utils: true but TEA doesnât use utilities.
Causes:
- Package not installed
- Config file not saved
- Workflow run before config update
Solution:
# Verify package installednpm list @seontechnologies/playwright-utils
# Check config valuegrep tea_use_playwright_utils _bmad/tea/config.yaml
# Re-run workflow in fresh chat# (TEA loads config at workflow start)Browser Automation Not Working
Section titled âBrowser Automation Not WorkingâProblem: tea_browser_automation set to "auto" or "cli" or "mcp" but no browser opens.
Causes:
- CLI not installed globally (for
cliorautomode) - MCP servers not configured in IDE (for
mcporautomode) - Browser binaries missing
Solution:
# For CLI mode: verify CLI is installedplaywright-cli --version
# For MCP mode: check MCP package availablenpx @playwright/mcp@latest --version
# Install browsersnpx playwright install
# Verify IDE MCP config (for MCP mode)# Check ~/.cursor/config.json or VS Code settingsConfig Changes Not Applied
Section titled âConfig Changes Not AppliedâProblem: Updated config but TEA still uses old values.
Cause: TEA loads config at workflow start.
Solution:
- Save
_bmad/tea/config.yaml - Start fresh chat
- Run TEA workflow
- Config will be reloaded
TEA doesnât reload config mid-chat - always start fresh chat after config changes.
Configuration Examples
Section titled âConfiguration ExamplesâRecommended Setup (Full Stack)
Section titled âRecommended Setup (Full Stack)âproject_name: my-projectuser_skill_level: beginner # or intermediate/expertoutput_folder: _bmad-outputtea_use_playwright_utils: true # Recommendedtea_use_pactjs_utils: true # Recommended - production-ready contract testing utilitiestea_pact_mcp: 'mcp' # Recommended - SmartBear MCP for PactFlow/Broker interactiontea_browser_automation: 'auto' # Recommendedtea_execution_mode: 'auto' # Recommended - capability-aware mode selectiontea_capability_probe: true # Recommended - fallback safely if mode unsupportedWhy recommended:
- Playwright Utils: Production-ready fixtures and utilities
- Pact.js Utils: Optional contract-testing acceleration for backend/fullstack services
- Browser automation (auto): Smart CLI/MCP selection with fallback
- Together: The three-part stack (see Testing as Engineering)
Prerequisites:
npm install -D @seontechnologies/playwright-utils# Optional contract-testing stack:# npm install -D @seontechnologies/pactjs-utils @pact-foundation/pact# npm install -g @smartbear/mcpnpm install -g @playwright/cli@latest # For CLI mode# Configure MCP servers in IDE (see Configure Browser Automation guide)Best for: Everyone (beginners learn good patterns from day one)
Minimal Setup (Learning Only)
Section titled âMinimal Setup (Learning Only)âproject_name: my-projectoutput_folder: _bmad-outputtea_use_playwright_utils: falsetea_use_pactjs_utils: falsetea_pact_mcp: 'none'tea_browser_automation: 'none'tea_execution_mode: 'sequential'tea_capability_probe: trueBest for:
- First-time TEA users (keep it simple initially)
- Quick experiments
- Learning basics before adding integrations
Note: Can enable integrations later as you learn
Monorepo Setup
Section titled âMonorepo SetupâRoot config:
# _bmad/tea/config.yaml (root)project_name: monorepooutput_folder: _bmad-outputtea_use_playwright_utils: truetea_use_pactjs_utils: truetea_pact_mcp: 'mcp'tea_execution_mode: 'auto'Package configs:
project_name: web-appoutput_folder: ../../_bmad-output/web
# apps/api/_bmad/tea/config.yamlproject_name: api-serviceoutput_folder: ../../_bmad-output/apitea_use_playwright_utils: false # Using vanilla Playwright onlytea_use_pactjs_utils: true # API service uses contract testing utilitiestea_pact_mcp: 'mcp' # Optional broker interaction via MCPtea_execution_mode: 'subagent' # Prefer subagent orchestration in API packageTeam Template
Section titled âTeam TemplateâCommit this template:
# Copy to config.yaml and fill in your values
project_name: your-project-nameuser_name: Your Nameuser_skill_level: intermediate # beginner | intermediate | expertoutput_folder: _bmad-outputplanning_artifacts: _bmad-output/planning-artifactsimplementation_artifacts: _bmad-output/implementation-artifactsproject_knowledge: docs
# TEA Configuration (Recommended: Enable both for full stack)tea_use_playwright_utils: true # Recommended - production-ready utilitiestea_use_pactjs_utils: true # Recommended - production-ready contract testing utilitiestea_pact_mcp: 'mcp' # Recommended - SmartBear MCP for broker integrationtea_browser_automation: 'auto' # Recommended - smart CLI/MCP selectiontea_execution_mode: 'auto' # Recommended - capability-aware team/subagent fallbacktea_capability_probe: true # Recommended - safe fallback
# Languagescommunication_language: englishdocument_output_language: englishTeam instructions:
## Setup for New Team Members
1. Clone repo2. Copy config template: cp \_bmad/tea/config.yaml.example \_bmad/tea/config.yaml3. Edit with your name and preferences4. Install dependencies: npm install5. (Optional) Enable playwright-utils: npm install -D @seontechnologies/playwright-utils Set tea_use_playwright_utils: true6. (Optional) Enable pactjs-utils: npm install -D @seontechnologies/pactjs-utils @pact-foundation/pact Set tea_use_pactjs_utils: true7. (Optional) Enable Pact MCP: npm install -g @smartbear/mcp Set tea_pact_mcp: 'mcp'See Also
Section titled âSee AlsoâHow-To Guides
Section titled âHow-To GuidesâReference
Section titled âReferenceâExplanation
Section titled âExplanationâGenerated with BMad Method - TEA (Test Engineering Architect)