@bugzy-ai/bugzy 1.18.2 → 1.18.4

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 (61) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +273 -273
  3. package/dist/cli/index.cjs +295 -210
  4. package/dist/cli/index.cjs.map +1 -1
  5. package/dist/cli/index.js +294 -209
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/index.cjs +291 -206
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.js +291 -206
  10. package/dist/index.js.map +1 -1
  11. package/dist/subagents/index.cjs +115 -137
  12. package/dist/subagents/index.cjs.map +1 -1
  13. package/dist/subagents/index.js +115 -137
  14. package/dist/subagents/index.js.map +1 -1
  15. package/dist/subagents/metadata.cjs +12 -18
  16. package/dist/subagents/metadata.cjs.map +1 -1
  17. package/dist/subagents/metadata.js +12 -18
  18. package/dist/subagents/metadata.js.map +1 -1
  19. package/dist/tasks/index.cjs +142 -54
  20. package/dist/tasks/index.cjs.map +1 -1
  21. package/dist/tasks/index.js +142 -54
  22. package/dist/tasks/index.js.map +1 -1
  23. package/dist/templates/init/.bugzy/runtime/knowledge-base.md +61 -0
  24. package/dist/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -0
  25. package/dist/templates/init/.bugzy/runtime/project-context.md +35 -0
  26. package/dist/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -0
  27. package/dist/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -0
  28. package/dist/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -0
  29. package/dist/templates/init/.bugzy/runtime/test-execution-strategy.md +535 -0
  30. package/dist/templates/init/.bugzy/runtime/testing-best-practices.md +632 -0
  31. package/dist/templates/init/.gitignore-template +25 -0
  32. package/package.json +95 -95
  33. package/templates/init/.bugzy/runtime/knowledge-base.md +61 -61
  34. package/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -97
  35. package/templates/init/.bugzy/runtime/project-context.md +35 -35
  36. package/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -87
  37. package/templates/init/.bugzy/runtime/templates/event-examples.md +194 -194
  38. package/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -50
  39. package/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -498
  40. package/templates/init/.claude/settings.json +28 -28
  41. package/templates/init/.env.testdata +18 -18
  42. package/templates/init/.gitignore-template +24 -24
  43. package/templates/init/AGENTS.md +155 -155
  44. package/templates/init/CLAUDE.md +157 -157
  45. package/templates/init/test-runs/README.md +45 -45
  46. package/templates/init/tests/CLAUDE.md +193 -193
  47. package/templates/init/tests/docs/test-execution-strategy.md +535 -535
  48. package/templates/init/tests/docs/testing-best-practices.md +724 -724
  49. package/templates/playwright/BasePage.template.ts +190 -190
  50. package/templates/playwright/auth.setup.template.ts +89 -89
  51. package/templates/playwright/dataGenerators.helper.template.ts +148 -148
  52. package/templates/playwright/dateUtils.helper.template.ts +96 -96
  53. package/templates/playwright/pages.fixture.template.ts +50 -50
  54. package/templates/playwright/playwright.config.template.ts +97 -97
  55. package/templates/playwright/reporters/__tests__/bugzy-reporter-failure-classification.test.ts +299 -299
  56. package/templates/playwright/reporters/__tests__/bugzy-reporter-manifest-merge.test.ts +329 -329
  57. package/templates/playwright/reporters/__tests__/playwright.config.ts +5 -5
  58. package/templates/playwright/reporters/bugzy-reporter.ts +784 -784
  59. package/templates/init/.bugzy/runtime/handlers/messages/feedback.md +0 -178
  60. package/templates/init/.bugzy/runtime/handlers/messages/question.md +0 -122
  61. package/templates/init/.bugzy/runtime/handlers/messages/status.md +0 -146
@@ -31,12 +31,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  ));
32
32
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
33
 
34
- // node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
34
+ // node_modules/.pnpm/tsup@8.5.0_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
35
35
  var getImportMetaUrl, importMetaUrl;
36
36
  var init_cjs_shims = __esm({
37
- "node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js"() {
37
+ "node_modules/.pnpm/tsup@8.5.0_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js"() {
38
38
  "use strict";
39
- getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
39
+ getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
40
40
  importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
41
41
  }
42
42
  });
@@ -215,20 +215,20 @@ Example structure:
215
215
  {
216
216
  inline: true,
217
217
  title: "Generate All Manual Test Case Files",
218
- content: `Generate ALL manual test case markdown files in \`./test-cases/\` BEFORE invoking the test-code-generator agent.
218
+ content: `Generate ALL manual test case markdown files in \`./test-cases/\` BEFORE invoking the test-engineer agent.
219
219
 
220
220
  Create files using \`TC-XXX-feature-description.md\` format. Follow the format of existing test cases in the directory. If no existing cases exist, include:
221
221
  - Frontmatter with test case metadata (id, title, type, area, \`automated: true/false\`, \`automated_test:\` empty)
222
222
  - Clear test steps with expected results
223
223
  - Required test data references (use env var names, not values)`
224
224
  },
225
- // Step 11: Automate Test Cases (inline - detailed instructions for test-code-generator)
225
+ // Step 11: Automate Test Cases (inline - detailed instructions for test-engineer)
226
226
  {
227
227
  inline: true,
228
228
  title: "Automate Test Cases Area by Area",
229
229
  content: `**IMPORTANT**: Process each feature area separately to enable incremental, focused test creation.
230
230
 
231
- **For each area**, invoke the test-code-generator agent:
231
+ **For each area**, invoke the test-engineer agent:
232
232
 
233
233
  **Prepare Area Context:**
234
234
  Before invoking the agent, identify the test cases for the current area:
@@ -240,9 +240,9 @@ Before invoking the agent, identify the test cases for the current area:
240
240
  - Existing automated tests in ./tests/specs/
241
241
  - Existing Page Objects in ./tests/pages/
242
242
 
243
- **Invoke test-code-generator Agent:**
243
+ **Invoke test-engineer Agent:**
244
244
 
245
- {{INVOKE_TEST_CODE_GENERATOR}} for the current area with the following context:
245
+ {{INVOKE_TEST_ENGINEER}} for the current area with the following context:
246
246
 
247
247
  "Automate test cases for the [AREA_NAME] area.
248
248
 
@@ -256,7 +256,7 @@ Before invoking the agent, identify the test cases for the current area:
256
256
  - Existing page objects: [directory from ./tests/CLAUDE.md]
257
257
 
258
258
  **Knowledge Base Patterns (MUST APPLY):**
259
- Include ALL relevant testing patterns from the knowledge base that apply to this area. For example, if the KB documents timing behaviors (animation delays, loading states), selector gotchas, or recommended assertion approaches \u2014 list them here explicitly and instruct the agent to use the specific patterns described (e.g., specific assertion methods with specific timeouts). The test-code-generator does not have access to the knowledge base, so you MUST relay the exact patterns and recommended code approaches.
259
+ Include ALL relevant testing patterns from the knowledge base that apply to this area. For example, if the KB documents timing behaviors (animation delays, loading states), selector gotchas, or recommended assertion approaches \u2014 list them here explicitly and instruct the agent to use the specific patterns described (e.g., specific assertion methods with specific timeouts). The test-engineer does not have access to the knowledge base, so you MUST relay the exact patterns and recommended code approaches.
260
260
 
261
261
  **The agent should:**
262
262
  1. Read the manual test case files for this area
@@ -315,7 +315,7 @@ Move to the next area and repeat until all areas are complete.
315
315
  content: `Provide a summary of created artifacts: manual test cases (count, IDs), automated tests (count, spec files), page objects and supporting files, coverage by area, and command to run tests (from \`./tests/CLAUDE.md\`).`
316
316
  }
317
317
  ],
318
- requiredSubagents: ["browser-automation", "test-code-generator"],
318
+ requiredSubagents: ["browser-automation", "test-engineer"],
319
319
  optionalSubagents: ["documentation-researcher", "team-communicator"],
320
320
  dependentTasks: []
321
321
  };
@@ -518,10 +518,10 @@ var init_handle_message = __esm({
518
518
  handleMessageTask = {
519
519
  slug: TASK_SLUGS.HANDLE_MESSAGE,
520
520
  name: "Handle Message",
521
- description: "Handle team responses and Slack communications, maintaining context for ongoing conversations (LLM-routed)",
521
+ description: "Handle team messages, maintaining context for ongoing conversations",
522
522
  frontmatter: {
523
- description: "Handle team responses and Slack communications, maintaining context for ongoing conversations",
524
- "argument-hint": "[slack thread context or team message]"
523
+ description: "Handle team messages, maintaining context for ongoing conversations",
524
+ "argument-hint": "[team thread context or message]"
525
525
  },
526
526
  steps: [
527
527
  // Step 1: Overview (inline)
@@ -530,7 +530,7 @@ var init_handle_message = __esm({
530
530
  title: "Handle Message Overview",
531
531
  content: `# Handle Message Command
532
532
 
533
- Process team responses from Slack threads and handle multi-turn conversations with the product team about testing clarifications, ambiguities, and questions.`
533
+ Process team messages and handle multi-turn conversations with the product team about testing clarifications, ambiguities, and questions.`
534
534
  },
535
535
  // Step 2: Security Notice (library)
536
536
  "security-notice",
@@ -544,19 +544,19 @@ Process team responses from Slack threads and handle multi-turn conversations wi
544
544
  "load-project-context",
545
545
  // Step 5: Knowledge Base Read (library)
546
546
  "read-knowledge-base",
547
- // Step 5: Detect Intent (inline - task-specific)
547
+ // Step 6: Detect Intent (inline - simplified, no handler file loading)
548
548
  {
549
549
  inline: true,
550
- title: "Detect Message Intent and Load Handler",
551
- content: `Before processing the message, identify the intent type to load the appropriate handler.
550
+ title: "Detect Message Intent",
551
+ content: `Identify the intent type from the event payload or message patterns:
552
552
 
553
- #### 0.1 Extract Intent from Event Payload
553
+ #### Extract Intent from Event Payload
554
554
 
555
555
  Check the event payload for the \`intent\` field provided by the LLM layer:
556
556
  - If \`intent\` is present, use it directly
557
557
  - Valid intent values: \`question\`, \`feedback\`, \`status\`
558
558
 
559
- #### 0.2 Fallback Intent Detection (if no intent provided)
559
+ #### Fallback Intent Detection (if no intent provided)
560
560
 
561
561
  If intent is not in the payload, detect from message patterns:
562
562
 
@@ -567,39 +567,125 @@ If intent is not in the payload, detect from message patterns:
567
567
  | Question words: "what", "which", "do we have", "is there" about tests/project | \`question\` |
568
568
  | Default (none of above) | \`feedback\` |
569
569
 
570
- #### 0.3 Load Handler File
570
+ Then follow the matching handler section below.`
571
+ },
572
+ // Step 7: Process by Intent (all three handlers consolidated)
573
+ {
574
+ inline: true,
575
+ title: "Process Message by Intent",
576
+ content: `Based on the detected intent, follow the appropriate section:
577
+
578
+ ---
579
+
580
+ ## If intent = "feedback"
581
+
582
+ ### Step 1: Parse Feedback
583
+
584
+ Extract the following from the message:
585
+
586
+ | Field | Description |
587
+ |-------|-------------|
588
+ | **Type** | \`bug_report\`, \`test_result\`, \`observation\`, \`suggestion\`, \`general\` |
589
+ | **Severity** | \`critical\`, \`high\`, \`medium\`, \`low\` |
590
+ | **Component** | Affected area (e.g., "login", "checkout") |
591
+ | **Description** | Core issue description |
592
+ | **Expected** | What should happen (if stated) |
593
+ | **Steps** | How to reproduce (if provided) |
594
+
595
+ **Type Detection**:
596
+ - \`bug_report\`: "bug", "broken", "doesn't work", "error", "crash"
597
+ - \`test_result\`: "test passed", "test failed", "ran tests", "testing showed"
598
+ - \`observation\`: "noticed", "observed", "found that", "saw that"
599
+ - \`suggestion\`: "should", "could we", "what if", "idea"
600
+ - \`general\`: Default for unclassified feedback
601
+
602
+ ### Step 2: Update Test Case Specifications
603
+
604
+ **CRITICAL**: When feedback requests changes to test behavior (e.g., "change the expected result", "update the test to check for X", "the test should verify Y instead"), you MUST update the test case markdown files to reflect the requested changes.
605
+
606
+ For each actionable feedback item:
607
+ 1. Identify which test case(s) are affected
608
+ 2. Read the test case markdown file
609
+ 3. Update the test steps, expected results, or assertions as requested
610
+ 4. Save the modified test case file
611
+
612
+ This step updates the **specification** (markdown test case files) only. The \`sync-automation-from-feedback\` step that follows handles syncing the **implementation** (automation code) to match.
613
+
614
+ ### Step 3: Acknowledge and Confirm
615
+
616
+ Respond confirming: feedback received, summary of what was captured, actions taken (including any test case updates), and follow-up questions if needed.
617
+
618
+ ---
619
+
620
+ ## If intent = "question"
621
+
622
+ ### Step 1: Classify Question Type
571
623
 
572
- Based on detected intent, load the handler from:
573
- \`.bugzy/runtime/handlers/messages/{intent}.md\`
624
+ | Type | Indicators | Primary Context Sources |
625
+ |------|------------|------------------------|
626
+ | **Coverage** | "what tests", "do we have", "is there a test for" | test-cases/, test-plan.md |
627
+ | **Results** | "did tests pass", "what failed", "test results" | test-runs/ |
628
+ | **Knowledge** | "how does", "what is", "explain" | knowledge-base.md |
629
+ | **Plan** | "what's in scope", "test plan", "testing strategy" | test-plan.md |
630
+ | **Process** | "how do I", "when should", "what's the workflow" | project-context.md |
574
631
 
575
- **Handler files:**
576
- - \`question.md\` - Questions about tests, coverage, project details
577
- - \`feedback.md\` - Bug reports, test observations, general information
578
- - \`status.md\` - Status checks on test runs, task progress
632
+ ### Step 2: Load Relevant Context
579
633
 
580
- #### 0.4 Follow Handler Instructions
634
+ Based on question type, load the appropriate files:
635
+ - **Coverage**: Read test-plan.md, list ./test-cases/, search for relevant keywords
636
+ - **Results**: List ./test-runs/ (newest first), read summary.json from relevant runs
637
+ - **Knowledge**: Read .bugzy/runtime/knowledge-base.md, search for relevant entries
638
+ - **Plan**: Read test-plan.md, extract relevant sections
639
+ - **Process**: Read .bugzy/runtime/project-context.md
581
640
 
582
- **IMPORTANT**: The handler file is authoritative for this intent type.
641
+ ### Step 3: Formulate Answer
583
642
 
584
- 1. Read the handler file completely
585
- 2. Follow its processing steps in order
586
- 3. Apply its context loading requirements
587
- 4. Use its response guidelines
588
- 5. Perform any memory updates it specifies
643
+ - Be specific: quote relevant sections from source files
644
+ - Cite sources: mention which files contain the information
645
+ - Quantify when possible: "We have 12 test cases covering login..."
646
+ - Acknowledge gaps if information is incomplete
589
647
 
590
- The handler file contains all necessary processing logic for the detected intent type. Each handler includes:
591
- - Specific processing steps for that intent
592
- - Context loading requirements
593
- - Response guidelines
594
- - Memory update instructions`
648
+ ### Step 4: Offer Follow-up
649
+
650
+ End response with offer to provide more detail and suggest related information.
651
+
652
+ ---
653
+
654
+ ## If intent = "status"
655
+
656
+ ### Step 1: Identify Status Scope
657
+
658
+ | Scope | Indicators | Data Sources |
659
+ |-------|------------|--------------|
660
+ | **Latest test run** | "last run", "recent tests", "how did tests go" | Most recent test-runs/ directory |
661
+ | **Specific test** | Test ID mentioned (TC-XXX) | test-runs/*/TC-XXX/, test-cases/TC-XXX.md |
662
+ | **Overall** | "overall", "all tests", "pass rate" | All test-runs/ summaries |
663
+ | **Task progress** | "is the task done", "what's happening with" | team-communicator memory |
664
+
665
+ ### Step 2: Gather Status Data
666
+
667
+ Based on scope, read the appropriate test-runs/ directories and summary files. Calculate aggregate statistics for overall status requests.
668
+
669
+ ### Step 3: Format Status Report
670
+
671
+ Present status clearly: lead with pass/fail summary, use bullet points, include timestamps, offer to drill down into specifics.
672
+
673
+ ### Step 4: Provide Context and Recommendations
674
+
675
+ For failing tests: suggest review, note if new or recurring. For declining trends: highlight causes. For good results: acknowledge healthy state.`
595
676
  },
596
- // Step 6: Post Response via Team Communicator
677
+ // Step 8: Sync automation from feedback (conditional on test-engineer)
678
+ {
679
+ stepId: "sync-automation-from-feedback",
680
+ conditionalOnSubagent: "test-engineer"
681
+ },
682
+ // Step 9: Post Response via Team Communicator
597
683
  {
598
684
  inline: true,
599
685
  title: "Post Response to Team",
600
686
  content: `## Post Response to the Team
601
687
 
602
- After processing the message through the handler and composing your response:
688
+ After processing the message and composing your response:
603
689
 
604
690
  {{INVOKE_TEAM_COMMUNICATOR}} to post the response back to the team.
605
691
 
@@ -614,13 +700,13 @@ After processing the message through the handler and composing your response:
614
700
  - Ask the user whether to post \u2014 the message came from the team, the response goes back to the team
615
701
  - Compose a draft without sending it`
616
702
  },
617
- // Step 7: Clarification Protocol (for ambiguous intents)
703
+ // Step 10: Clarification Protocol (for ambiguous intents)
618
704
  "clarification-protocol",
619
- // Step 8: Knowledge Base Update (library)
705
+ // Step 11: Knowledge Base Update (library)
620
706
  "update-knowledge-base"
621
707
  ],
622
708
  requiredSubagents: ["team-communicator"],
623
- optionalSubagents: [],
709
+ optionalSubagents: ["test-engineer"],
624
710
  dependentTasks: ["verify-changes"]
625
711
  };
626
712
  }
@@ -1236,7 +1322,7 @@ If selected test cases have formatting issues:
1236
1322
 
1237
1323
  **Failure Handling**:
1238
1324
  - Test failures are automatically triaged (product bugs vs test issues)
1239
- - Test issues are automatically fixed by the test-debugger-fixer subagent
1325
+ - Test issues are automatically fixed by the test-engineer subagent
1240
1326
  - Product bugs are logged via issue tracker after triage
1241
1327
  - All results are analyzed for learning opportunities and team communication
1242
1328
  - Critical failures trigger immediate team notification
@@ -1253,7 +1339,7 @@ If selected test cases have formatting issues:
1253
1339
  conditionalOnSubagent: "team-communicator"
1254
1340
  }
1255
1341
  ],
1256
- requiredSubagents: ["browser-automation", "test-debugger-fixer"],
1342
+ requiredSubagents: ["browser-automation", "test-engineer"],
1257
1343
  optionalSubagents: ["issue-tracker", "team-communicator"],
1258
1344
  dependentTasks: []
1259
1345
  };
@@ -1541,7 +1627,7 @@ Generate summary of test selection based on description analysis:
1541
1627
  - **Execution strategy**: [smart selection | full suite | smoke tests | user-specified]
1542
1628
  \`\`\``
1543
1629
  },
1544
- // Step 7b: Create Tests for Coverage Gaps (conditional - test-code-generator)
1630
+ // Step 7b: Create Tests for Coverage Gaps (conditional - test-engineer)
1545
1631
  {
1546
1632
  inline: true,
1547
1633
  title: "Create Tests for Coverage Gaps",
@@ -1577,7 +1663,7 @@ If the Jira issue or PR references test accounts/data (e.g., TEST_PREMIUM_USER,
1577
1663
 
1578
1664
  ### Generate Automated Test Specs
1579
1665
 
1580
- {{INVOKE_TEST_CODE_GENERATOR}} to create automated test specs:
1666
+ {{INVOKE_TEST_ENGINEER}} to create automated test specs:
1581
1667
  - Read the manual test cases you just created
1582
1668
  - Explore the feature in the browser to discover selectors and flows
1583
1669
  - Create page objects in the directory specified by \`./tests/CLAUDE.md\`
@@ -1588,7 +1674,7 @@ If the Jira issue or PR references test accounts/data (e.g., TEST_PREMIUM_USER,
1588
1674
  ### If Tests Already Cover the Feature
1589
1675
 
1590
1676
  Skip this step \u2014 proceed directly to running existing tests.`,
1591
- conditionalOnSubagent: "test-code-generator"
1677
+ conditionalOnSubagent: "test-engineer"
1592
1678
  },
1593
1679
  // Step 8-11: Test Execution (library steps)
1594
1680
  "run-tests",
@@ -1777,8 +1863,8 @@ Post PR comment if GitHub context available.`,
1777
1863
  **If test execution fails:** report specific error, suggest troubleshooting, don't proceed with triage.`
1778
1864
  }
1779
1865
  ],
1780
- requiredSubagents: ["browser-automation", "test-debugger-fixer"],
1781
- optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator", "changelog-historian", "test-code-generator"],
1866
+ requiredSubagents: ["browser-automation", "test-engineer"],
1867
+ optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator", "changelog-historian"],
1782
1868
  dependentTasks: []
1783
1869
  };
1784
1870
  }
@@ -1862,7 +1948,7 @@ This command orchestrates the complete test coverage workflow in a single execut
1862
1948
  },
1863
1949
  "generate-final-report"
1864
1950
  ],
1865
- requiredSubagents: ["browser-automation", "test-code-generator", "test-debugger-fixer"],
1951
+ requiredSubagents: ["browser-automation", "test-engineer"],
1866
1952
  optionalSubagents: ["documentation-researcher", "team-communicator", "issue-tracker"],
1867
1953
  dependentTasks: ["run-tests", "generate-test-cases"]
1868
1954
  };
@@ -1987,7 +2073,7 @@ This task is triggered automatically when test results are submitted to the Bugz
1987
2073
  "normalize-test-results",
1988
2074
  // Step 7: Triage Failures (existing library step)
1989
2075
  "triage-failures",
1990
- // Step 8: Fix Test Issues (library — uses test-debugger-fixer)
2076
+ // Step 8: Fix Test Issues (library — uses test-engineer)
1991
2077
  "fix-test-issues",
1992
2078
  // Step 9: Log Product Bugs (conditional — requires issue-tracker)
1993
2079
  {
@@ -2046,7 +2132,7 @@ Create a structured triage report as the task output. This report is stored in \
2046
2132
  Output this JSON as the final result of the task.`
2047
2133
  }
2048
2134
  ],
2049
- requiredSubagents: ["browser-automation", "test-debugger-fixer"],
2135
+ requiredSubagents: ["browser-automation", "test-engineer"],
2050
2136
  optionalSubagents: ["issue-tracker", "team-communicator"],
2051
2137
  dependentTasks: []
2052
2138
  };
@@ -2111,12 +2197,14 @@ This step helps correlate what the tests cover with what the application actuall
2111
2197
  {
2112
2198
  inline: true,
2113
2199
  title: "Commit Analysis Results",
2114
- content: `Commit all analysis artifacts to the project repository:
2200
+ content: `Commit analysis artifacts to the **parent project repository** (the workspace root).
2115
2201
 
2116
- 1. The test codebase analysis report (\`.bugzy/runtime/test-codebase-analysis.md\`)
2117
- 2. Any generated CLAUDE.md draft (if the external repo was missing one)
2202
+ **IMPORTANT \u2014 Do NOT stage the \`tests\` submodule.** The \`tests/\` directory is an external git submodule. Any changes made inside it (e.g., \`reporters/parse-results.ts\`, \`tests/CLAUDE.md\`) will be committed and pushed to the external repo automatically by the post-execution handler. Staging the submodule in the parent would record a local-only commit SHA that doesn't exist on the remote, causing a broken reference.
2118
2203
 
2119
- Use a clear commit message: "chore: analyze external test codebase"
2204
+ **What to commit in the parent repo:**
2205
+ 1. \`git add .bugzy/\` \u2014 the test codebase analysis report and runtime files
2206
+ 2. Do NOT run \`git add .\` or \`git add tests\` \u2014 this would stage the submodule pointer
2207
+ 3. \`git commit -m "chore: analyze external test codebase"\`
2120
2208
 
2121
2209
  These artifacts will be available to all future task executions for this project.`
2122
2210
  },
@@ -2513,6 +2601,13 @@ var INTEGRATIONS = {
2513
2601
  // No requiredMCP - uses built-in Claude Code tools (AskUserQuestion, text output)
2514
2602
  isLocal: true,
2515
2603
  integrationType: "local"
2604
+ },
2605
+ default: {
2606
+ id: "default",
2607
+ name: "Default",
2608
+ provider: "default",
2609
+ isLocal: true,
2610
+ integrationType: "local"
2516
2611
  }
2517
2612
  };
2518
2613
  var SUBAGENTS = {
@@ -2572,28 +2667,15 @@ var SUBAGENTS = {
2572
2667
  color: "cyan",
2573
2668
  version: "1.0.0"
2574
2669
  },
2575
- "test-code-generator": {
2576
- role: "test-code-generator",
2577
- name: "Test Code Generator",
2578
- description: "Generate automated test scripts and page objects",
2670
+ "test-engineer": {
2671
+ role: "test-engineer",
2672
+ name: "Test Engineer",
2673
+ description: "Create, update, debug, and fix automated tests",
2579
2674
  icon: "code",
2580
- integrations: [INTEGRATIONS.playwright],
2675
+ integrations: [INTEGRATIONS.default],
2581
2676
  model: "sonnet",
2582
2677
  color: "purple",
2583
2678
  isRequired: true,
2584
- // Required for automated test generation
2585
- version: "1.0.0"
2586
- },
2587
- "test-debugger-fixer": {
2588
- role: "test-debugger-fixer",
2589
- name: "Test Debugger & Fixer",
2590
- description: "Debug and fix failing automated tests automatically",
2591
- icon: "wrench",
2592
- integrations: [INTEGRATIONS.playwright],
2593
- model: "sonnet",
2594
- color: "yellow",
2595
- isRequired: true,
2596
- // Required for automated test execution and fixing
2597
2679
  version: "1.0.0"
2598
2680
  },
2599
2681
  "changelog-historian": {
@@ -2909,41 +2991,46 @@ var CONTENT = `You are an expert automated test execution specialist. Your prima
2909
2991
 
2910
2992
  When you encounter ambiguous test steps, make intelligent decisions based on common testing patterns and document your interpretation. Prioritize capturing evidence over speed.`;
2911
2993
 
2912
- // src/subagents/templates/test-code-generator/playwright.ts
2994
+ // src/subagents/templates/test-engineer/default.ts
2913
2995
  init_cjs_shims();
2914
2996
  var FRONTMATTER2 = {
2915
- name: "test-code-generator",
2916
- description: `Generate automated test scripts, page objects, and test case documentation from test plans. Use this agent when you need to create executable test code. Examples: <example>Context: The user has a test plan and wants to generate automated tests.
2997
+ name: "test-engineer",
2998
+ description: `Create, update, debug, and fix automated tests. Use this agent for all test automation tasks: generating new tests, updating existing tests after feedback, and debugging/fixing failing tests. Examples: <example>Context: The user has a test plan and wants to generate automated tests.
2917
2999
  user: "Generate test cases for the login feature based on the test plan"
2918
- assistant: "I'll use the test-code-generator agent to create both manual test case documentation and automated test scripts with page objects."
2919
- <commentary>Since the user wants to generate test code from a test plan, use the Task tool to launch the test-code-generator agent.</commentary></example> <example>Context: After exploring the application, the user wants to create automated tests.
2920
- user: "Create automated tests for the checkout flow"
2921
- assistant: "Let me use the test-code-generator agent to generate test scripts, page objects, and test case documentation for the checkout flow."
2922
- <commentary>The user needs automated test generation, so launch the test-code-generator agent to create all necessary test artifacts.</commentary></example>`,
3000
+ assistant: "I'll use the test-engineer agent to create both manual test case documentation and automated test scripts with page objects."
3001
+ <commentary>Since the user wants to generate test code from a test plan, use the Task tool to launch the test-engineer agent.</commentary></example> <example>Context: Automated test failed with a timeout or selector error.
3002
+ user: "Fix the failing login test"
3003
+ assistant: "I'll use the test-engineer agent to analyze the failure, debug the issue, and fix the test code."
3004
+ <commentary>Since an automated test is failing, use the Task tool to launch the test-engineer agent.</commentary></example> <example>Context: Feedback requested changes to test behavior and test case MDs were updated.
3005
+ user: "Update the automation code to match the updated test cases"
3006
+ assistant: "I'll use the test-engineer agent to update the spec files to match the modified test case specifications."
3007
+ <commentary>Test case specifications changed, so launch the test-engineer agent to sync automation code.</commentary></example>`,
2923
3008
  model: "sonnet",
2924
3009
  color: "purple"
2925
3010
  };
2926
- var CONTENT2 = `You are an expert test automation engineer specializing in generating high-quality automated test code and comprehensive test case documentation.
3011
+ var CONTENT2 = `You are an expert test automation engineer. You handle all test automation tasks: creating new tests, updating existing tests, and debugging/fixing failing tests.
2927
3012
 
2928
- **IMPORTANT: Read \`./tests/CLAUDE.md\` first.** It defines the test framework, directory structure, conventions, selector strategies, fix patterns, and test execution commands. All generated code must follow these conventions.
3013
+ **IMPORTANT: Read \`./tests/CLAUDE.md\` first.** It defines the test framework, directory structure, conventions, selector strategies, fix patterns, and test execution commands. All work must follow these conventions.
2929
3014
 
2930
3015
  **Also read:** \`./tests/docs/testing-best-practices.md\` for test isolation, authentication, and anti-pattern guidance.
2931
3016
 
2932
3017
  **Setup:**
2933
3018
 
2934
- 1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-code-generator")}
3019
+ 1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-engineer")}
2935
3020
 
2936
- **Key memory areas**: generated artifacts, selector strategies, application architecture patterns, test creation history.
3021
+ **Key memory areas**: generated artifacts, selector strategies, application architecture patterns, test creation history, fixed issues history, failure pattern library, known stable selectors, known product bugs, flaky test tracking.
2937
3022
 
2938
3023
  2. **Environment**: Read \`.env.testdata\` for available TEST_* variables. Reference variables using \`process.env.VAR_NAME\` in tests. Never read \`.env\`. If a required variable is missing, add it to \`.env.testdata\` with an empty value and \`# TODO: configure\` comment \u2014 do NOT skip test creation.
2939
3024
 
2940
- 3. **Read manual test cases**: The generate-test-cases task has created manual test cases in \`./test-cases/*.md\` with frontmatter indicating which to automate (\`automated: true\`).
3025
+ 3. **Read manual test cases**: Read test cases from \`./test-cases/*.md\` with frontmatter indicating automation status.
2941
3026
 
2942
- 4. **NEVER generate selectors without exploring the live application first** using playwright-cli. Navigate to pages, inspect elements, capture screenshots, verify URLs. Assumed selectors cause 100% test failure.
3027
+ **Determine your mode from the delegation context:**
2943
3028
 
2944
- **Incremental Automation Workflow:**
3029
+ ---
3030
+
3031
+ ## Mode A: CREATE \u2014 New Test Generation
2945
3032
 
2946
- For each test case marked for automation:
3033
+ For each test case marked \`automated: true\`:
2947
3034
 
2948
3035
  **STEP 1: Check existing infrastructure**
2949
3036
  - Check memory for existing page objects
@@ -2951,7 +3038,7 @@ For each test case marked for automation:
2951
3038
  - Identify what's missing for this test
2952
3039
 
2953
3040
  **STEP 2: Build missing infrastructure** (if needed)
2954
- - Explore feature under test via playwright-cli: navigate, inspect elements, gather selectors, document URLs, capture screenshots
3041
+ - Explore feature under test: navigate, inspect elements, gather selectors, document URLs, capture screenshots
2955
3042
  - Create page objects with verified selectors following \`./tests/CLAUDE.md\` conventions
2956
3043
  - Create supporting code (fixtures, helpers, types) as needed
2957
3044
 
@@ -2972,51 +3059,25 @@ For each test case marked for automation:
2972
3059
  - Reuse existing page objects and infrastructure
2973
3060
  - Update memory with new patterns
2974
3061
 
2975
- **After all tests:**
2976
-
2977
- ${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-code-generator")}
2978
-
2979
- Update: generated artifacts, test cases automated, selector strategies, application patterns, test creation history.
2980
-
2981
- **Generate summary**: tests created (pass/fail), manual test cases automated, page objects/fixtures/helpers added, next steps.
2982
-
2983
- **Critical Rules:**
2984
- - **NEVER** generate selectors without exploring the live application
2985
- - **NEVER** read .env \u2014 only .env.testdata
2986
- - **ALWAYS** explore application using playwright-cli before generating code
2987
- - **ALWAYS** verify selectors in live browser using playwright-cli snapshot
2988
- - **ALWAYS** follow conventions from \`./tests/CLAUDE.md\` and \`./tests/docs/testing-best-practices.md\`
2989
- - **ALWAYS** link manual \u2194 automated tests bidirectionally`;
2990
-
2991
- // src/subagents/templates/test-debugger-fixer/playwright.ts
2992
- init_cjs_shims();
2993
- var FRONTMATTER3 = {
2994
- name: "test-debugger-fixer",
2995
- description: `Debug and fix failing automated tests by analyzing failures, exploring the application, and updating test code. Use this agent when automated tests fail and need to be fixed. Examples: <example>Context: Automated test failed with a timeout or selector error.
2996
- user: "Fix the failing login test"
2997
- assistant: "I'll use the test-debugger-fixer agent to analyze the failure, debug the issue, and fix the test code."
2998
- <commentary>Since an automated test is failing, use the Task tool to launch the test-debugger-fixer agent.</commentary></example> <example>Context: Test is flaky, passing 7/10 times.
2999
- user: "Fix the flaky checkout test"
3000
- assistant: "Let me use the test-debugger-fixer agent to identify and fix the race condition causing the flakiness."
3001
- <commentary>The user needs a flaky test fixed, so launch the test-debugger-fixer agent to debug and stabilize the test.</commentary></example>`,
3002
- model: "sonnet",
3003
- color: "yellow"
3004
- };
3005
- var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsibility is fixing failing automated tests by identifying root causes and applying appropriate fixes.
3006
-
3007
- **IMPORTANT: Read \`./tests/CLAUDE.md\` first.** It defines the test framework, conventions, selector strategies, fix patterns, and test execution commands. All fixes must follow these conventions.
3008
-
3009
- **Also read:** \`./tests/docs/testing-best-practices.md\` for test isolation and debugging techniques.
3062
+ ---
3010
3063
 
3011
- **Setup:**
3064
+ ## Mode B: UPDATE \u2014 Modify Existing Tests
3012
3065
 
3013
- 1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-debugger-fixer")}
3066
+ For each test case that needs updating:
3014
3067
 
3015
- **Key memory areas**: fixed issues history, failure pattern library, known stable selectors, known product bugs, flaky test tracking.
3068
+ 1. **Read the test case markdown** to understand what changed
3069
+ 2. **Read the existing spec file** (from \`automated_test\` frontmatter field)
3070
+ 3. **Update the spec** to match the new specification:
3071
+ - Update test steps, assertions, selectors as needed
3072
+ - Preserve test structure and page object patterns
3073
+ - Follow conventions from \`./tests/CLAUDE.md\`
3074
+ 4. **Run the test** to verify changes work (command from \`./tests/CLAUDE.md\`)
3075
+ 5. **If test fails**: classify and fix (same as Mode A Step 4, max 3 attempts)
3076
+ 6. **Update manual test case** if the \`automated_test\` path changed
3016
3077
 
3017
- 2. **Environment**: Read \`.env.testdata\` to understand available variables. Never read \`.env\`. If test needs new variable, update \`.env.testdata\`.
3078
+ ---
3018
3079
 
3019
- **Fixing Workflow:**
3080
+ ## Mode C: FIX \u2014 Debug and Fix Failing Tests
3020
3081
 
3021
3082
  **Step 1: Read test file** \u2014 understand test intent, logic, and page objects used.
3022
3083
 
@@ -3026,7 +3087,7 @@ var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsi
3026
3087
  - **Product bug**: Selectors correct, test logic matches user flow, app behaves unexpectedly, screenshots show app in wrong state \u2192 STOP, report as bug, do NOT fix test
3027
3088
  - **Test issue**: Selector not found (but element exists), timeout, flaky behavior, wrong assertion, test isolation problem \u2192 proceed to fix
3028
3089
 
3029
- **Step 4: Debug** (if needed) \u2014 use playwright-cli to open browser, navigate to page, inspect elements with \`snapshot\`, manually execute test steps, identify discrepancy.
3090
+ **Step 4: Debug** (if needed) \u2014 open browser, navigate to page, inspect elements with \`snapshot\`, manually execute test steps, identify discrepancy.
3030
3091
 
3031
3092
  **Step 5: Apply fix** \u2014 edit test file using fix patterns from \`./tests/CLAUDE.md\`. Update selectors, waits, assertions, or logic.
3032
3093
 
@@ -3042,9 +3103,15 @@ var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsi
3042
3103
  - Fixed: provide file path, fix description, verification result
3043
3104
  - Still failing after 3 attempts: report as likely product bug
3044
3105
 
3045
- **Step 8:** ${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-debugger-fixer")}
3106
+ ---
3107
+
3108
+ **After all work:**
3109
+
3110
+ ${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-engineer")}
3046
3111
 
3047
- Update: fixed issues history, failure pattern library, known selectors, known product bugs, flaky test tracking, application behavior patterns.
3112
+ Update: generated artifacts, test cases automated, selector strategies, application patterns, test creation history, fixed issues history, failure pattern library, known selectors, known product bugs, flaky test tracking.
3113
+
3114
+ **Generate summary**: tests created/updated/fixed (pass/fail), manual test cases automated, page objects/fixtures/helpers added or modified, next steps.
3048
3115
 
3049
3116
  **Test Result Format**: The custom Bugzy reporter produces:
3050
3117
  - **Manifest**: \`test-runs/{timestamp}/manifest.json\` \u2014 overall run summary
@@ -3053,25 +3120,29 @@ Update: fixed issues history, failure pattern library, known selectors, known pr
3053
3120
  Read result.json from the execution path to understand failure context. Video, trace, and screenshots are in the same exec-{num}/ folder.
3054
3121
 
3055
3122
  **Critical Rules:**
3123
+ - **NEVER** generate selectors without exploring the live application first
3124
+ - **NEVER** read .env \u2014 only .env.testdata
3056
3125
  - **NEVER** fix tests when the issue is a product bug
3057
3126
  - **NEVER** make tests pass by lowering expectations
3058
3127
  - **NEVER** exceed 3 fix attempts \u2014 escalate instead
3128
+ - **ALWAYS** explore application before generating or updating code
3129
+ - **ALWAYS** verify selectors in live browser
3130
+ - **ALWAYS** follow conventions from \`./tests/CLAUDE.md\` and \`./tests/docs/testing-best-practices.md\`
3131
+ - **ALWAYS** link manual \u2194 automated tests bidirectionally
3059
3132
  - **ALWAYS** classify before fixing (product bug vs test issue)
3060
- - **ALWAYS** follow fix patterns from \`./tests/CLAUDE.md\`
3061
3133
  - **ALWAYS** verify fixes by re-running tests
3062
- - **ALWAYS** run flaky tests 10 times to confirm stability
3063
- - **ALWAYS** follow \`./tests/docs/testing-best-practices.md\``;
3134
+ - **ALWAYS** run flaky tests 10 times to confirm stability`;
3064
3135
 
3065
3136
  // src/subagents/templates/team-communicator/local.ts
3066
3137
  init_cjs_shims();
3067
- var FRONTMATTER4 = {
3138
+ var FRONTMATTER3 = {
3068
3139
  name: "team-communicator",
3069
3140
  description: `Use this agent when you need to communicate with the user about testing activities, results, or questions. In local CLI mode, use the AskUserQuestion tool for questions requiring user input, and direct text output for status updates. Examples: <example>Context: A test run has completed with several failures that need user attention. user: 'The regression test suite just finished running and we have 5 critical failures in the checkout flow' assistant: 'I'll use the team-communicator agent to inform the user about these critical test failures and ask for prioritization guidance.' <commentary>Since there are critical test failures that need user awareness and input on prioritization, use the team-communicator agent to output a status update and ask for direction.</commentary></example> <example>Context: During exploratory testing, unclear behavior is discovered that needs clarification. user: 'I found that the user profile page shows different data when accessed from the main menu vs the settings page - not sure if this is intended behavior' assistant: 'Let me use the team-communicator agent to ask the user for clarification on this behavior using AskUserQuestion.' <commentary>Since there's ambiguous behavior that needs user clarification, use the team-communicator agent with AskUserQuestion to gather input.</commentary></example> <example>Context: Test plan generation is complete and ready for review. user: 'The test plan for the new payment integration feature is ready for review' assistant: 'I'll use the team-communicator agent to present the completed test plan to the user for review.' <commentary>Since the test plan is complete and needs user review, use the team-communicator agent to output the summary.</commentary></example>`,
3070
3141
  tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "AskUserQuestion", "ListMcpResourcesTool", "ReadMcpResourceTool"],
3071
3142
  model: "haiku",
3072
3143
  color: "yellow"
3073
3144
  };
3074
- var CONTENT4 = `You are a Team Communication Specialist operating in local CLI mode. You communicate directly with the user through the terminal. Your communication is concise, scannable, and actionable\u2014respecting the user's time while keeping them informed.
3145
+ var CONTENT3 = `You are a Team Communication Specialist operating in local CLI mode. You communicate directly with the user through the terminal. Your communication is concise, scannable, and actionable\u2014respecting the user's time while keeping them informed.
3075
3146
 
3076
3147
  ## Core Philosophy: Direct Terminal Communication
3077
3148
 
@@ -3269,14 +3340,14 @@ You are not a formal report generator. You are a helpful QA engineer communicati
3269
3340
 
3270
3341
  // src/subagents/templates/team-communicator/slack.ts
3271
3342
  init_cjs_shims();
3272
- var FRONTMATTER5 = {
3343
+ var FRONTMATTER4 = {
3273
3344
  name: "team-communicator",
3274
3345
  description: `Use this agent when you need to communicate with the product team via Slack about testing activities, results, or questions. Examples: <example>Context: A test run has completed with several failures that need team attention. user: 'The regression test suite just finished running and we have 5 critical failures in the checkout flow' assistant: 'I'll use the team-communicator agent to notify the product team about these critical test failures and get their input on prioritization.' <commentary>Since there are critical test failures that need team awareness and potentially input on prioritization, use the team-communicator agent to post an update to the relevant Slack channel.</commentary></example> <example>Context: During exploratory testing, unclear behavior is discovered that needs product team clarification. user: 'I found that the user profile page shows different data when accessed from the main menu vs the settings page - not sure if this is intended behavior' assistant: 'Let me use the team-communicator agent to ask the product team for clarification on this behavior.' <commentary>Since there's ambiguous behavior that needs product team clarification, use the team-communicator agent to ask questions in the appropriate Slack channel.</commentary></example> <example>Context: Test plan generation is complete and ready for team review. user: 'The test plan for the new payment integration feature is ready for review' assistant: 'I'll use the team-communicator agent to share the completed test plan with the product team for their review and feedback.' <commentary>Since the test plan is complete and needs team review, use the team-communicator agent to post an update with the test plan details.</commentary></example>`,
3275
3346
  tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__slack__slack_list_channels", "mcp__slack__slack_post_message", "mcp__slack__slack_post_rich_message", "mcp__slack__slack_reply_to_thread", "mcp__slack__slack_add_reaction", "mcp__slack__slack_get_channel_history", "mcp__slack__slack_get_thread_replies", "ListMcpResourcesTool", "ReadMcpResourceTool"],
3276
3347
  model: "haiku",
3277
3348
  color: "yellow"
3278
3349
  };
3279
- var CONTENT5 = `You are a Team Communication Specialist who communicates like a real QA engineer. Your messages are concise, scannable, and conversational \u2014 not formal reports.
3350
+ var CONTENT4 = `You are a Team Communication Specialist who communicates like a real QA engineer. Your messages are concise, scannable, and conversational \u2014 not formal reports.
3280
3351
 
3281
3352
  ## Core Philosophy
3282
3353
 
@@ -3388,14 +3459,14 @@ Before sending:
3388
3459
 
3389
3460
  // src/subagents/templates/team-communicator/teams.ts
3390
3461
  init_cjs_shims();
3391
- var FRONTMATTER6 = {
3462
+ var FRONTMATTER5 = {
3392
3463
  name: "team-communicator",
3393
3464
  description: `Use this agent when you need to communicate with the product team via Microsoft Teams about testing activities, results, or questions. Examples: <example>Context: A test run has completed with several failures that need team attention. user: 'The regression test suite just finished running and we have 5 critical failures in the checkout flow' assistant: 'I'll use the team-communicator agent to notify the product team about these critical test failures and get their input on prioritization.' <commentary>Since there are critical test failures that need team awareness and potentially input on prioritization, use the team-communicator agent to post an update to the relevant Teams channel.</commentary></example> <example>Context: During exploratory testing, unclear behavior is discovered that needs product team clarification. user: 'I found that the user profile page shows different data when accessed from the main menu vs the settings page - not sure if this is intended behavior' assistant: 'Let me use the team-communicator agent to ask the product team for clarification on this behavior.' <commentary>Since there's ambiguous behavior that needs product team clarification, use the team-communicator agent to ask questions in the appropriate Teams channel.</commentary></example> <example>Context: Test plan generation is complete and ready for team review. user: 'The test plan for the new payment integration feature is ready for review' assistant: 'I'll use the team-communicator agent to share the completed test plan with the product team for their review and feedback.' <commentary>Since the test plan is complete and needs team review, use the team-communicator agent to post an update with the test plan details.</commentary></example>`,
3394
3465
  tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__teams__teams_post_message", "mcp__teams__teams_post_rich_message"],
3395
3466
  model: "haiku",
3396
3467
  color: "yellow"
3397
3468
  };
3398
- var CONTENT6 = `You are a Team Communication Specialist who communicates like a real QA engineer. Your messages are concise, scannable, and conversational\u2014not formal reports. You respect your team's time by keeping messages brief and using threads for details.
3469
+ var CONTENT5 = `You are a Team Communication Specialist who communicates like a real QA engineer. Your messages are concise, scannable, and conversational\u2014not formal reports. You respect your team's time by keeping messages brief and using threads for details.
3399
3470
 
3400
3471
  ## Core Philosophy: Concise, Human Communication
3401
3472
 
@@ -3741,14 +3812,14 @@ You are not a formal report generator. You are a helpful QA engineer who knows h
3741
3812
 
3742
3813
  // src/subagents/templates/team-communicator/email.ts
3743
3814
  init_cjs_shims();
3744
- var FRONTMATTER7 = {
3815
+ var FRONTMATTER6 = {
3745
3816
  name: "team-communicator",
3746
3817
  description: `Use this agent when you need to communicate with the product team via email about testing activities, results, or questions. Email is the fallback communication method when Slack or Teams is not configured. Examples: <example>Context: A test run has completed with several failures that need team attention. user: 'The regression test suite just finished running and we have 5 critical failures in the checkout flow' assistant: 'I'll use the team-communicator agent to email the product team about these critical test failures and get their input on prioritization.' <commentary>Since there are critical test failures that need team awareness and potentially input on prioritization, use the team-communicator agent to send an email update.</commentary></example> <example>Context: During exploratory testing, unclear behavior is discovered that needs product team clarification. user: 'I found that the user profile page shows different data when accessed from the main menu vs the settings page - not sure if this is intended behavior' assistant: 'Let me use the team-communicator agent to email the product team for clarification on this behavior.' <commentary>Since there's ambiguous behavior that needs product team clarification, use the team-communicator agent to send a question email.</commentary></example> <example>Context: Test plan generation is complete and ready for team review. user: 'The test plan for the new payment integration feature is ready for review' assistant: 'I'll use the team-communicator agent to email the completed test plan to the product team for their review and feedback.' <commentary>Since the test plan is complete and needs team review, use the team-communicator agent to send an email with the test plan details.</commentary></example>`,
3747
3818
  tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__resend__resend_send_email", "mcp__resend__resend_send_batch_emails", "ListMcpResourcesTool", "ReadMcpResourceTool"],
3748
3819
  model: "haiku",
3749
3820
  color: "yellow"
3750
3821
  };
3751
- var CONTENT7 = `You are a Team Communication Specialist who communicates like a real QA engineer via email. Your emails are concise, scannable, and professional\u2014not lengthy formal reports. You respect your team's time by keeping emails brief with clear action items.
3822
+ var CONTENT6 = `You are a Team Communication Specialist who communicates like a real QA engineer via email. Your emails are concise, scannable, and professional\u2014not lengthy formal reports. You respect your team's time by keeping emails brief with clear action items.
3752
3823
 
3753
3824
  ## Core Philosophy: Concise, Professional Email Communication
3754
3825
 
@@ -3996,7 +4067,7 @@ You are not a formal report generator. You are a helpful QA engineer who knows h
3996
4067
 
3997
4068
  // src/subagents/templates/documentation-researcher/notion.ts
3998
4069
  init_cjs_shims();
3999
- var FRONTMATTER8 = {
4070
+ var FRONTMATTER7 = {
4000
4071
  name: "documentation-researcher",
4001
4072
  description: `Use this agent when you need to explore, understand, or retrieve information from project documentation stored in Notion. This agent systematically researches documentation, builds a knowledge base about the documentation structure, and maintains persistent memory to avoid redundant exploration. Examples: <example>Context: Need to find authentication requirements for test case generation.
4002
4073
  user: "I need to generate test cases for the new OAuth flow"
@@ -4008,7 +4079,7 @@ assistant: "I'll use the documentation-researcher agent to search our Notion doc
4008
4079
  model: "haiku",
4009
4080
  color: "cyan"
4010
4081
  };
4011
- var CONTENT8 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Notion via the MCP server.
4082
+ var CONTENT7 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Notion via the MCP server.
4012
4083
 
4013
4084
  ## Core Responsibilities
4014
4085
 
@@ -4075,7 +4146,7 @@ You are meticulous about maintaining your memory file as a living document that
4075
4146
 
4076
4147
  // src/subagents/templates/documentation-researcher/confluence.ts
4077
4148
  init_cjs_shims();
4078
- var FRONTMATTER9 = {
4149
+ var FRONTMATTER8 = {
4079
4150
  name: "documentation-researcher",
4080
4151
  description: `Use this agent when you need to explore, understand, or retrieve information from project documentation stored in Confluence. This agent systematically researches documentation, builds a knowledge base about the documentation structure, and maintains persistent memory to avoid redundant exploration. Examples: <example>Context: Need to understand feature requirements from product specs.
4081
4152
  user: "I need to create a test plan for the new user profile feature"
@@ -4087,7 +4158,7 @@ assistant: "I'll use the documentation-researcher agent to search our Confluence
4087
4158
  model: "sonnet",
4088
4159
  color: "cyan"
4089
4160
  };
4090
- var CONTENT9 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Confluence.
4161
+ var CONTENT8 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Confluence.
4091
4162
 
4092
4163
  ## Core Responsibilities
4093
4164
 
@@ -4188,7 +4259,7 @@ You are meticulous about maintaining your memory file as a living document that
4188
4259
 
4189
4260
  // src/subagents/templates/documentation-researcher/jira.ts
4190
4261
  init_cjs_shims();
4191
- var FRONTMATTER10 = {
4262
+ var FRONTMATTER9 = {
4192
4263
  name: "documentation-researcher",
4193
4264
  description: `Use this agent when you need to explore, understand, or retrieve information from project documentation stored in Jira issues, epics, and comments. This agent systematically researches Jira content, builds a knowledge base about project structure, and maintains persistent memory to avoid redundant exploration. Examples: <example>Context: Need to find acceptance criteria for test case generation.
4194
4265
  user: "Generate test cases for the checkout flow feature"
@@ -4200,7 +4271,7 @@ assistant: "I'll use the documentation-researcher agent to search Jira comments
4200
4271
  model: "haiku",
4201
4272
  color: "cyan"
4202
4273
  };
4203
- var CONTENT10 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Jira issues, epics, stories, and comments.
4274
+ var CONTENT9 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Jira issues, epics, stories, and comments.
4204
4275
 
4205
4276
  ## Core Responsibilities
4206
4277
 
@@ -4319,7 +4390,7 @@ You are meticulous about maintaining your memory file as a living document that
4319
4390
 
4320
4391
  // src/subagents/templates/issue-tracker/linear.ts
4321
4392
  init_cjs_shims();
4322
- var FRONTMATTER11 = {
4393
+ var FRONTMATTER10 = {
4323
4394
  name: "issue-tracker",
4324
4395
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Linear. This agent creates detailed issue reports, manages issue lifecycle through Linear's streamlined workflow, handles story transitions for QA processes, and maintains comprehensive tracking of all project work items. Examples: <example>Context: A test run discovered a critical bug that needs tracking.
4325
4396
  user: "The login flow is broken - users get a 500 error when submitting credentials"
@@ -4331,7 +4402,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to QA
4331
4402
  model: "sonnet",
4332
4403
  color: "red"
4333
4404
  };
4334
- var CONTENT11 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Linear. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Linear's efficient tracking system.
4405
+ var CONTENT10 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Linear. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Linear's efficient tracking system.
4335
4406
 
4336
4407
  **Core Responsibilities:**
4337
4408
 
@@ -4500,7 +4571,7 @@ You are focused on creating bug reports that fit Linear's streamlined workflow w
4500
4571
 
4501
4572
  // src/subagents/templates/issue-tracker/jira.ts
4502
4573
  init_cjs_shims();
4503
- var FRONTMATTER12 = {
4574
+ var FRONTMATTER11 = {
4504
4575
  name: "issue-tracker",
4505
4576
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Jira. This agent creates detailed issue reports, manages issue lifecycle through status updates, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items. Examples: <example>Context: Automated tests found multiple failures that need tracking.
4506
4577
  user: "5 tests failed in the checkout flow - payment validation is broken"
@@ -4512,7 +4583,7 @@ assistant: "Let me use the issue-tracker agent to transition PROJ-456 to Done an
4512
4583
  model: "sonnet",
4513
4584
  color: "red"
4514
4585
  };
4515
- var CONTENT12 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Jira. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
4586
+ var CONTENT11 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Jira. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
4516
4587
 
4517
4588
  **Core Responsibilities:**
4518
4589
 
@@ -4675,7 +4746,7 @@ init_cjs_shims();
4675
4746
 
4676
4747
  // src/subagents/templates/issue-tracker/azure-devops.ts
4677
4748
  init_cjs_shims();
4678
- var FRONTMATTER13 = {
4749
+ var FRONTMATTER12 = {
4679
4750
  name: "issue-tracker",
4680
4751
  description: `Use this agent to track and manage all types of work items including bugs, user stories, and tasks in Azure DevOps. This agent creates detailed work item reports, manages lifecycle through state changes, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items. Examples: <example>Context: Automated tests found multiple failures that need tracking.
4681
4752
  user: "5 tests failed in the checkout flow - payment validation is broken"
@@ -4687,7 +4758,7 @@ assistant: "Let me use the issue-tracker agent to update work item 456 state to
4687
4758
  model: "sonnet",
4688
4759
  color: "red"
4689
4760
  };
4690
- var CONTENT13 = `You are an expert Issue Tracker specializing in managing all types of work items including bugs, user stories, features, and tasks in Azure DevOps. Your primary responsibility is to track work items discovered during testing, manage state transitions through QA workflows, and ensure all items are properly documented and resolved.
4761
+ var CONTENT12 = `You are an expert Issue Tracker specializing in managing all types of work items including bugs, user stories, features, and tasks in Azure DevOps. Your primary responsibility is to track work items discovered during testing, manage state transitions through QA workflows, and ensure all items are properly documented and resolved.
4691
4762
 
4692
4763
  **Core Responsibilities:**
4693
4764
 
@@ -4903,7 +4974,7 @@ You are meticulous about maintaining your memory file as a critical resource for
4903
4974
 
4904
4975
  // src/subagents/templates/issue-tracker/notion.ts
4905
4976
  init_cjs_shims();
4906
- var FRONTMATTER14 = {
4977
+ var FRONTMATTER13 = {
4907
4978
  name: "issue-tracker",
4908
4979
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Notion databases. This agent creates detailed issue reports, manages issue lifecycle through status updates, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items. Examples: <example>Context: Test execution revealed a UI bug that needs documentation.
4909
4980
  user: "The submit button on the checkout page doesn't work on mobile Safari"
@@ -4915,7 +4986,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to 'QA
4915
4986
  model: "haiku",
4916
4987
  color: "red"
4917
4988
  };
4918
- var CONTENT14 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Notion databases. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
4989
+ var CONTENT13 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Notion databases. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
4919
4990
 
4920
4991
  **Core Responsibilities:**
4921
4992
 
@@ -5063,7 +5134,7 @@ You are meticulous about maintaining your memory file as a critical resource tha
5063
5134
 
5064
5135
  // src/subagents/templates/issue-tracker/slack.ts
5065
5136
  init_cjs_shims();
5066
- var FRONTMATTER15 = {
5137
+ var FRONTMATTER14 = {
5067
5138
  name: "issue-tracker",
5068
5139
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Slack. This agent creates detailed issue threads, manages issue lifecycle through thread replies and reactions, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items using Slack channels. Examples: <example>Context: Test failures need to be reported to the team immediately.
5069
5140
  user: "3 critical tests failed in the payment flow - looks like the Stripe integration is broken"
@@ -5075,7 +5146,7 @@ assistant: "Let me use the issue-tracker agent to update the story thread with Q
5075
5146
  model: "sonnet",
5076
5147
  color: "red"
5077
5148
  };
5078
- var CONTENT15 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Slack. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Slack threads and channels.
5149
+ var CONTENT14 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Slack. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Slack threads and channels.
5079
5150
 
5080
5151
  **Core Responsibilities:**
5081
5152
 
@@ -5298,7 +5369,7 @@ You are focused on creating clear, organized issue threads that leverage Slack's
5298
5369
 
5299
5370
  // src/subagents/templates/changelog-historian/github.ts
5300
5371
  init_cjs_shims();
5301
- var FRONTMATTER16 = {
5372
+ var FRONTMATTER15 = {
5302
5373
  name: "changelog-historian",
5303
5374
  description: `Use this agent when you need to understand what code changes went into a build, deployment, or release. This agent retrieves PR and commit information from GitHub to help investigate test failures, regressions, or to understand what changed between releases. Examples: <example>Context: A test started failing after a deployment.
5304
5375
  user: "The checkout flow test is failing in staging. What changed recently?"
@@ -5310,7 +5381,7 @@ assistant: "I'll use the changelog-historian agent to compare the two releases a
5310
5381
  model: "haiku",
5311
5382
  color: "gray"
5312
5383
  };
5313
- var CONTENT16 = `You are an expert Changelog Historian specializing in understanding code changes and their impact. Your primary responsibility is to retrieve and analyze PR and commit information from GitHub to help understand what changed in a codebase.
5384
+ var CONTENT15 = `You are an expert Changelog Historian specializing in understanding code changes and their impact. Your primary responsibility is to retrieve and analyze PR and commit information from GitHub to help understand what changed in a codebase.
5314
5385
 
5315
5386
  ## Core Responsibilities
5316
5387
 
@@ -5427,80 +5498,74 @@ var TEMPLATES = {
5427
5498
  content: CONTENT
5428
5499
  }
5429
5500
  },
5430
- "test-code-generator": {
5431
- playwright: {
5501
+ "test-engineer": {
5502
+ default: {
5432
5503
  frontmatter: FRONTMATTER2,
5433
5504
  content: CONTENT2
5434
5505
  }
5435
5506
  },
5436
- "test-debugger-fixer": {
5437
- playwright: {
5438
- frontmatter: FRONTMATTER3,
5439
- content: CONTENT3
5440
- }
5441
- },
5442
5507
  "team-communicator": {
5443
5508
  local: {
5509
+ frontmatter: FRONTMATTER3,
5510
+ content: CONTENT3
5511
+ },
5512
+ slack: {
5444
5513
  frontmatter: FRONTMATTER4,
5445
5514
  content: CONTENT4
5446
5515
  },
5447
- slack: {
5516
+ teams: {
5448
5517
  frontmatter: FRONTMATTER5,
5449
5518
  content: CONTENT5
5450
5519
  },
5451
- teams: {
5520
+ email: {
5452
5521
  frontmatter: FRONTMATTER6,
5453
5522
  content: CONTENT6
5454
- },
5455
- email: {
5456
- frontmatter: FRONTMATTER7,
5457
- content: CONTENT7
5458
5523
  }
5459
5524
  },
5460
5525
  "documentation-researcher": {
5461
5526
  notion: {
5527
+ frontmatter: FRONTMATTER7,
5528
+ content: CONTENT7
5529
+ },
5530
+ confluence: {
5462
5531
  frontmatter: FRONTMATTER8,
5463
5532
  content: CONTENT8
5464
5533
  },
5465
- confluence: {
5534
+ jira: {
5466
5535
  frontmatter: FRONTMATTER9,
5467
5536
  content: CONTENT9
5468
- },
5469
- jira: {
5470
- frontmatter: FRONTMATTER10,
5471
- content: CONTENT10
5472
5537
  }
5473
5538
  },
5474
5539
  "issue-tracker": {
5475
5540
  linear: {
5476
- frontmatter: FRONTMATTER11,
5477
- content: CONTENT11
5541
+ frontmatter: FRONTMATTER10,
5542
+ content: CONTENT10
5478
5543
  },
5479
5544
  jira: {
5480
- frontmatter: FRONTMATTER12,
5481
- content: CONTENT12
5545
+ frontmatter: FRONTMATTER11,
5546
+ content: CONTENT11
5482
5547
  },
5483
5548
  "jira-server": {
5549
+ frontmatter: FRONTMATTER11,
5550
+ content: CONTENT11
5551
+ },
5552
+ "azure-devops": {
5484
5553
  frontmatter: FRONTMATTER12,
5485
5554
  content: CONTENT12
5486
5555
  },
5487
- "azure-devops": {
5556
+ notion: {
5488
5557
  frontmatter: FRONTMATTER13,
5489
5558
  content: CONTENT13
5490
5559
  },
5491
- notion: {
5560
+ slack: {
5492
5561
  frontmatter: FRONTMATTER14,
5493
5562
  content: CONTENT14
5494
- },
5495
- slack: {
5496
- frontmatter: FRONTMATTER15,
5497
- content: CONTENT15
5498
5563
  }
5499
5564
  },
5500
5565
  "changelog-historian": {
5501
5566
  github: {
5502
- frontmatter: FRONTMATTER16,
5503
- content: CONTENT16
5567
+ frontmatter: FRONTMATTER15,
5568
+ content: CONTENT15
5504
5569
  }
5505
5570
  }
5506
5571
  };
@@ -6351,9 +6416,9 @@ var fixTestIssuesStep = {
6351
6416
  category: "execution",
6352
6417
  content: `## Fix Test Issues Automatically
6353
6418
 
6354
- For each test classified as **[TEST ISSUE]**, use the test-debugger-fixer agent to automatically fix the test:
6419
+ For each test classified as **[TEST ISSUE]**, use the test-engineer agent to automatically fix the test:
6355
6420
 
6356
- {{INVOKE_TEST_DEBUGGER_FIXER}}
6421
+ {{INVOKE_TEST_ENGINEER}}
6357
6422
 
6358
6423
  For each failed test classified as a test issue (not a product bug), provide:
6359
6424
  - Test run timestamp: [from manifest.timestamp]
@@ -6376,7 +6441,7 @@ The agent will:
6376
6441
  7. Repeat up to 3 times if needed (exec-1, exec-2, exec-3)
6377
6442
  8. Report success or escalate as likely product bug
6378
6443
 
6379
- **After test-debugger-fixer completes:**
6444
+ **After test-engineer completes:**
6380
6445
  - If fix succeeded: Mark test as fixed, add to "Tests Fixed" list
6381
6446
  - If still failing after 3 attempts: Reclassify as potential product bug
6382
6447
 
@@ -6384,7 +6449,7 @@ The agent will:
6384
6449
  - Maintain list of tests fixed automatically
6385
6450
  - Include fix description (e.g., "Applied selector fix pattern from CLAUDE.md")
6386
6451
  - Note verification status (test now passes)`,
6387
- invokesSubagents: ["test-debugger-fixer"],
6452
+ invokesSubagents: ["test-engineer"],
6388
6453
  tags: ["execution", "fixing", "automation"]
6389
6454
  };
6390
6455
 
@@ -6755,7 +6820,7 @@ var automateTestCasesStep = {
6755
6820
 
6756
6821
  For each test case marked \`automated: true\`:
6757
6822
 
6758
- {{INVOKE_TEST_CODE_GENERATOR}} with the following context:
6823
+ {{INVOKE_TEST_ENGINEER}} with the following context:
6759
6824
 
6760
6825
  "Automate test cases for the focus area: $ARGUMENTS
6761
6826
 
@@ -6788,7 +6853,7 @@ After automation, update the manual test case frontmatter:
6788
6853
  automated: true
6789
6854
  automated_test: tests/specs/feature/test-name.spec.ts
6790
6855
  \`\`\``,
6791
- invokesSubagents: ["test-code-generator"],
6856
+ invokesSubagents: ["test-engineer"],
6792
6857
  tags: ["generation", "automation"]
6793
6858
  };
6794
6859
 
@@ -7208,6 +7273,29 @@ After test generation completes, verify all artifacts meet quality standards:
7208
7273
  tags: ["maintenance", "validation", "test-artifacts"]
7209
7274
  };
7210
7275
 
7276
+ // src/tasks/steps/maintenance/sync-automation-from-feedback.ts
7277
+ init_cjs_shims();
7278
+ var syncAutomationFromFeedbackStep = {
7279
+ id: "sync-automation-from-feedback",
7280
+ title: "Sync Automation Code with Test Case Changes",
7281
+ category: "maintenance",
7282
+ requiresSubagent: "test-engineer",
7283
+ invokesSubagents: ["test-engineer"],
7284
+ content: `## Sync Automation Code with Test Case Changes
7285
+
7286
+ After processing feedback that modified test case files, ensure automation code stays in sync.
7287
+
7288
+ **When to apply:** Only if you modified test case markdown files during this task.
7289
+
7290
+ For each modified test case:
7291
+ 1. Read frontmatter \u2014 check for \`automated_test\` field
7292
+ 2. If exists \u2192 {{INVOKE_TEST_ENGINEER}} to update the spec to match the updated markdown
7293
+ 3. If not \u2192 skip (no automation to sync)
7294
+
7295
+ **CRITICAL:** Both specification (markdown) AND implementation (automation code) MUST stay in sync.`,
7296
+ tags: ["maintenance", "automation", "feedback"]
7297
+ };
7298
+
7211
7299
  // src/tasks/steps/index.ts
7212
7300
  init_types();
7213
7301
  var STEP_LIBRARY = {
@@ -7245,7 +7333,8 @@ var STEP_LIBRARY = {
7245
7333
  "generate-final-report": generateFinalReportStep,
7246
7334
  "update-exploration-artifacts": updateExplorationArtifactsStep,
7247
7335
  "cleanup-temp-files": cleanupTempFilesStep,
7248
- "validate-test-artifacts": validateTestArtifactsStep
7336
+ "validate-test-artifacts": validateTestArtifactsStep,
7337
+ "sync-automation-from-feedback": syncAutomationFromFeedbackStep
7249
7338
  };
7250
7339
  function getStep(id) {
7251
7340
  const step = STEP_LIBRARY[id];
@@ -7351,8 +7440,7 @@ init_cjs_shims();
7351
7440
  var TOOL_STRINGS = {
7352
7441
  "claude-code": {
7353
7442
  INVOKE_BROWSER_AUTOMATION: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "browser-automation"` to delegate test execution.\nThe browser-automation agent will handle all browser automation. DO NOT execute Playwright MCP tools directly.\nInclude the test case path and any specific instructions in the prompt.',
7354
- INVOKE_TEST_DEBUGGER_FIXER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "test-debugger-fixer"` to delegate debugging.\nThe agent will analyze failures and fix test code. Include error details and test path in the prompt.',
7355
- INVOKE_TEST_CODE_GENERATOR: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "test-code-generator"` to delegate code generation.\nThe agent will create automated tests and page objects. Include test case files in the prompt.',
7443
+ INVOKE_TEST_ENGINEER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "test-engineer"` to delegate test automation work.\nThe agent handles creating, updating, and fixing automated tests. Include test case files and context in the prompt.',
7356
7444
  INVOKE_TEAM_COMMUNICATOR: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "team-communicator"` to send team notifications.\nThe agent will post to Slack/Teams/Email. Include message content and context in the prompt.',
7357
7445
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.claude/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context. Do NOT spawn a sub-agent.",
7358
7446
  INVOKE_ISSUE_TRACKER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "issue-tracker"` to create/update issues.\nThe agent will interact with Jira. Include bug details and classification in the prompt.',
@@ -7361,8 +7449,7 @@ var TOOL_STRINGS = {
7361
7449
  },
7362
7450
  "cursor": {
7363
7451
  INVOKE_BROWSER_AUTOMATION: 'Run the browser-automation agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/browser-automation.md)" --output-format text\n```',
7364
- INVOKE_TEST_DEBUGGER_FIXER: 'Run the test-debugger-fixer agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/test-debugger-fixer.md)" --output-format text\n```',
7365
- INVOKE_TEST_CODE_GENERATOR: 'Run the test-code-generator agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/test-code-generator.md)" --output-format text\n```',
7452
+ INVOKE_TEST_ENGINEER: 'Run the test-engineer agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/test-engineer.md)" --output-format text\n```',
7366
7453
  INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/team-communicator.md)" --output-format text\n```',
7367
7454
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.cursor/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context.",
7368
7455
  INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/issue-tracker.md)" --output-format text\n```',
@@ -7371,8 +7458,7 @@ var TOOL_STRINGS = {
7371
7458
  },
7372
7459
  "codex": {
7373
7460
  INVOKE_BROWSER_AUTOMATION: 'Run the browser-automation agent:\n```bash\ncodex -p "$(cat .codex/agents/browser-automation.md)"\n```',
7374
- INVOKE_TEST_DEBUGGER_FIXER: 'Run the test-debugger-fixer agent:\n```bash\ncodex -p "$(cat .codex/agents/test-debugger-fixer.md)"\n```',
7375
- INVOKE_TEST_CODE_GENERATOR: 'Run the test-code-generator agent:\n```bash\ncodex -p "$(cat .codex/agents/test-code-generator.md)"\n```',
7461
+ INVOKE_TEST_ENGINEER: 'Run the test-engineer agent:\n```bash\ncodex -p "$(cat .codex/agents/test-engineer.md)"\n```',
7376
7462
  INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncodex -p "$(cat .codex/agents/team-communicator.md)"\n```',
7377
7463
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.codex/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context.",
7378
7464
  INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncodex -p "$(cat .codex/agents/issue-tracker.md)"\n```',
@@ -7395,8 +7481,7 @@ function replaceInvocationPlaceholders(content, toolId, isLocal = false) {
7395
7481
  let result = content;
7396
7482
  const keys = [
7397
7483
  "INVOKE_BROWSER_AUTOMATION",
7398
- "INVOKE_TEST_DEBUGGER_FIXER",
7399
- "INVOKE_TEST_CODE_GENERATOR",
7484
+ "INVOKE_TEST_ENGINEER",
7400
7485
  "INVOKE_TEAM_COMMUNICATOR",
7401
7486
  "INVOKE_ISSUE_TRACKER",
7402
7487
  "INVOKE_DOCUMENTATION_RESEARCHER",