bmad-method-test-architecture-enterprise 1.2.3 → 1.2.6
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/CHANGELOG.md +10 -0
- package/package.json +5 -3
- package/release_notes.md +3 -8
- package/src/workflows/testarch/atdd/workflow.md +1 -1
- package/src/workflows/testarch/atdd/workflow.yaml +1 -4
- package/src/workflows/testarch/automate/workflow.md +1 -1
- package/src/workflows/testarch/automate/workflow.yaml +1 -4
- package/src/workflows/testarch/ci/workflow.md +1 -1
- package/src/workflows/testarch/ci/workflow.yaml +1 -4
- package/src/workflows/testarch/framework/workflow.md +1 -1
- package/src/workflows/testarch/framework/workflow.yaml +1 -4
- package/src/workflows/testarch/nfr-assess/workflow.md +1 -1
- package/src/workflows/testarch/nfr-assess/workflow.yaml +1 -4
- package/src/workflows/testarch/teach-me-testing/workflow.md +1 -1
- package/src/workflows/testarch/test-design/workflow.md +1 -1
- package/src/workflows/testarch/test-design/workflow.yaml +1 -4
- package/src/workflows/testarch/test-review/workflow.md +1 -1
- package/src/workflows/testarch/test-review/workflow.yaml +1 -3
- package/src/workflows/testarch/trace/workflow.md +1 -1
- package/src/workflows/testarch/trace/workflow.yaml +1 -4
- package/tools/validate-tea-workflow-descriptions.js +122 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ All notable changes to the Test Architect (TEA) module will be documented in thi
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.2.4] - 2026-02-22
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **All workflow descriptions optimized** for skill selection and display
|
|
13
|
+
- Descriptions shortened and made more concise for better UI rendering
|
|
14
|
+
- Added explicit trigger phrases (e.g., "Use when user says 'lets write acceptance tests'") to improve skill detection
|
|
15
|
+
- Affected workflows: `atdd`, `automate`, `ci`, `framework`, `nfr-assess`, `teach-me-testing`, `test-design`, `test-review`, `trace`
|
|
16
|
+
- Removed redundant `web_bundle: false` from workflow.yaml files
|
|
17
|
+
|
|
8
18
|
## [Unreleased]
|
|
9
19
|
|
|
10
20
|
### Added
|
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.2.
|
|
4
|
+
"version": "1.2.6",
|
|
5
5
|
"description": "Master Test Architect for quality strategy, test automation, and release gates",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"bmad",
|
|
@@ -38,12 +38,14 @@
|
|
|
38
38
|
"release:major": "gh workflow run manual-release.yaml -f version_bump=major",
|
|
39
39
|
"release:minor": "gh workflow run manual-release.yaml -f version_bump=minor",
|
|
40
40
|
"release:patch": "gh workflow run manual-release.yaml -f version_bump=patch",
|
|
41
|
-
"test": "npm run test:schemas && npm run test:install && npm run test:knowledge && npm run validate:schemas && npm run lint && npm run lint:md && npm run format:check",
|
|
41
|
+
"test": "npm run test:schemas && npm run test:install && npm run test:knowledge && npm run test:tea-workflow-descriptions && npm run validate:schemas && npm run lint && npm run lint:md && npm run format:check",
|
|
42
42
|
"test:coverage": "c8 npm test",
|
|
43
43
|
"test:install": "node test/test-installation-components.js",
|
|
44
44
|
"test:knowledge": "node test/test-knowledge-base.js",
|
|
45
45
|
"test:schemas": "node test/test-agent-schema.js",
|
|
46
|
-
"
|
|
46
|
+
"test:tea-workflow-descriptions": "node tools/validate-tea-workflow-descriptions.js",
|
|
47
|
+
"validate:schemas": "node tools/validate-agent-schema.js",
|
|
48
|
+
"validate:tea-workflow-descriptions": "node tools/validate-tea-workflow-descriptions.js"
|
|
47
49
|
},
|
|
48
50
|
"lint-staged": {
|
|
49
51
|
"*.{js,cjs,mjs}": [
|
package/release_notes.md
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
## 🚀 What's New in v1.2.
|
|
1
|
+
## 🚀 What's New in v1.2.6
|
|
2
2
|
|
|
3
3
|
### 🐛 Bug Fixes
|
|
4
|
-
- fix:
|
|
5
|
-
|
|
6
|
-
### 📦 Other Changes
|
|
7
|
-
- addressed PR comments
|
|
8
|
-
- addressed PR comments2
|
|
9
|
-
- Merge pull request #38 from bmad-code-org/fix/issues-32-33-34-35-35-36-37
|
|
4
|
+
- fix: teach me testing for gemini
|
|
10
5
|
|
|
11
6
|
|
|
12
7
|
## 📦 Installation
|
|
@@ -16,4 +11,4 @@ npx bmad-method install
|
|
|
16
11
|
# Select "Test Architect" from module menu
|
|
17
12
|
```
|
|
18
13
|
|
|
19
|
-
**Full Changelog**: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/compare/v1.2.
|
|
14
|
+
**Full Changelog**: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/compare/v1.2.5...v1.2.6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: testarch-atdd
|
|
3
|
-
description:
|
|
3
|
+
description: Generate failing acceptance tests using TDD cycle. Use when user says 'lets write acceptance tests' or 'I want to do ATDD'
|
|
4
4
|
web_bundle: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Test Architect workflow: atdd
|
|
2
2
|
name: testarch-atdd
|
|
3
|
-
description:
|
|
4
|
-
author: "BMad"
|
|
3
|
+
description: 'Generate failing acceptance tests using TDD cycle. Use when the user says "lets write acceptance tests" or "I want to do ATDD"'
|
|
5
4
|
|
|
6
5
|
# Critical variables from config
|
|
7
6
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -44,5 +43,3 @@ execution_hints:
|
|
|
44
43
|
interactive: false # Minimize prompts
|
|
45
44
|
autonomous: true # Proceed without user input unless blocked
|
|
46
45
|
iterative: true
|
|
47
|
-
|
|
48
|
-
web_bundle: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: testarch-automate
|
|
3
|
-
description:
|
|
3
|
+
description: Expand test automation coverage for codebase. Use when user says 'lets expand test coverage' or 'I want to automate tests'
|
|
4
4
|
web_bundle: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Test Architect workflow: automate
|
|
2
2
|
name: testarch-automate
|
|
3
|
-
description:
|
|
4
|
-
author: "BMad"
|
|
3
|
+
description: 'Expand test automation coverage for codebase. Use when the user says "lets expand test coverage" or "I want to automate tests"'
|
|
5
4
|
|
|
6
5
|
# Critical variables from config
|
|
7
6
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -51,5 +50,3 @@ execution_hints:
|
|
|
51
50
|
interactive: false # Minimize prompts
|
|
52
51
|
autonomous: true # Proceed without user input unless blocked
|
|
53
52
|
iterative: true
|
|
54
|
-
|
|
55
|
-
web_bundle: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: testarch-ci
|
|
3
|
-
description:
|
|
3
|
+
description: Scaffold CI/CD quality pipeline with test execution. Use when user says 'lets setup CI pipeline' or 'I want to create quality gates'
|
|
4
4
|
web_bundle: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Test Architect workflow: ci
|
|
2
2
|
name: testarch-ci
|
|
3
|
-
description:
|
|
4
|
-
author: "BMad"
|
|
3
|
+
description: 'Scaffold CI/CD quality pipeline with test execution. Use when the user says "lets setup CI pipeline" or "I want to create quality gates"'
|
|
5
4
|
|
|
6
5
|
# Critical variables from config
|
|
7
6
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -46,5 +45,3 @@ execution_hints:
|
|
|
46
45
|
interactive: false # Minimize prompts, auto-detect when possible
|
|
47
46
|
autonomous: true # Proceed without user input unless blocked
|
|
48
47
|
iterative: true
|
|
49
|
-
|
|
50
|
-
web_bundle: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: testarch-framework
|
|
3
|
-
description:
|
|
3
|
+
description: Initialize test framework with Playwright or Cypress. Use when user says 'lets setup test framework' or 'I want to initialize testing framework'
|
|
4
4
|
web_bundle: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Test Architect workflow: framework
|
|
2
2
|
name: testarch-framework
|
|
3
|
-
description:
|
|
4
|
-
author: "BMad"
|
|
3
|
+
description: 'Initialize test framework with Playwright or Cypress. Use when the user says "lets setup test framework" or "I want to initialize testing framework"'
|
|
5
4
|
|
|
6
5
|
# Critical variables from config
|
|
7
6
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -46,5 +45,3 @@ execution_hints:
|
|
|
46
45
|
interactive: false # Minimize prompts; auto-detect when possible
|
|
47
46
|
autonomous: true # Proceed without user input unless blocked
|
|
48
47
|
iterative: true
|
|
49
|
-
|
|
50
|
-
web_bundle: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: testarch-nfr
|
|
3
|
-
description:
|
|
3
|
+
description: Assess NFRs like performance security and reliability. Use when user says 'lets assess NFRs' or 'I want to evaluate non-functional requirements'
|
|
4
4
|
web_bundle: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Test Architect workflow: nfr-assess
|
|
2
2
|
name: testarch-nfr
|
|
3
|
-
description:
|
|
4
|
-
author: "BMad"
|
|
3
|
+
description: 'Assess NFRs like performance security and reliability. Use when the user says "lets assess NFRs" or "I want to evaluate non-functional requirements"'
|
|
5
4
|
|
|
6
5
|
# Critical variables from config
|
|
7
6
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -46,5 +45,3 @@ execution_hints:
|
|
|
46
45
|
interactive: false # Minimize prompts
|
|
47
46
|
autonomous: true # Proceed without user input unless blocked
|
|
48
47
|
iterative: true
|
|
49
|
-
|
|
50
|
-
web_bundle: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: teach-me-testing
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Teach testing progressively through structured sessions. Use when user says "lets learn testing" or "I want to study test practices"'
|
|
4
4
|
web_bundle: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Test Architect workflow: test-design
|
|
2
2
|
name: testarch-test-design
|
|
3
|
-
description:
|
|
4
|
-
author: "BMad"
|
|
3
|
+
description: 'Create system-level or epic-level test plans. Use when the user says "lets design test plan" or "I want to create test strategy"'
|
|
5
4
|
|
|
6
5
|
# Critical variables from config
|
|
7
6
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -75,5 +74,3 @@ execution_hints:
|
|
|
75
74
|
interactive: false # Minimize prompts
|
|
76
75
|
autonomous: true # Proceed without user input unless blocked
|
|
77
76
|
iterative: true
|
|
78
|
-
|
|
79
|
-
web_bundle: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: testarch-test-review
|
|
3
|
-
description:
|
|
3
|
+
description: Review test quality using best practices validation. Use when user says 'lets review tests' or 'I want to evaluate test quality'
|
|
4
4
|
web_bundle: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Test Architect workflow: test-review
|
|
2
2
|
name: testarch-test-review
|
|
3
|
-
description:
|
|
4
|
-
author: "BMad"
|
|
3
|
+
description: 'Review test quality using best practices validation. Use when the user says "lets review tests" or "I want to evaluate test quality"'
|
|
5
4
|
|
|
6
5
|
# Critical variables from config
|
|
7
6
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -47,4 +46,3 @@ execution_hints:
|
|
|
47
46
|
autonomous: true # Proceed without user input unless blocked
|
|
48
47
|
iterative: true # Can review multiple files
|
|
49
48
|
|
|
50
|
-
web_bundle: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: testarch-trace
|
|
3
|
-
description:
|
|
3
|
+
description: Generate traceability matrix and quality gate decision. Use when user says 'lets create traceability matrix' or 'I want to analyze test coverage'
|
|
4
4
|
web_bundle: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Test Architect workflow: trace (enhanced with gate decision)
|
|
2
2
|
name: testarch-trace
|
|
3
|
-
description:
|
|
4
|
-
author: "BMad"
|
|
3
|
+
description: 'Generate traceability matrix and quality gate decision. Use when the user says "lets create traceability matrix" or "I want to analyze test coverage"'
|
|
5
4
|
|
|
6
5
|
# Critical variables from config
|
|
7
6
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -54,5 +53,3 @@ execution_hints:
|
|
|
54
53
|
interactive: false # Minimize prompts
|
|
55
54
|
autonomous: true # Proceed without user input unless blocked
|
|
56
55
|
iterative: true
|
|
57
|
-
|
|
58
|
-
web_bundle: false
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate TEA workflow description quote style for Gemini compatibility.
|
|
3
|
+
*
|
|
4
|
+
* Rules for TEA workflow definitions under src/workflows/testarch/<workflow>/workflow.yaml
|
|
5
|
+
* and teach-me-testing frontmatter in src/workflows/testarch/teach-me-testing/workflow.md:
|
|
6
|
+
* - `description:` must be a single-line YAML scalar on one line
|
|
7
|
+
* - the raw YAML scalar must be wrapped in single quotes
|
|
8
|
+
* - parsed description text must not contain single-quote characters
|
|
9
|
+
* (use double quotes for examples, e.g. "quote here")
|
|
10
|
+
*
|
|
11
|
+
* Usage: node tools/validate-tea-workflow-descriptions.js [project_root]
|
|
12
|
+
* Exit codes: 0 = success, 1 = validation failures
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const fs = require('node:fs');
|
|
16
|
+
const path = require('node:path');
|
|
17
|
+
const { glob } = require('glob');
|
|
18
|
+
const yaml = require('yaml');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {string} filePath
|
|
22
|
+
* @param {string} projectRoot
|
|
23
|
+
* @returns {string[]}
|
|
24
|
+
*/
|
|
25
|
+
function validateFile(filePath, projectRoot) {
|
|
26
|
+
const errors = [];
|
|
27
|
+
const relativePath = path.relative(projectRoot, filePath).replaceAll('\\', '/');
|
|
28
|
+
let content;
|
|
29
|
+
try {
|
|
30
|
+
content = fs.readFileSync(filePath, 'utf8');
|
|
31
|
+
} catch (error) {
|
|
32
|
+
return [`${relativePath}: Failed to read file: ${error.message}`];
|
|
33
|
+
}
|
|
34
|
+
let yamlDoc = content;
|
|
35
|
+
if (filePath.endsWith('.md')) {
|
|
36
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---(?:\n|$)/);
|
|
37
|
+
if (!frontmatterMatch) {
|
|
38
|
+
return [`${relativePath}: Missing YAML frontmatter block`];
|
|
39
|
+
}
|
|
40
|
+
yamlDoc = frontmatterMatch[1];
|
|
41
|
+
}
|
|
42
|
+
/** @type {string | undefined} */
|
|
43
|
+
let parsedDescription;
|
|
44
|
+
|
|
45
|
+
try {
|
|
46
|
+
const parsed = yaml.parse(yamlDoc);
|
|
47
|
+
if (!parsed || typeof parsed.description !== 'string') {
|
|
48
|
+
errors.push('YAML parsed but `description` is missing or not a string');
|
|
49
|
+
} else {
|
|
50
|
+
parsedDescription = parsed.description;
|
|
51
|
+
}
|
|
52
|
+
} catch (error) {
|
|
53
|
+
errors.push(`YAML parse error: ${error.message}`);
|
|
54
|
+
return [`${relativePath}: ${errors[0]}`];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const descriptionMatch = yamlDoc.match(/^\s*description:\s*(?:'((?:''|[^'])*)'|"((?:\\"|[^"])*)")\s*(?:#.*)?$/m);
|
|
58
|
+
if (descriptionMatch) {
|
|
59
|
+
const singleQuotedInner = descriptionMatch[1];
|
|
60
|
+
const doubleQuotedInner = descriptionMatch[2];
|
|
61
|
+
const quote = singleQuotedInner === undefined ? '"' : "'";
|
|
62
|
+
|
|
63
|
+
if (quote !== "'") {
|
|
64
|
+
errors.push('`description:` value must be wrapped in single quotes');
|
|
65
|
+
}
|
|
66
|
+
} else {
|
|
67
|
+
if (/^\s*description:\s*/m.test(yamlDoc)) {
|
|
68
|
+
errors.push('`description:` value must be wrapped in single quotes');
|
|
69
|
+
} else {
|
|
70
|
+
errors.push('Missing single-line `description:` field');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (typeof parsedDescription === 'string' && parsedDescription.includes("'")) {
|
|
75
|
+
errors.push('Parsed `description` contains a single quote character; use double quotes for examples');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return errors.map((error) => `${relativePath}: ${error}`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function main(customProjectRoot) {
|
|
82
|
+
const projectRoot = customProjectRoot || path.join(__dirname, '..');
|
|
83
|
+
const yamlFiles = await glob('src/workflows/testarch/*/workflow.yaml', {
|
|
84
|
+
cwd: projectRoot,
|
|
85
|
+
absolute: true,
|
|
86
|
+
});
|
|
87
|
+
const mdFiles = await glob('src/workflows/testarch/teach-me-testing/workflow.md', {
|
|
88
|
+
cwd: projectRoot,
|
|
89
|
+
absolute: true,
|
|
90
|
+
});
|
|
91
|
+
const files = [...yamlFiles, ...mdFiles];
|
|
92
|
+
|
|
93
|
+
if (files.length === 0) {
|
|
94
|
+
console.error('No TEA workflow definitions found under src/workflows/testarch/');
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** @type {string[]} */
|
|
99
|
+
const failures = [];
|
|
100
|
+
|
|
101
|
+
for (const filePath of files.sort()) {
|
|
102
|
+
failures.push(...validateFile(filePath, projectRoot));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (failures.length > 0) {
|
|
106
|
+
console.error('TEA workflow description quote validation failed:\n');
|
|
107
|
+
for (const failure of failures) {
|
|
108
|
+
console.error(`- ${failure}`);
|
|
109
|
+
}
|
|
110
|
+
console.error('\nExpected format example:');
|
|
111
|
+
console.error(`description: 'Generate traceability, example "quote here"'`);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
console.log(`Validated TEA workflow description quoting in ${files.length} file(s).`);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const customProjectRoot = process.argv[2];
|
|
119
|
+
main(customProjectRoot).catch((error) => {
|
|
120
|
+
console.error('Fatal error:', error);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
});
|