@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.
- package/LICENSE +21 -21
- package/README.md +273 -273
- package/dist/cli/index.cjs +295 -210
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +294 -209
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +291 -206
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +291 -206
- package/dist/index.js.map +1 -1
- package/dist/subagents/index.cjs +115 -137
- package/dist/subagents/index.cjs.map +1 -1
- package/dist/subagents/index.js +115 -137
- package/dist/subagents/index.js.map +1 -1
- package/dist/subagents/metadata.cjs +12 -18
- package/dist/subagents/metadata.cjs.map +1 -1
- package/dist/subagents/metadata.js +12 -18
- package/dist/subagents/metadata.js.map +1 -1
- package/dist/tasks/index.cjs +142 -54
- package/dist/tasks/index.cjs.map +1 -1
- package/dist/tasks/index.js +142 -54
- package/dist/tasks/index.js.map +1 -1
- package/dist/templates/init/.bugzy/runtime/knowledge-base.md +61 -0
- package/dist/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -0
- package/dist/templates/init/.bugzy/runtime/project-context.md +35 -0
- package/dist/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -0
- package/dist/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -0
- package/dist/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -0
- package/dist/templates/init/.bugzy/runtime/test-execution-strategy.md +535 -0
- package/dist/templates/init/.bugzy/runtime/testing-best-practices.md +632 -0
- package/dist/templates/init/.gitignore-template +25 -0
- package/package.json +95 -95
- package/templates/init/.bugzy/runtime/knowledge-base.md +61 -61
- package/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -97
- package/templates/init/.bugzy/runtime/project-context.md +35 -35
- package/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -87
- package/templates/init/.bugzy/runtime/templates/event-examples.md +194 -194
- package/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -50
- package/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -498
- package/templates/init/.claude/settings.json +28 -28
- package/templates/init/.env.testdata +18 -18
- package/templates/init/.gitignore-template +24 -24
- package/templates/init/AGENTS.md +155 -155
- package/templates/init/CLAUDE.md +157 -157
- package/templates/init/test-runs/README.md +45 -45
- package/templates/init/tests/CLAUDE.md +193 -193
- package/templates/init/tests/docs/test-execution-strategy.md +535 -535
- package/templates/init/tests/docs/testing-best-practices.md +724 -724
- package/templates/playwright/BasePage.template.ts +190 -190
- package/templates/playwright/auth.setup.template.ts +89 -89
- package/templates/playwright/dataGenerators.helper.template.ts +148 -148
- package/templates/playwright/dateUtils.helper.template.ts +96 -96
- package/templates/playwright/pages.fixture.template.ts +50 -50
- package/templates/playwright/playwright.config.template.ts +97 -97
- package/templates/playwright/reporters/__tests__/bugzy-reporter-failure-classification.test.ts +299 -299
- package/templates/playwright/reporters/__tests__/bugzy-reporter-manifest-merge.test.ts +329 -329
- package/templates/playwright/reporters/__tests__/playwright.config.ts +5 -5
- package/templates/playwright/reporters/bugzy-reporter.ts +784 -784
- package/templates/init/.bugzy/runtime/handlers/messages/feedback.md +0 -178
- package/templates/init/.bugzy/runtime/handlers/messages/question.md +0 -122
- package/templates/init/.bugzy/runtime/handlers/messages/status.md +0 -146
package/dist/cli/index.cjs
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
243
|
+
**Invoke test-engineer Agent:**
|
|
244
244
|
|
|
245
|
-
{{
|
|
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-
|
|
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-
|
|
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
|
|
521
|
+
description: "Handle team messages, maintaining context for ongoing conversations",
|
|
522
522
|
frontmatter: {
|
|
523
|
-
description: "Handle team
|
|
524
|
-
"argument-hint": "[
|
|
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
|
|
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
|
|
547
|
+
// Step 6: Detect Intent (inline - simplified, no handler file loading)
|
|
548
548
|
{
|
|
549
549
|
inline: true,
|
|
550
|
-
title: "Detect Message Intent
|
|
551
|
-
content: `
|
|
550
|
+
title: "Detect Message Intent",
|
|
551
|
+
content: `Identify the intent type from the event payload or message patterns:
|
|
552
552
|
|
|
553
|
-
####
|
|
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
|
-
####
|
|
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
|
-
|
|
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
|
-
|
|
573
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
641
|
+
### Step 3: Formulate Answer
|
|
583
642
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
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
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
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
|
|
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
|
|
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
|
|
703
|
+
// Step 10: Clarification Protocol (for ambiguous intents)
|
|
618
704
|
"clarification-protocol",
|
|
619
|
-
// Step
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
{{
|
|
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-
|
|
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-
|
|
1781
|
-
optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator", "changelog-historian"
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
2200
|
+
content: `Commit analysis artifacts to the **parent project repository** (the workspace root).
|
|
2115
2201
|
|
|
2116
|
-
|
|
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
|
-
|
|
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-
|
|
2576
|
-
role: "test-
|
|
2577
|
-
name: "Test
|
|
2578
|
-
description: "
|
|
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.
|
|
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-
|
|
2994
|
+
// src/subagents/templates/test-engineer/default.ts
|
|
2913
2995
|
init_cjs_shims();
|
|
2914
2996
|
var FRONTMATTER2 = {
|
|
2915
|
-
name: "test-
|
|
2916
|
-
description: `
|
|
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-
|
|
2919
|
-
<commentary>Since the user wants to generate test code from a test plan, use the Task tool to launch the test-
|
|
2920
|
-
user: "
|
|
2921
|
-
assistant: "
|
|
2922
|
-
<commentary>
|
|
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
|
|
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
|
|
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-
|
|
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**:
|
|
3025
|
+
3. **Read manual test cases**: Read test cases from \`./test-cases/*.md\` with frontmatter indicating automation status.
|
|
2941
3026
|
|
|
2942
|
-
|
|
3027
|
+
**Determine your mode from the delegation context:**
|
|
2943
3028
|
|
|
2944
|
-
|
|
3029
|
+
---
|
|
3030
|
+
|
|
3031
|
+
## Mode A: CREATE \u2014 New Test Generation
|
|
2945
3032
|
|
|
2946
|
-
For each test case marked
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
3064
|
+
## Mode B: UPDATE \u2014 Modify Existing Tests
|
|
3012
3065
|
|
|
3013
|
-
|
|
3066
|
+
For each test case that needs updating:
|
|
3014
3067
|
|
|
3015
|
-
|
|
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
|
-
|
|
3078
|
+
---
|
|
3018
3079
|
|
|
3019
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
5431
|
-
|
|
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
|
-
|
|
5516
|
+
teams: {
|
|
5448
5517
|
frontmatter: FRONTMATTER5,
|
|
5449
5518
|
content: CONTENT5
|
|
5450
5519
|
},
|
|
5451
|
-
|
|
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
|
-
|
|
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:
|
|
5477
|
-
content:
|
|
5541
|
+
frontmatter: FRONTMATTER10,
|
|
5542
|
+
content: CONTENT10
|
|
5478
5543
|
},
|
|
5479
5544
|
jira: {
|
|
5480
|
-
frontmatter:
|
|
5481
|
-
content:
|
|
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
|
-
|
|
5556
|
+
notion: {
|
|
5488
5557
|
frontmatter: FRONTMATTER13,
|
|
5489
5558
|
content: CONTENT13
|
|
5490
5559
|
},
|
|
5491
|
-
|
|
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:
|
|
5503
|
-
content:
|
|
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-
|
|
6419
|
+
For each test classified as **[TEST ISSUE]**, use the test-engineer agent to automatically fix the test:
|
|
6355
6420
|
|
|
6356
|
-
{{
|
|
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-
|
|
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-
|
|
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
|
-
{{
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
7399
|
-
"INVOKE_TEST_CODE_GENERATOR",
|
|
7484
|
+
"INVOKE_TEST_ENGINEER",
|
|
7400
7485
|
"INVOKE_TEAM_COMMUNICATOR",
|
|
7401
7486
|
"INVOKE_ISSUE_TRACKER",
|
|
7402
7487
|
"INVOKE_DOCUMENTATION_RESEARCHER",
|