@bugzy-ai/bugzy 1.18.3 → 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 +289 -206
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +288 -205
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +285 -202
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +285 -202
- 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 +136 -50
- package/dist/tasks/index.cjs.map +1 -1
- package/dist/tasks/index.js +136 -50
- 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
|
};
|
|
@@ -2515,6 +2601,13 @@ var INTEGRATIONS = {
|
|
|
2515
2601
|
// No requiredMCP - uses built-in Claude Code tools (AskUserQuestion, text output)
|
|
2516
2602
|
isLocal: true,
|
|
2517
2603
|
integrationType: "local"
|
|
2604
|
+
},
|
|
2605
|
+
default: {
|
|
2606
|
+
id: "default",
|
|
2607
|
+
name: "Default",
|
|
2608
|
+
provider: "default",
|
|
2609
|
+
isLocal: true,
|
|
2610
|
+
integrationType: "local"
|
|
2518
2611
|
}
|
|
2519
2612
|
};
|
|
2520
2613
|
var SUBAGENTS = {
|
|
@@ -2574,28 +2667,15 @@ var SUBAGENTS = {
|
|
|
2574
2667
|
color: "cyan",
|
|
2575
2668
|
version: "1.0.0"
|
|
2576
2669
|
},
|
|
2577
|
-
"test-
|
|
2578
|
-
role: "test-
|
|
2579
|
-
name: "Test
|
|
2580
|
-
description: "
|
|
2670
|
+
"test-engineer": {
|
|
2671
|
+
role: "test-engineer",
|
|
2672
|
+
name: "Test Engineer",
|
|
2673
|
+
description: "Create, update, debug, and fix automated tests",
|
|
2581
2674
|
icon: "code",
|
|
2582
|
-
integrations: [INTEGRATIONS.
|
|
2675
|
+
integrations: [INTEGRATIONS.default],
|
|
2583
2676
|
model: "sonnet",
|
|
2584
2677
|
color: "purple",
|
|
2585
2678
|
isRequired: true,
|
|
2586
|
-
// Required for automated test generation
|
|
2587
|
-
version: "1.0.0"
|
|
2588
|
-
},
|
|
2589
|
-
"test-debugger-fixer": {
|
|
2590
|
-
role: "test-debugger-fixer",
|
|
2591
|
-
name: "Test Debugger & Fixer",
|
|
2592
|
-
description: "Debug and fix failing automated tests automatically",
|
|
2593
|
-
icon: "wrench",
|
|
2594
|
-
integrations: [INTEGRATIONS.playwright],
|
|
2595
|
-
model: "sonnet",
|
|
2596
|
-
color: "yellow",
|
|
2597
|
-
isRequired: true,
|
|
2598
|
-
// Required for automated test execution and fixing
|
|
2599
2679
|
version: "1.0.0"
|
|
2600
2680
|
},
|
|
2601
2681
|
"changelog-historian": {
|
|
@@ -2911,41 +2991,46 @@ var CONTENT = `You are an expert automated test execution specialist. Your prima
|
|
|
2911
2991
|
|
|
2912
2992
|
When you encounter ambiguous test steps, make intelligent decisions based on common testing patterns and document your interpretation. Prioritize capturing evidence over speed.`;
|
|
2913
2993
|
|
|
2914
|
-
// src/subagents/templates/test-
|
|
2994
|
+
// src/subagents/templates/test-engineer/default.ts
|
|
2915
2995
|
init_cjs_shims();
|
|
2916
2996
|
var FRONTMATTER2 = {
|
|
2917
|
-
name: "test-
|
|
2918
|
-
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.
|
|
2919
2999
|
user: "Generate test cases for the login feature based on the test plan"
|
|
2920
|
-
assistant: "I'll use the test-
|
|
2921
|
-
<commentary>Since the user wants to generate test code from a test plan, use the Task tool to launch the test-
|
|
2922
|
-
user: "
|
|
2923
|
-
assistant: "
|
|
2924
|
-
<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>`,
|
|
2925
3008
|
model: "sonnet",
|
|
2926
3009
|
color: "purple"
|
|
2927
3010
|
};
|
|
2928
|
-
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.
|
|
2929
3012
|
|
|
2930
|
-
**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.
|
|
2931
3014
|
|
|
2932
3015
|
**Also read:** \`./tests/docs/testing-best-practices.md\` for test isolation, authentication, and anti-pattern guidance.
|
|
2933
3016
|
|
|
2934
3017
|
**Setup:**
|
|
2935
3018
|
|
|
2936
|
-
1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-
|
|
3019
|
+
1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-engineer")}
|
|
2937
3020
|
|
|
2938
|
-
**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.
|
|
2939
3022
|
|
|
2940
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.
|
|
2941
3024
|
|
|
2942
|
-
3. **Read manual test cases**:
|
|
3025
|
+
3. **Read manual test cases**: Read test cases from \`./test-cases/*.md\` with frontmatter indicating automation status.
|
|
2943
3026
|
|
|
2944
|
-
|
|
3027
|
+
**Determine your mode from the delegation context:**
|
|
2945
3028
|
|
|
2946
|
-
|
|
3029
|
+
---
|
|
3030
|
+
|
|
3031
|
+
## Mode A: CREATE \u2014 New Test Generation
|
|
2947
3032
|
|
|
2948
|
-
For each test case marked
|
|
3033
|
+
For each test case marked \`automated: true\`:
|
|
2949
3034
|
|
|
2950
3035
|
**STEP 1: Check existing infrastructure**
|
|
2951
3036
|
- Check memory for existing page objects
|
|
@@ -2953,7 +3038,7 @@ For each test case marked for automation:
|
|
|
2953
3038
|
- Identify what's missing for this test
|
|
2954
3039
|
|
|
2955
3040
|
**STEP 2: Build missing infrastructure** (if needed)
|
|
2956
|
-
- Explore feature under test
|
|
3041
|
+
- Explore feature under test: navigate, inspect elements, gather selectors, document URLs, capture screenshots
|
|
2957
3042
|
- Create page objects with verified selectors following \`./tests/CLAUDE.md\` conventions
|
|
2958
3043
|
- Create supporting code (fixtures, helpers, types) as needed
|
|
2959
3044
|
|
|
@@ -2974,51 +3059,25 @@ For each test case marked for automation:
|
|
|
2974
3059
|
- Reuse existing page objects and infrastructure
|
|
2975
3060
|
- Update memory with new patterns
|
|
2976
3061
|
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-code-generator")}
|
|
2980
|
-
|
|
2981
|
-
Update: generated artifacts, test cases automated, selector strategies, application patterns, test creation history.
|
|
2982
|
-
|
|
2983
|
-
**Generate summary**: tests created (pass/fail), manual test cases automated, page objects/fixtures/helpers added, next steps.
|
|
2984
|
-
|
|
2985
|
-
**Critical Rules:**
|
|
2986
|
-
- **NEVER** generate selectors without exploring the live application
|
|
2987
|
-
- **NEVER** read .env \u2014 only .env.testdata
|
|
2988
|
-
- **ALWAYS** explore application using playwright-cli before generating code
|
|
2989
|
-
- **ALWAYS** verify selectors in live browser using playwright-cli snapshot
|
|
2990
|
-
- **ALWAYS** follow conventions from \`./tests/CLAUDE.md\` and \`./tests/docs/testing-best-practices.md\`
|
|
2991
|
-
- **ALWAYS** link manual \u2194 automated tests bidirectionally`;
|
|
2992
|
-
|
|
2993
|
-
// src/subagents/templates/test-debugger-fixer/playwright.ts
|
|
2994
|
-
init_cjs_shims();
|
|
2995
|
-
var FRONTMATTER3 = {
|
|
2996
|
-
name: "test-debugger-fixer",
|
|
2997
|
-
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.
|
|
2998
|
-
user: "Fix the failing login test"
|
|
2999
|
-
assistant: "I'll use the test-debugger-fixer agent to analyze the failure, debug the issue, and fix the test code."
|
|
3000
|
-
<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.
|
|
3001
|
-
user: "Fix the flaky checkout test"
|
|
3002
|
-
assistant: "Let me use the test-debugger-fixer agent to identify and fix the race condition causing the flakiness."
|
|
3003
|
-
<commentary>The user needs a flaky test fixed, so launch the test-debugger-fixer agent to debug and stabilize the test.</commentary></example>`,
|
|
3004
|
-
model: "sonnet",
|
|
3005
|
-
color: "yellow"
|
|
3006
|
-
};
|
|
3007
|
-
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.
|
|
3008
|
-
|
|
3009
|
-
**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.
|
|
3010
|
-
|
|
3011
|
-
**Also read:** \`./tests/docs/testing-best-practices.md\` for test isolation and debugging techniques.
|
|
3062
|
+
---
|
|
3012
3063
|
|
|
3013
|
-
|
|
3064
|
+
## Mode B: UPDATE \u2014 Modify Existing Tests
|
|
3014
3065
|
|
|
3015
|
-
|
|
3066
|
+
For each test case that needs updating:
|
|
3016
3067
|
|
|
3017
|
-
|
|
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
|
|
3018
3077
|
|
|
3019
|
-
|
|
3078
|
+
---
|
|
3020
3079
|
|
|
3021
|
-
|
|
3080
|
+
## Mode C: FIX \u2014 Debug and Fix Failing Tests
|
|
3022
3081
|
|
|
3023
3082
|
**Step 1: Read test file** \u2014 understand test intent, logic, and page objects used.
|
|
3024
3083
|
|
|
@@ -3028,7 +3087,7 @@ var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsi
|
|
|
3028
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
|
|
3029
3088
|
- **Test issue**: Selector not found (but element exists), timeout, flaky behavior, wrong assertion, test isolation problem \u2192 proceed to fix
|
|
3030
3089
|
|
|
3031
|
-
**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.
|
|
3032
3091
|
|
|
3033
3092
|
**Step 5: Apply fix** \u2014 edit test file using fix patterns from \`./tests/CLAUDE.md\`. Update selectors, waits, assertions, or logic.
|
|
3034
3093
|
|
|
@@ -3044,9 +3103,15 @@ var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsi
|
|
|
3044
3103
|
- Fixed: provide file path, fix description, verification result
|
|
3045
3104
|
- Still failing after 3 attempts: report as likely product bug
|
|
3046
3105
|
|
|
3047
|
-
|
|
3106
|
+
---
|
|
3107
|
+
|
|
3108
|
+
**After all work:**
|
|
3109
|
+
|
|
3110
|
+
${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-engineer")}
|
|
3048
3111
|
|
|
3049
|
-
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.
|
|
3050
3115
|
|
|
3051
3116
|
**Test Result Format**: The custom Bugzy reporter produces:
|
|
3052
3117
|
- **Manifest**: \`test-runs/{timestamp}/manifest.json\` \u2014 overall run summary
|
|
@@ -3055,25 +3120,29 @@ Update: fixed issues history, failure pattern library, known selectors, known pr
|
|
|
3055
3120
|
Read result.json from the execution path to understand failure context. Video, trace, and screenshots are in the same exec-{num}/ folder.
|
|
3056
3121
|
|
|
3057
3122
|
**Critical Rules:**
|
|
3123
|
+
- **NEVER** generate selectors without exploring the live application first
|
|
3124
|
+
- **NEVER** read .env \u2014 only .env.testdata
|
|
3058
3125
|
- **NEVER** fix tests when the issue is a product bug
|
|
3059
3126
|
- **NEVER** make tests pass by lowering expectations
|
|
3060
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
|
|
3061
3132
|
- **ALWAYS** classify before fixing (product bug vs test issue)
|
|
3062
|
-
- **ALWAYS** follow fix patterns from \`./tests/CLAUDE.md\`
|
|
3063
3133
|
- **ALWAYS** verify fixes by re-running tests
|
|
3064
|
-
- **ALWAYS** run flaky tests 10 times to confirm stability
|
|
3065
|
-
- **ALWAYS** follow \`./tests/docs/testing-best-practices.md\``;
|
|
3134
|
+
- **ALWAYS** run flaky tests 10 times to confirm stability`;
|
|
3066
3135
|
|
|
3067
3136
|
// src/subagents/templates/team-communicator/local.ts
|
|
3068
3137
|
init_cjs_shims();
|
|
3069
|
-
var
|
|
3138
|
+
var FRONTMATTER3 = {
|
|
3070
3139
|
name: "team-communicator",
|
|
3071
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>`,
|
|
3072
3141
|
tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "AskUserQuestion", "ListMcpResourcesTool", "ReadMcpResourceTool"],
|
|
3073
3142
|
model: "haiku",
|
|
3074
3143
|
color: "yellow"
|
|
3075
3144
|
};
|
|
3076
|
-
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.
|
|
3077
3146
|
|
|
3078
3147
|
## Core Philosophy: Direct Terminal Communication
|
|
3079
3148
|
|
|
@@ -3271,14 +3340,14 @@ You are not a formal report generator. You are a helpful QA engineer communicati
|
|
|
3271
3340
|
|
|
3272
3341
|
// src/subagents/templates/team-communicator/slack.ts
|
|
3273
3342
|
init_cjs_shims();
|
|
3274
|
-
var
|
|
3343
|
+
var FRONTMATTER4 = {
|
|
3275
3344
|
name: "team-communicator",
|
|
3276
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>`,
|
|
3277
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"],
|
|
3278
3347
|
model: "haiku",
|
|
3279
3348
|
color: "yellow"
|
|
3280
3349
|
};
|
|
3281
|
-
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.
|
|
3282
3351
|
|
|
3283
3352
|
## Core Philosophy
|
|
3284
3353
|
|
|
@@ -3390,14 +3459,14 @@ Before sending:
|
|
|
3390
3459
|
|
|
3391
3460
|
// src/subagents/templates/team-communicator/teams.ts
|
|
3392
3461
|
init_cjs_shims();
|
|
3393
|
-
var
|
|
3462
|
+
var FRONTMATTER5 = {
|
|
3394
3463
|
name: "team-communicator",
|
|
3395
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>`,
|
|
3396
3465
|
tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__teams__teams_post_message", "mcp__teams__teams_post_rich_message"],
|
|
3397
3466
|
model: "haiku",
|
|
3398
3467
|
color: "yellow"
|
|
3399
3468
|
};
|
|
3400
|
-
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.
|
|
3401
3470
|
|
|
3402
3471
|
## Core Philosophy: Concise, Human Communication
|
|
3403
3472
|
|
|
@@ -3743,14 +3812,14 @@ You are not a formal report generator. You are a helpful QA engineer who knows h
|
|
|
3743
3812
|
|
|
3744
3813
|
// src/subagents/templates/team-communicator/email.ts
|
|
3745
3814
|
init_cjs_shims();
|
|
3746
|
-
var
|
|
3815
|
+
var FRONTMATTER6 = {
|
|
3747
3816
|
name: "team-communicator",
|
|
3748
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>`,
|
|
3749
3818
|
tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__resend__resend_send_email", "mcp__resend__resend_send_batch_emails", "ListMcpResourcesTool", "ReadMcpResourceTool"],
|
|
3750
3819
|
model: "haiku",
|
|
3751
3820
|
color: "yellow"
|
|
3752
3821
|
};
|
|
3753
|
-
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.
|
|
3754
3823
|
|
|
3755
3824
|
## Core Philosophy: Concise, Professional Email Communication
|
|
3756
3825
|
|
|
@@ -3998,7 +4067,7 @@ You are not a formal report generator. You are a helpful QA engineer who knows h
|
|
|
3998
4067
|
|
|
3999
4068
|
// src/subagents/templates/documentation-researcher/notion.ts
|
|
4000
4069
|
init_cjs_shims();
|
|
4001
|
-
var
|
|
4070
|
+
var FRONTMATTER7 = {
|
|
4002
4071
|
name: "documentation-researcher",
|
|
4003
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.
|
|
4004
4073
|
user: "I need to generate test cases for the new OAuth flow"
|
|
@@ -4010,7 +4079,7 @@ assistant: "I'll use the documentation-researcher agent to search our Notion doc
|
|
|
4010
4079
|
model: "haiku",
|
|
4011
4080
|
color: "cyan"
|
|
4012
4081
|
};
|
|
4013
|
-
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.
|
|
4014
4083
|
|
|
4015
4084
|
## Core Responsibilities
|
|
4016
4085
|
|
|
@@ -4077,7 +4146,7 @@ You are meticulous about maintaining your memory file as a living document that
|
|
|
4077
4146
|
|
|
4078
4147
|
// src/subagents/templates/documentation-researcher/confluence.ts
|
|
4079
4148
|
init_cjs_shims();
|
|
4080
|
-
var
|
|
4149
|
+
var FRONTMATTER8 = {
|
|
4081
4150
|
name: "documentation-researcher",
|
|
4082
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.
|
|
4083
4152
|
user: "I need to create a test plan for the new user profile feature"
|
|
@@ -4089,7 +4158,7 @@ assistant: "I'll use the documentation-researcher agent to search our Confluence
|
|
|
4089
4158
|
model: "sonnet",
|
|
4090
4159
|
color: "cyan"
|
|
4091
4160
|
};
|
|
4092
|
-
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.
|
|
4093
4162
|
|
|
4094
4163
|
## Core Responsibilities
|
|
4095
4164
|
|
|
@@ -4190,7 +4259,7 @@ You are meticulous about maintaining your memory file as a living document that
|
|
|
4190
4259
|
|
|
4191
4260
|
// src/subagents/templates/documentation-researcher/jira.ts
|
|
4192
4261
|
init_cjs_shims();
|
|
4193
|
-
var
|
|
4262
|
+
var FRONTMATTER9 = {
|
|
4194
4263
|
name: "documentation-researcher",
|
|
4195
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.
|
|
4196
4265
|
user: "Generate test cases for the checkout flow feature"
|
|
@@ -4202,7 +4271,7 @@ assistant: "I'll use the documentation-researcher agent to search Jira comments
|
|
|
4202
4271
|
model: "haiku",
|
|
4203
4272
|
color: "cyan"
|
|
4204
4273
|
};
|
|
4205
|
-
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.
|
|
4206
4275
|
|
|
4207
4276
|
## Core Responsibilities
|
|
4208
4277
|
|
|
@@ -4321,7 +4390,7 @@ You are meticulous about maintaining your memory file as a living document that
|
|
|
4321
4390
|
|
|
4322
4391
|
// src/subagents/templates/issue-tracker/linear.ts
|
|
4323
4392
|
init_cjs_shims();
|
|
4324
|
-
var
|
|
4393
|
+
var FRONTMATTER10 = {
|
|
4325
4394
|
name: "issue-tracker",
|
|
4326
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.
|
|
4327
4396
|
user: "The login flow is broken - users get a 500 error when submitting credentials"
|
|
@@ -4333,7 +4402,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to QA
|
|
|
4333
4402
|
model: "sonnet",
|
|
4334
4403
|
color: "red"
|
|
4335
4404
|
};
|
|
4336
|
-
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.
|
|
4337
4406
|
|
|
4338
4407
|
**Core Responsibilities:**
|
|
4339
4408
|
|
|
@@ -4502,7 +4571,7 @@ You are focused on creating bug reports that fit Linear's streamlined workflow w
|
|
|
4502
4571
|
|
|
4503
4572
|
// src/subagents/templates/issue-tracker/jira.ts
|
|
4504
4573
|
init_cjs_shims();
|
|
4505
|
-
var
|
|
4574
|
+
var FRONTMATTER11 = {
|
|
4506
4575
|
name: "issue-tracker",
|
|
4507
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.
|
|
4508
4577
|
user: "5 tests failed in the checkout flow - payment validation is broken"
|
|
@@ -4514,7 +4583,7 @@ assistant: "Let me use the issue-tracker agent to transition PROJ-456 to Done an
|
|
|
4514
4583
|
model: "sonnet",
|
|
4515
4584
|
color: "red"
|
|
4516
4585
|
};
|
|
4517
|
-
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.
|
|
4518
4587
|
|
|
4519
4588
|
**Core Responsibilities:**
|
|
4520
4589
|
|
|
@@ -4677,7 +4746,7 @@ init_cjs_shims();
|
|
|
4677
4746
|
|
|
4678
4747
|
// src/subagents/templates/issue-tracker/azure-devops.ts
|
|
4679
4748
|
init_cjs_shims();
|
|
4680
|
-
var
|
|
4749
|
+
var FRONTMATTER12 = {
|
|
4681
4750
|
name: "issue-tracker",
|
|
4682
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.
|
|
4683
4752
|
user: "5 tests failed in the checkout flow - payment validation is broken"
|
|
@@ -4689,7 +4758,7 @@ assistant: "Let me use the issue-tracker agent to update work item 456 state to
|
|
|
4689
4758
|
model: "sonnet",
|
|
4690
4759
|
color: "red"
|
|
4691
4760
|
};
|
|
4692
|
-
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.
|
|
4693
4762
|
|
|
4694
4763
|
**Core Responsibilities:**
|
|
4695
4764
|
|
|
@@ -4905,7 +4974,7 @@ You are meticulous about maintaining your memory file as a critical resource for
|
|
|
4905
4974
|
|
|
4906
4975
|
// src/subagents/templates/issue-tracker/notion.ts
|
|
4907
4976
|
init_cjs_shims();
|
|
4908
|
-
var
|
|
4977
|
+
var FRONTMATTER13 = {
|
|
4909
4978
|
name: "issue-tracker",
|
|
4910
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.
|
|
4911
4980
|
user: "The submit button on the checkout page doesn't work on mobile Safari"
|
|
@@ -4917,7 +4986,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to 'QA
|
|
|
4917
4986
|
model: "haiku",
|
|
4918
4987
|
color: "red"
|
|
4919
4988
|
};
|
|
4920
|
-
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.
|
|
4921
4990
|
|
|
4922
4991
|
**Core Responsibilities:**
|
|
4923
4992
|
|
|
@@ -5065,7 +5134,7 @@ You are meticulous about maintaining your memory file as a critical resource tha
|
|
|
5065
5134
|
|
|
5066
5135
|
// src/subagents/templates/issue-tracker/slack.ts
|
|
5067
5136
|
init_cjs_shims();
|
|
5068
|
-
var
|
|
5137
|
+
var FRONTMATTER14 = {
|
|
5069
5138
|
name: "issue-tracker",
|
|
5070
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.
|
|
5071
5140
|
user: "3 critical tests failed in the payment flow - looks like the Stripe integration is broken"
|
|
@@ -5077,7 +5146,7 @@ assistant: "Let me use the issue-tracker agent to update the story thread with Q
|
|
|
5077
5146
|
model: "sonnet",
|
|
5078
5147
|
color: "red"
|
|
5079
5148
|
};
|
|
5080
|
-
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.
|
|
5081
5150
|
|
|
5082
5151
|
**Core Responsibilities:**
|
|
5083
5152
|
|
|
@@ -5300,7 +5369,7 @@ You are focused on creating clear, organized issue threads that leverage Slack's
|
|
|
5300
5369
|
|
|
5301
5370
|
// src/subagents/templates/changelog-historian/github.ts
|
|
5302
5371
|
init_cjs_shims();
|
|
5303
|
-
var
|
|
5372
|
+
var FRONTMATTER15 = {
|
|
5304
5373
|
name: "changelog-historian",
|
|
5305
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.
|
|
5306
5375
|
user: "The checkout flow test is failing in staging. What changed recently?"
|
|
@@ -5312,7 +5381,7 @@ assistant: "I'll use the changelog-historian agent to compare the two releases a
|
|
|
5312
5381
|
model: "haiku",
|
|
5313
5382
|
color: "gray"
|
|
5314
5383
|
};
|
|
5315
|
-
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.
|
|
5316
5385
|
|
|
5317
5386
|
## Core Responsibilities
|
|
5318
5387
|
|
|
@@ -5429,80 +5498,74 @@ var TEMPLATES = {
|
|
|
5429
5498
|
content: CONTENT
|
|
5430
5499
|
}
|
|
5431
5500
|
},
|
|
5432
|
-
"test-
|
|
5433
|
-
|
|
5501
|
+
"test-engineer": {
|
|
5502
|
+
default: {
|
|
5434
5503
|
frontmatter: FRONTMATTER2,
|
|
5435
5504
|
content: CONTENT2
|
|
5436
5505
|
}
|
|
5437
5506
|
},
|
|
5438
|
-
"test-debugger-fixer": {
|
|
5439
|
-
playwright: {
|
|
5440
|
-
frontmatter: FRONTMATTER3,
|
|
5441
|
-
content: CONTENT3
|
|
5442
|
-
}
|
|
5443
|
-
},
|
|
5444
5507
|
"team-communicator": {
|
|
5445
5508
|
local: {
|
|
5509
|
+
frontmatter: FRONTMATTER3,
|
|
5510
|
+
content: CONTENT3
|
|
5511
|
+
},
|
|
5512
|
+
slack: {
|
|
5446
5513
|
frontmatter: FRONTMATTER4,
|
|
5447
5514
|
content: CONTENT4
|
|
5448
5515
|
},
|
|
5449
|
-
|
|
5516
|
+
teams: {
|
|
5450
5517
|
frontmatter: FRONTMATTER5,
|
|
5451
5518
|
content: CONTENT5
|
|
5452
5519
|
},
|
|
5453
|
-
|
|
5520
|
+
email: {
|
|
5454
5521
|
frontmatter: FRONTMATTER6,
|
|
5455
5522
|
content: CONTENT6
|
|
5456
|
-
},
|
|
5457
|
-
email: {
|
|
5458
|
-
frontmatter: FRONTMATTER7,
|
|
5459
|
-
content: CONTENT7
|
|
5460
5523
|
}
|
|
5461
5524
|
},
|
|
5462
5525
|
"documentation-researcher": {
|
|
5463
5526
|
notion: {
|
|
5527
|
+
frontmatter: FRONTMATTER7,
|
|
5528
|
+
content: CONTENT7
|
|
5529
|
+
},
|
|
5530
|
+
confluence: {
|
|
5464
5531
|
frontmatter: FRONTMATTER8,
|
|
5465
5532
|
content: CONTENT8
|
|
5466
5533
|
},
|
|
5467
|
-
|
|
5534
|
+
jira: {
|
|
5468
5535
|
frontmatter: FRONTMATTER9,
|
|
5469
5536
|
content: CONTENT9
|
|
5470
|
-
},
|
|
5471
|
-
jira: {
|
|
5472
|
-
frontmatter: FRONTMATTER10,
|
|
5473
|
-
content: CONTENT10
|
|
5474
5537
|
}
|
|
5475
5538
|
},
|
|
5476
5539
|
"issue-tracker": {
|
|
5477
5540
|
linear: {
|
|
5478
|
-
frontmatter:
|
|
5479
|
-
content:
|
|
5541
|
+
frontmatter: FRONTMATTER10,
|
|
5542
|
+
content: CONTENT10
|
|
5480
5543
|
},
|
|
5481
5544
|
jira: {
|
|
5482
|
-
frontmatter:
|
|
5483
|
-
content:
|
|
5545
|
+
frontmatter: FRONTMATTER11,
|
|
5546
|
+
content: CONTENT11
|
|
5484
5547
|
},
|
|
5485
5548
|
"jira-server": {
|
|
5549
|
+
frontmatter: FRONTMATTER11,
|
|
5550
|
+
content: CONTENT11
|
|
5551
|
+
},
|
|
5552
|
+
"azure-devops": {
|
|
5486
5553
|
frontmatter: FRONTMATTER12,
|
|
5487
5554
|
content: CONTENT12
|
|
5488
5555
|
},
|
|
5489
|
-
|
|
5556
|
+
notion: {
|
|
5490
5557
|
frontmatter: FRONTMATTER13,
|
|
5491
5558
|
content: CONTENT13
|
|
5492
5559
|
},
|
|
5493
|
-
|
|
5560
|
+
slack: {
|
|
5494
5561
|
frontmatter: FRONTMATTER14,
|
|
5495
5562
|
content: CONTENT14
|
|
5496
|
-
},
|
|
5497
|
-
slack: {
|
|
5498
|
-
frontmatter: FRONTMATTER15,
|
|
5499
|
-
content: CONTENT15
|
|
5500
5563
|
}
|
|
5501
5564
|
},
|
|
5502
5565
|
"changelog-historian": {
|
|
5503
5566
|
github: {
|
|
5504
|
-
frontmatter:
|
|
5505
|
-
content:
|
|
5567
|
+
frontmatter: FRONTMATTER15,
|
|
5568
|
+
content: CONTENT15
|
|
5506
5569
|
}
|
|
5507
5570
|
}
|
|
5508
5571
|
};
|
|
@@ -6353,9 +6416,9 @@ var fixTestIssuesStep = {
|
|
|
6353
6416
|
category: "execution",
|
|
6354
6417
|
content: `## Fix Test Issues Automatically
|
|
6355
6418
|
|
|
6356
|
-
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:
|
|
6357
6420
|
|
|
6358
|
-
{{
|
|
6421
|
+
{{INVOKE_TEST_ENGINEER}}
|
|
6359
6422
|
|
|
6360
6423
|
For each failed test classified as a test issue (not a product bug), provide:
|
|
6361
6424
|
- Test run timestamp: [from manifest.timestamp]
|
|
@@ -6378,7 +6441,7 @@ The agent will:
|
|
|
6378
6441
|
7. Repeat up to 3 times if needed (exec-1, exec-2, exec-3)
|
|
6379
6442
|
8. Report success or escalate as likely product bug
|
|
6380
6443
|
|
|
6381
|
-
**After test-
|
|
6444
|
+
**After test-engineer completes:**
|
|
6382
6445
|
- If fix succeeded: Mark test as fixed, add to "Tests Fixed" list
|
|
6383
6446
|
- If still failing after 3 attempts: Reclassify as potential product bug
|
|
6384
6447
|
|
|
@@ -6386,7 +6449,7 @@ The agent will:
|
|
|
6386
6449
|
- Maintain list of tests fixed automatically
|
|
6387
6450
|
- Include fix description (e.g., "Applied selector fix pattern from CLAUDE.md")
|
|
6388
6451
|
- Note verification status (test now passes)`,
|
|
6389
|
-
invokesSubagents: ["test-
|
|
6452
|
+
invokesSubagents: ["test-engineer"],
|
|
6390
6453
|
tags: ["execution", "fixing", "automation"]
|
|
6391
6454
|
};
|
|
6392
6455
|
|
|
@@ -6757,7 +6820,7 @@ var automateTestCasesStep = {
|
|
|
6757
6820
|
|
|
6758
6821
|
For each test case marked \`automated: true\`:
|
|
6759
6822
|
|
|
6760
|
-
{{
|
|
6823
|
+
{{INVOKE_TEST_ENGINEER}} with the following context:
|
|
6761
6824
|
|
|
6762
6825
|
"Automate test cases for the focus area: $ARGUMENTS
|
|
6763
6826
|
|
|
@@ -6790,7 +6853,7 @@ After automation, update the manual test case frontmatter:
|
|
|
6790
6853
|
automated: true
|
|
6791
6854
|
automated_test: tests/specs/feature/test-name.spec.ts
|
|
6792
6855
|
\`\`\``,
|
|
6793
|
-
invokesSubagents: ["test-
|
|
6856
|
+
invokesSubagents: ["test-engineer"],
|
|
6794
6857
|
tags: ["generation", "automation"]
|
|
6795
6858
|
};
|
|
6796
6859
|
|
|
@@ -7210,6 +7273,29 @@ After test generation completes, verify all artifacts meet quality standards:
|
|
|
7210
7273
|
tags: ["maintenance", "validation", "test-artifacts"]
|
|
7211
7274
|
};
|
|
7212
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
|
+
|
|
7213
7299
|
// src/tasks/steps/index.ts
|
|
7214
7300
|
init_types();
|
|
7215
7301
|
var STEP_LIBRARY = {
|
|
@@ -7247,7 +7333,8 @@ var STEP_LIBRARY = {
|
|
|
7247
7333
|
"generate-final-report": generateFinalReportStep,
|
|
7248
7334
|
"update-exploration-artifacts": updateExplorationArtifactsStep,
|
|
7249
7335
|
"cleanup-temp-files": cleanupTempFilesStep,
|
|
7250
|
-
"validate-test-artifacts": validateTestArtifactsStep
|
|
7336
|
+
"validate-test-artifacts": validateTestArtifactsStep,
|
|
7337
|
+
"sync-automation-from-feedback": syncAutomationFromFeedbackStep
|
|
7251
7338
|
};
|
|
7252
7339
|
function getStep(id) {
|
|
7253
7340
|
const step = STEP_LIBRARY[id];
|
|
@@ -7353,8 +7440,7 @@ init_cjs_shims();
|
|
|
7353
7440
|
var TOOL_STRINGS = {
|
|
7354
7441
|
"claude-code": {
|
|
7355
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.',
|
|
7356
|
-
|
|
7357
|
-
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.',
|
|
7358
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.',
|
|
7359
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.",
|
|
7360
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.',
|
|
@@ -7363,8 +7449,7 @@ var TOOL_STRINGS = {
|
|
|
7363
7449
|
},
|
|
7364
7450
|
"cursor": {
|
|
7365
7451
|
INVOKE_BROWSER_AUTOMATION: 'Run the browser-automation agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/browser-automation.md)" --output-format text\n```',
|
|
7366
|
-
|
|
7367
|
-
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```',
|
|
7368
7453
|
INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/team-communicator.md)" --output-format text\n```',
|
|
7369
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.",
|
|
7370
7455
|
INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/issue-tracker.md)" --output-format text\n```',
|
|
@@ -7373,8 +7458,7 @@ var TOOL_STRINGS = {
|
|
|
7373
7458
|
},
|
|
7374
7459
|
"codex": {
|
|
7375
7460
|
INVOKE_BROWSER_AUTOMATION: 'Run the browser-automation agent:\n```bash\ncodex -p "$(cat .codex/agents/browser-automation.md)"\n```',
|
|
7376
|
-
|
|
7377
|
-
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```',
|
|
7378
7462
|
INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncodex -p "$(cat .codex/agents/team-communicator.md)"\n```',
|
|
7379
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.",
|
|
7380
7464
|
INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncodex -p "$(cat .codex/agents/issue-tracker.md)"\n```',
|
|
@@ -7397,8 +7481,7 @@ function replaceInvocationPlaceholders(content, toolId, isLocal = false) {
|
|
|
7397
7481
|
let result = content;
|
|
7398
7482
|
const keys = [
|
|
7399
7483
|
"INVOKE_BROWSER_AUTOMATION",
|
|
7400
|
-
"
|
|
7401
|
-
"INVOKE_TEST_CODE_GENERATOR",
|
|
7484
|
+
"INVOKE_TEST_ENGINEER",
|
|
7402
7485
|
"INVOKE_TEAM_COMMUNICATOR",
|
|
7403
7486
|
"INVOKE_ISSUE_TRACKER",
|
|
7404
7487
|
"INVOKE_DOCUMENTATION_RESEARCHER",
|