bmad-method-test-architecture-enterprise 1.2.5 → 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/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.5",
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",
package/release_notes.md CHANGED
@@ -1,14 +1,7 @@
1
- ## 🚀 What's New in v1.2.5
2
-
3
- ### ✨ New Features
4
- - feat: add gemini support
1
+ ## 🚀 What's New in v1.2.6
5
2
 
6
3
  ### 🐛 Bug Fixes
7
- - fix: addressed PR comment
8
- - fix: addressed PR comment 2
9
-
10
- ### 📦 Other Changes
11
- - Merge pull request #39 from bmad-code-org/feat/gemini-support
4
+ - fix: teach me testing for gemini
12
5
 
13
6
 
14
7
  ## 📦 Installation
@@ -18,4 +11,4 @@ npx bmad-method install
18
11
  # Select "Test Architect" from module menu
19
12
  ```
20
13
 
21
- **Full Changelog**: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/compare/v1.2.4...v1.2.5
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: teach-me-testing
3
- description: Teach testing progressively through structured sessions. Use when user says 'lets learn testing' or 'I want to study test practices'
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,8 @@
1
1
  /**
2
2
  * Validate TEA workflow description quote style for Gemini compatibility.
3
3
  *
4
- * Rules for TEA workflow YAML files under src/workflows/testarch/<workflow>/workflow.yaml:
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:
5
6
  * - `description:` must be a single-line YAML scalar on one line
6
7
  * - the raw YAML scalar must be wrapped in single quotes
7
8
  * - parsed description text must not contain single-quote characters
@@ -30,11 +31,19 @@ function validateFile(filePath, projectRoot) {
30
31
  } catch (error) {
31
32
  return [`${relativePath}: Failed to read file: ${error.message}`];
32
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
+ }
33
42
  /** @type {string | undefined} */
34
43
  let parsedDescription;
35
44
 
36
45
  try {
37
- const parsed = yaml.parse(content);
46
+ const parsed = yaml.parse(yamlDoc);
38
47
  if (!parsed || typeof parsed.description !== 'string') {
39
48
  errors.push('YAML parsed but `description` is missing or not a string');
40
49
  } else {
@@ -45,7 +54,7 @@ function validateFile(filePath, projectRoot) {
45
54
  return [`${relativePath}: ${errors[0]}`];
46
55
  }
47
56
 
48
- const descriptionMatch = content.match(/^\s*description:\s*(?:'((?:''|[^'])*)'|"((?:\\"|[^"])*)")\s*(?:#.*)?$/m);
57
+ const descriptionMatch = yamlDoc.match(/^\s*description:\s*(?:'((?:''|[^'])*)'|"((?:\\"|[^"])*)")\s*(?:#.*)?$/m);
49
58
  if (descriptionMatch) {
50
59
  const singleQuotedInner = descriptionMatch[1];
51
60
  const doubleQuotedInner = descriptionMatch[2];
@@ -55,7 +64,7 @@ function validateFile(filePath, projectRoot) {
55
64
  errors.push('`description:` value must be wrapped in single quotes');
56
65
  }
57
66
  } else {
58
- if (/^\s*description:\s*/m.test(content)) {
67
+ if (/^\s*description:\s*/m.test(yamlDoc)) {
59
68
  errors.push('`description:` value must be wrapped in single quotes');
60
69
  } else {
61
70
  errors.push('Missing single-line `description:` field');
@@ -71,13 +80,18 @@ function validateFile(filePath, projectRoot) {
71
80
 
72
81
  async function main(customProjectRoot) {
73
82
  const projectRoot = customProjectRoot || path.join(__dirname, '..');
74
- const files = await glob('src/workflows/testarch/*/workflow.yaml', {
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', {
75
88
  cwd: projectRoot,
76
89
  absolute: true,
77
90
  });
91
+ const files = [...yamlFiles, ...mdFiles];
78
92
 
79
93
  if (files.length === 0) {
80
- console.error('No TEA workflow YAML files found at src/workflows/testarch/*/workflow.yaml');
94
+ console.error('No TEA workflow definitions found under src/workflows/testarch/');
81
95
  process.exit(1);
82
96
  }
83
97