@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/index.js
CHANGED
|
@@ -339,20 +339,20 @@ Example structure:
|
|
|
339
339
|
{
|
|
340
340
|
inline: true,
|
|
341
341
|
title: "Generate All Manual Test Case Files",
|
|
342
|
-
content: `Generate ALL manual test case markdown files in \`./test-cases/\` BEFORE invoking the test-
|
|
342
|
+
content: `Generate ALL manual test case markdown files in \`./test-cases/\` BEFORE invoking the test-engineer agent.
|
|
343
343
|
|
|
344
344
|
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:
|
|
345
345
|
- Frontmatter with test case metadata (id, title, type, area, \`automated: true/false\`, \`automated_test:\` empty)
|
|
346
346
|
- Clear test steps with expected results
|
|
347
347
|
- Required test data references (use env var names, not values)`
|
|
348
348
|
},
|
|
349
|
-
// Step 11: Automate Test Cases (inline - detailed instructions for test-
|
|
349
|
+
// Step 11: Automate Test Cases (inline - detailed instructions for test-engineer)
|
|
350
350
|
{
|
|
351
351
|
inline: true,
|
|
352
352
|
title: "Automate Test Cases Area by Area",
|
|
353
353
|
content: `**IMPORTANT**: Process each feature area separately to enable incremental, focused test creation.
|
|
354
354
|
|
|
355
|
-
**For each area**, invoke the test-
|
|
355
|
+
**For each area**, invoke the test-engineer agent:
|
|
356
356
|
|
|
357
357
|
**Prepare Area Context:**
|
|
358
358
|
Before invoking the agent, identify the test cases for the current area:
|
|
@@ -364,9 +364,9 @@ Before invoking the agent, identify the test cases for the current area:
|
|
|
364
364
|
- Existing automated tests in ./tests/specs/
|
|
365
365
|
- Existing Page Objects in ./tests/pages/
|
|
366
366
|
|
|
367
|
-
**Invoke test-
|
|
367
|
+
**Invoke test-engineer Agent:**
|
|
368
368
|
|
|
369
|
-
{{
|
|
369
|
+
{{INVOKE_TEST_ENGINEER}} for the current area with the following context:
|
|
370
370
|
|
|
371
371
|
"Automate test cases for the [AREA_NAME] area.
|
|
372
372
|
|
|
@@ -380,7 +380,7 @@ Before invoking the agent, identify the test cases for the current area:
|
|
|
380
380
|
- Existing page objects: [directory from ./tests/CLAUDE.md]
|
|
381
381
|
|
|
382
382
|
**Knowledge Base Patterns (MUST APPLY):**
|
|
383
|
-
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-
|
|
383
|
+
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.
|
|
384
384
|
|
|
385
385
|
**The agent should:**
|
|
386
386
|
1. Read the manual test case files for this area
|
|
@@ -439,7 +439,7 @@ Move to the next area and repeat until all areas are complete.
|
|
|
439
439
|
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\`).`
|
|
440
440
|
}
|
|
441
441
|
],
|
|
442
|
-
requiredSubagents: ["browser-automation", "test-
|
|
442
|
+
requiredSubagents: ["browser-automation", "test-engineer"],
|
|
443
443
|
optionalSubagents: ["documentation-researcher", "team-communicator"],
|
|
444
444
|
dependentTasks: []
|
|
445
445
|
};
|
|
@@ -626,10 +626,10 @@ After saving the test plan:
|
|
|
626
626
|
var handleMessageTask = {
|
|
627
627
|
slug: TASK_SLUGS.HANDLE_MESSAGE,
|
|
628
628
|
name: "Handle Message",
|
|
629
|
-
description: "Handle team
|
|
629
|
+
description: "Handle team messages, maintaining context for ongoing conversations",
|
|
630
630
|
frontmatter: {
|
|
631
|
-
description: "Handle team
|
|
632
|
-
"argument-hint": "[
|
|
631
|
+
description: "Handle team messages, maintaining context for ongoing conversations",
|
|
632
|
+
"argument-hint": "[team thread context or message]"
|
|
633
633
|
},
|
|
634
634
|
steps: [
|
|
635
635
|
// Step 1: Overview (inline)
|
|
@@ -638,7 +638,7 @@ var handleMessageTask = {
|
|
|
638
638
|
title: "Handle Message Overview",
|
|
639
639
|
content: `# Handle Message Command
|
|
640
640
|
|
|
641
|
-
Process team
|
|
641
|
+
Process team messages and handle multi-turn conversations with the product team about testing clarifications, ambiguities, and questions.`
|
|
642
642
|
},
|
|
643
643
|
// Step 2: Security Notice (library)
|
|
644
644
|
"security-notice",
|
|
@@ -652,19 +652,19 @@ Process team responses from Slack threads and handle multi-turn conversations wi
|
|
|
652
652
|
"load-project-context",
|
|
653
653
|
// Step 5: Knowledge Base Read (library)
|
|
654
654
|
"read-knowledge-base",
|
|
655
|
-
// Step
|
|
655
|
+
// Step 6: Detect Intent (inline - simplified, no handler file loading)
|
|
656
656
|
{
|
|
657
657
|
inline: true,
|
|
658
|
-
title: "Detect Message Intent
|
|
659
|
-
content: `
|
|
658
|
+
title: "Detect Message Intent",
|
|
659
|
+
content: `Identify the intent type from the event payload or message patterns:
|
|
660
660
|
|
|
661
|
-
####
|
|
661
|
+
#### Extract Intent from Event Payload
|
|
662
662
|
|
|
663
663
|
Check the event payload for the \`intent\` field provided by the LLM layer:
|
|
664
664
|
- If \`intent\` is present, use it directly
|
|
665
665
|
- Valid intent values: \`question\`, \`feedback\`, \`status\`
|
|
666
666
|
|
|
667
|
-
####
|
|
667
|
+
#### Fallback Intent Detection (if no intent provided)
|
|
668
668
|
|
|
669
669
|
If intent is not in the payload, detect from message patterns:
|
|
670
670
|
|
|
@@ -675,39 +675,125 @@ If intent is not in the payload, detect from message patterns:
|
|
|
675
675
|
| Question words: "what", "which", "do we have", "is there" about tests/project | \`question\` |
|
|
676
676
|
| Default (none of above) | \`feedback\` |
|
|
677
677
|
|
|
678
|
-
|
|
678
|
+
Then follow the matching handler section below.`
|
|
679
|
+
},
|
|
680
|
+
// Step 7: Process by Intent (all three handlers consolidated)
|
|
681
|
+
{
|
|
682
|
+
inline: true,
|
|
683
|
+
title: "Process Message by Intent",
|
|
684
|
+
content: `Based on the detected intent, follow the appropriate section:
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
## If intent = "feedback"
|
|
689
|
+
|
|
690
|
+
### Step 1: Parse Feedback
|
|
691
|
+
|
|
692
|
+
Extract the following from the message:
|
|
693
|
+
|
|
694
|
+
| Field | Description |
|
|
695
|
+
|-------|-------------|
|
|
696
|
+
| **Type** | \`bug_report\`, \`test_result\`, \`observation\`, \`suggestion\`, \`general\` |
|
|
697
|
+
| **Severity** | \`critical\`, \`high\`, \`medium\`, \`low\` |
|
|
698
|
+
| **Component** | Affected area (e.g., "login", "checkout") |
|
|
699
|
+
| **Description** | Core issue description |
|
|
700
|
+
| **Expected** | What should happen (if stated) |
|
|
701
|
+
| **Steps** | How to reproduce (if provided) |
|
|
702
|
+
|
|
703
|
+
**Type Detection**:
|
|
704
|
+
- \`bug_report\`: "bug", "broken", "doesn't work", "error", "crash"
|
|
705
|
+
- \`test_result\`: "test passed", "test failed", "ran tests", "testing showed"
|
|
706
|
+
- \`observation\`: "noticed", "observed", "found that", "saw that"
|
|
707
|
+
- \`suggestion\`: "should", "could we", "what if", "idea"
|
|
708
|
+
- \`general\`: Default for unclassified feedback
|
|
709
|
+
|
|
710
|
+
### Step 2: Update Test Case Specifications
|
|
711
|
+
|
|
712
|
+
**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.
|
|
713
|
+
|
|
714
|
+
For each actionable feedback item:
|
|
715
|
+
1. Identify which test case(s) are affected
|
|
716
|
+
2. Read the test case markdown file
|
|
717
|
+
3. Update the test steps, expected results, or assertions as requested
|
|
718
|
+
4. Save the modified test case file
|
|
719
|
+
|
|
720
|
+
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.
|
|
721
|
+
|
|
722
|
+
### Step 3: Acknowledge and Confirm
|
|
723
|
+
|
|
724
|
+
Respond confirming: feedback received, summary of what was captured, actions taken (including any test case updates), and follow-up questions if needed.
|
|
725
|
+
|
|
726
|
+
---
|
|
727
|
+
|
|
728
|
+
## If intent = "question"
|
|
729
|
+
|
|
730
|
+
### Step 1: Classify Question Type
|
|
679
731
|
|
|
680
|
-
|
|
681
|
-
|
|
732
|
+
| Type | Indicators | Primary Context Sources |
|
|
733
|
+
|------|------------|------------------------|
|
|
734
|
+
| **Coverage** | "what tests", "do we have", "is there a test for" | test-cases/, test-plan.md |
|
|
735
|
+
| **Results** | "did tests pass", "what failed", "test results" | test-runs/ |
|
|
736
|
+
| **Knowledge** | "how does", "what is", "explain" | knowledge-base.md |
|
|
737
|
+
| **Plan** | "what's in scope", "test plan", "testing strategy" | test-plan.md |
|
|
738
|
+
| **Process** | "how do I", "when should", "what's the workflow" | project-context.md |
|
|
682
739
|
|
|
683
|
-
|
|
684
|
-
- \`question.md\` - Questions about tests, coverage, project details
|
|
685
|
-
- \`feedback.md\` - Bug reports, test observations, general information
|
|
686
|
-
- \`status.md\` - Status checks on test runs, task progress
|
|
740
|
+
### Step 2: Load Relevant Context
|
|
687
741
|
|
|
688
|
-
|
|
742
|
+
Based on question type, load the appropriate files:
|
|
743
|
+
- **Coverage**: Read test-plan.md, list ./test-cases/, search for relevant keywords
|
|
744
|
+
- **Results**: List ./test-runs/ (newest first), read summary.json from relevant runs
|
|
745
|
+
- **Knowledge**: Read .bugzy/runtime/knowledge-base.md, search for relevant entries
|
|
746
|
+
- **Plan**: Read test-plan.md, extract relevant sections
|
|
747
|
+
- **Process**: Read .bugzy/runtime/project-context.md
|
|
689
748
|
|
|
690
|
-
|
|
749
|
+
### Step 3: Formulate Answer
|
|
691
750
|
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
5. Perform any memory updates it specifies
|
|
751
|
+
- Be specific: quote relevant sections from source files
|
|
752
|
+
- Cite sources: mention which files contain the information
|
|
753
|
+
- Quantify when possible: "We have 12 test cases covering login..."
|
|
754
|
+
- Acknowledge gaps if information is incomplete
|
|
697
755
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
756
|
+
### Step 4: Offer Follow-up
|
|
757
|
+
|
|
758
|
+
End response with offer to provide more detail and suggest related information.
|
|
759
|
+
|
|
760
|
+
---
|
|
761
|
+
|
|
762
|
+
## If intent = "status"
|
|
763
|
+
|
|
764
|
+
### Step 1: Identify Status Scope
|
|
765
|
+
|
|
766
|
+
| Scope | Indicators | Data Sources |
|
|
767
|
+
|-------|------------|--------------|
|
|
768
|
+
| **Latest test run** | "last run", "recent tests", "how did tests go" | Most recent test-runs/ directory |
|
|
769
|
+
| **Specific test** | Test ID mentioned (TC-XXX) | test-runs/*/TC-XXX/, test-cases/TC-XXX.md |
|
|
770
|
+
| **Overall** | "overall", "all tests", "pass rate" | All test-runs/ summaries |
|
|
771
|
+
| **Task progress** | "is the task done", "what's happening with" | team-communicator memory |
|
|
772
|
+
|
|
773
|
+
### Step 2: Gather Status Data
|
|
774
|
+
|
|
775
|
+
Based on scope, read the appropriate test-runs/ directories and summary files. Calculate aggregate statistics for overall status requests.
|
|
776
|
+
|
|
777
|
+
### Step 3: Format Status Report
|
|
778
|
+
|
|
779
|
+
Present status clearly: lead with pass/fail summary, use bullet points, include timestamps, offer to drill down into specifics.
|
|
780
|
+
|
|
781
|
+
### Step 4: Provide Context and Recommendations
|
|
782
|
+
|
|
783
|
+
For failing tests: suggest review, note if new or recurring. For declining trends: highlight causes. For good results: acknowledge healthy state.`
|
|
703
784
|
},
|
|
704
|
-
// Step
|
|
785
|
+
// Step 8: Sync automation from feedback (conditional on test-engineer)
|
|
786
|
+
{
|
|
787
|
+
stepId: "sync-automation-from-feedback",
|
|
788
|
+
conditionalOnSubagent: "test-engineer"
|
|
789
|
+
},
|
|
790
|
+
// Step 9: Post Response via Team Communicator
|
|
705
791
|
{
|
|
706
792
|
inline: true,
|
|
707
793
|
title: "Post Response to Team",
|
|
708
794
|
content: `## Post Response to the Team
|
|
709
795
|
|
|
710
|
-
After processing the message
|
|
796
|
+
After processing the message and composing your response:
|
|
711
797
|
|
|
712
798
|
{{INVOKE_TEAM_COMMUNICATOR}} to post the response back to the team.
|
|
713
799
|
|
|
@@ -722,13 +808,13 @@ After processing the message through the handler and composing your response:
|
|
|
722
808
|
- Ask the user whether to post \u2014 the message came from the team, the response goes back to the team
|
|
723
809
|
- Compose a draft without sending it`
|
|
724
810
|
},
|
|
725
|
-
// Step
|
|
811
|
+
// Step 10: Clarification Protocol (for ambiguous intents)
|
|
726
812
|
"clarification-protocol",
|
|
727
|
-
// Step
|
|
813
|
+
// Step 11: Knowledge Base Update (library)
|
|
728
814
|
"update-knowledge-base"
|
|
729
815
|
],
|
|
730
816
|
requiredSubagents: ["team-communicator"],
|
|
731
|
-
optionalSubagents: [],
|
|
817
|
+
optionalSubagents: ["test-engineer"],
|
|
732
818
|
dependentTasks: ["verify-changes"]
|
|
733
819
|
};
|
|
734
820
|
|
|
@@ -1328,7 +1414,7 @@ If selected test cases have formatting issues:
|
|
|
1328
1414
|
|
|
1329
1415
|
**Failure Handling**:
|
|
1330
1416
|
- Test failures are automatically triaged (product bugs vs test issues)
|
|
1331
|
-
- Test issues are automatically fixed by the test-
|
|
1417
|
+
- Test issues are automatically fixed by the test-engineer subagent
|
|
1332
1418
|
- Product bugs are logged via issue tracker after triage
|
|
1333
1419
|
- All results are analyzed for learning opportunities and team communication
|
|
1334
1420
|
- Critical failures trigger immediate team notification
|
|
@@ -1345,7 +1431,7 @@ If selected test cases have formatting issues:
|
|
|
1345
1431
|
conditionalOnSubagent: "team-communicator"
|
|
1346
1432
|
}
|
|
1347
1433
|
],
|
|
1348
|
-
requiredSubagents: ["browser-automation", "test-
|
|
1434
|
+
requiredSubagents: ["browser-automation", "test-engineer"],
|
|
1349
1435
|
optionalSubagents: ["issue-tracker", "team-communicator"],
|
|
1350
1436
|
dependentTasks: []
|
|
1351
1437
|
};
|
|
@@ -1625,7 +1711,7 @@ Generate summary of test selection based on description analysis:
|
|
|
1625
1711
|
- **Execution strategy**: [smart selection | full suite | smoke tests | user-specified]
|
|
1626
1712
|
\`\`\``
|
|
1627
1713
|
},
|
|
1628
|
-
// Step 7b: Create Tests for Coverage Gaps (conditional - test-
|
|
1714
|
+
// Step 7b: Create Tests for Coverage Gaps (conditional - test-engineer)
|
|
1629
1715
|
{
|
|
1630
1716
|
inline: true,
|
|
1631
1717
|
title: "Create Tests for Coverage Gaps",
|
|
@@ -1661,7 +1747,7 @@ If the Jira issue or PR references test accounts/data (e.g., TEST_PREMIUM_USER,
|
|
|
1661
1747
|
|
|
1662
1748
|
### Generate Automated Test Specs
|
|
1663
1749
|
|
|
1664
|
-
{{
|
|
1750
|
+
{{INVOKE_TEST_ENGINEER}} to create automated test specs:
|
|
1665
1751
|
- Read the manual test cases you just created
|
|
1666
1752
|
- Explore the feature in the browser to discover selectors and flows
|
|
1667
1753
|
- Create page objects in the directory specified by \`./tests/CLAUDE.md\`
|
|
@@ -1672,7 +1758,7 @@ If the Jira issue or PR references test accounts/data (e.g., TEST_PREMIUM_USER,
|
|
|
1672
1758
|
### If Tests Already Cover the Feature
|
|
1673
1759
|
|
|
1674
1760
|
Skip this step \u2014 proceed directly to running existing tests.`,
|
|
1675
|
-
conditionalOnSubagent: "test-
|
|
1761
|
+
conditionalOnSubagent: "test-engineer"
|
|
1676
1762
|
},
|
|
1677
1763
|
// Step 8-11: Test Execution (library steps)
|
|
1678
1764
|
"run-tests",
|
|
@@ -1861,8 +1947,8 @@ Post PR comment if GitHub context available.`,
|
|
|
1861
1947
|
**If test execution fails:** report specific error, suggest troubleshooting, don't proceed with triage.`
|
|
1862
1948
|
}
|
|
1863
1949
|
],
|
|
1864
|
-
requiredSubagents: ["browser-automation", "test-
|
|
1865
|
-
optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator", "changelog-historian"
|
|
1950
|
+
requiredSubagents: ["browser-automation", "test-engineer"],
|
|
1951
|
+
optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator", "changelog-historian"],
|
|
1866
1952
|
dependentTasks: []
|
|
1867
1953
|
};
|
|
1868
1954
|
|
|
@@ -1938,7 +2024,7 @@ This command orchestrates the complete test coverage workflow in a single execut
|
|
|
1938
2024
|
},
|
|
1939
2025
|
"generate-final-report"
|
|
1940
2026
|
],
|
|
1941
|
-
requiredSubagents: ["browser-automation", "test-
|
|
2027
|
+
requiredSubagents: ["browser-automation", "test-engineer"],
|
|
1942
2028
|
optionalSubagents: ["documentation-researcher", "team-communicator", "issue-tracker"],
|
|
1943
2029
|
dependentTasks: ["run-tests", "generate-test-cases"]
|
|
1944
2030
|
};
|
|
@@ -2047,7 +2133,7 @@ This task is triggered automatically when test results are submitted to the Bugz
|
|
|
2047
2133
|
"normalize-test-results",
|
|
2048
2134
|
// Step 7: Triage Failures (existing library step)
|
|
2049
2135
|
"triage-failures",
|
|
2050
|
-
// Step 8: Fix Test Issues (library — uses test-
|
|
2136
|
+
// Step 8: Fix Test Issues (library — uses test-engineer)
|
|
2051
2137
|
"fix-test-issues",
|
|
2052
2138
|
// Step 9: Log Product Bugs (conditional — requires issue-tracker)
|
|
2053
2139
|
{
|
|
@@ -2106,7 +2192,7 @@ Create a structured triage report as the task output. This report is stored in \
|
|
|
2106
2192
|
Output this JSON as the final result of the task.`
|
|
2107
2193
|
}
|
|
2108
2194
|
],
|
|
2109
|
-
requiredSubagents: ["browser-automation", "test-
|
|
2195
|
+
requiredSubagents: ["browser-automation", "test-engineer"],
|
|
2110
2196
|
optionalSubagents: ["issue-tracker", "team-communicator"],
|
|
2111
2197
|
dependentTasks: []
|
|
2112
2198
|
};
|
|
@@ -2163,12 +2249,14 @@ This step helps correlate what the tests cover with what the application actuall
|
|
|
2163
2249
|
{
|
|
2164
2250
|
inline: true,
|
|
2165
2251
|
title: "Commit Analysis Results",
|
|
2166
|
-
content: `Commit
|
|
2252
|
+
content: `Commit analysis artifacts to the **parent project repository** (the workspace root).
|
|
2167
2253
|
|
|
2168
|
-
|
|
2169
|
-
2. Any generated CLAUDE.md draft (if the external repo was missing one)
|
|
2254
|
+
**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.
|
|
2170
2255
|
|
|
2171
|
-
|
|
2256
|
+
**What to commit in the parent repo:**
|
|
2257
|
+
1. \`git add .bugzy/\` \u2014 the test codebase analysis report and runtime files
|
|
2258
|
+
2. Do NOT run \`git add .\` or \`git add tests\` \u2014 this would stage the submodule pointer
|
|
2259
|
+
3. \`git commit -m "chore: analyze external test codebase"\`
|
|
2172
2260
|
|
|
2173
2261
|
These artifacts will be available to all future task executions for this project.`
|
|
2174
2262
|
},
|
|
@@ -2336,40 +2424,45 @@ var CONTENT = `You are an expert automated test execution specialist. Your prima
|
|
|
2336
2424
|
|
|
2337
2425
|
When you encounter ambiguous test steps, make intelligent decisions based on common testing patterns and document your interpretation. Prioritize capturing evidence over speed.`;
|
|
2338
2426
|
|
|
2339
|
-
// src/subagents/templates/test-
|
|
2427
|
+
// src/subagents/templates/test-engineer/default.ts
|
|
2340
2428
|
var FRONTMATTER2 = {
|
|
2341
|
-
name: "test-
|
|
2342
|
-
description: `
|
|
2429
|
+
name: "test-engineer",
|
|
2430
|
+
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.
|
|
2343
2431
|
user: "Generate test cases for the login feature based on the test plan"
|
|
2344
|
-
assistant: "I'll use the test-
|
|
2345
|
-
<commentary>Since the user wants to generate test code from a test plan, use the Task tool to launch the test-
|
|
2346
|
-
user: "
|
|
2347
|
-
assistant: "
|
|
2348
|
-
<commentary>
|
|
2432
|
+
assistant: "I'll use the test-engineer agent to create both manual test case documentation and automated test scripts with page objects."
|
|
2433
|
+
<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.
|
|
2434
|
+
user: "Fix the failing login test"
|
|
2435
|
+
assistant: "I'll use the test-engineer agent to analyze the failure, debug the issue, and fix the test code."
|
|
2436
|
+
<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.
|
|
2437
|
+
user: "Update the automation code to match the updated test cases"
|
|
2438
|
+
assistant: "I'll use the test-engineer agent to update the spec files to match the modified test case specifications."
|
|
2439
|
+
<commentary>Test case specifications changed, so launch the test-engineer agent to sync automation code.</commentary></example>`,
|
|
2349
2440
|
model: "sonnet",
|
|
2350
2441
|
color: "purple"
|
|
2351
2442
|
};
|
|
2352
|
-
var CONTENT2 = `You are an expert test automation engineer
|
|
2443
|
+
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.
|
|
2353
2444
|
|
|
2354
|
-
**IMPORTANT: Read \`./tests/CLAUDE.md\` first.** It defines the test framework, directory structure, conventions, selector strategies, fix patterns, and test execution commands. All
|
|
2445
|
+
**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.
|
|
2355
2446
|
|
|
2356
2447
|
**Also read:** \`./tests/docs/testing-best-practices.md\` for test isolation, authentication, and anti-pattern guidance.
|
|
2357
2448
|
|
|
2358
2449
|
**Setup:**
|
|
2359
2450
|
|
|
2360
|
-
1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-
|
|
2451
|
+
1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-engineer")}
|
|
2361
2452
|
|
|
2362
|
-
**Key memory areas**: generated artifacts, selector strategies, application architecture patterns, test creation history.
|
|
2453
|
+
**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.
|
|
2363
2454
|
|
|
2364
2455
|
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.
|
|
2365
2456
|
|
|
2366
|
-
3. **Read manual test cases**:
|
|
2457
|
+
3. **Read manual test cases**: Read test cases from \`./test-cases/*.md\` with frontmatter indicating automation status.
|
|
2367
2458
|
|
|
2368
|
-
|
|
2459
|
+
**Determine your mode from the delegation context:**
|
|
2369
2460
|
|
|
2370
|
-
|
|
2461
|
+
---
|
|
2462
|
+
|
|
2463
|
+
## Mode A: CREATE \u2014 New Test Generation
|
|
2371
2464
|
|
|
2372
|
-
For each test case marked
|
|
2465
|
+
For each test case marked \`automated: true\`:
|
|
2373
2466
|
|
|
2374
2467
|
**STEP 1: Check existing infrastructure**
|
|
2375
2468
|
- Check memory for existing page objects
|
|
@@ -2377,7 +2470,7 @@ For each test case marked for automation:
|
|
|
2377
2470
|
- Identify what's missing for this test
|
|
2378
2471
|
|
|
2379
2472
|
**STEP 2: Build missing infrastructure** (if needed)
|
|
2380
|
-
- Explore feature under test
|
|
2473
|
+
- Explore feature under test: navigate, inspect elements, gather selectors, document URLs, capture screenshots
|
|
2381
2474
|
- Create page objects with verified selectors following \`./tests/CLAUDE.md\` conventions
|
|
2382
2475
|
- Create supporting code (fixtures, helpers, types) as needed
|
|
2383
2476
|
|
|
@@ -2398,50 +2491,25 @@ For each test case marked for automation:
|
|
|
2398
2491
|
- Reuse existing page objects and infrastructure
|
|
2399
2492
|
- Update memory with new patterns
|
|
2400
2493
|
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-code-generator")}
|
|
2404
|
-
|
|
2405
|
-
Update: generated artifacts, test cases automated, selector strategies, application patterns, test creation history.
|
|
2406
|
-
|
|
2407
|
-
**Generate summary**: tests created (pass/fail), manual test cases automated, page objects/fixtures/helpers added, next steps.
|
|
2408
|
-
|
|
2409
|
-
**Critical Rules:**
|
|
2410
|
-
- **NEVER** generate selectors without exploring the live application
|
|
2411
|
-
- **NEVER** read .env \u2014 only .env.testdata
|
|
2412
|
-
- **ALWAYS** explore application using playwright-cli before generating code
|
|
2413
|
-
- **ALWAYS** verify selectors in live browser using playwright-cli snapshot
|
|
2414
|
-
- **ALWAYS** follow conventions from \`./tests/CLAUDE.md\` and \`./tests/docs/testing-best-practices.md\`
|
|
2415
|
-
- **ALWAYS** link manual \u2194 automated tests bidirectionally`;
|
|
2416
|
-
|
|
2417
|
-
// src/subagents/templates/test-debugger-fixer/playwright.ts
|
|
2418
|
-
var FRONTMATTER3 = {
|
|
2419
|
-
name: "test-debugger-fixer",
|
|
2420
|
-
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.
|
|
2421
|
-
user: "Fix the failing login test"
|
|
2422
|
-
assistant: "I'll use the test-debugger-fixer agent to analyze the failure, debug the issue, and fix the test code."
|
|
2423
|
-
<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.
|
|
2424
|
-
user: "Fix the flaky checkout test"
|
|
2425
|
-
assistant: "Let me use the test-debugger-fixer agent to identify and fix the race condition causing the flakiness."
|
|
2426
|
-
<commentary>The user needs a flaky test fixed, so launch the test-debugger-fixer agent to debug and stabilize the test.</commentary></example>`,
|
|
2427
|
-
model: "sonnet",
|
|
2428
|
-
color: "yellow"
|
|
2429
|
-
};
|
|
2430
|
-
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.
|
|
2431
|
-
|
|
2432
|
-
**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.
|
|
2494
|
+
---
|
|
2433
2495
|
|
|
2434
|
-
|
|
2496
|
+
## Mode B: UPDATE \u2014 Modify Existing Tests
|
|
2435
2497
|
|
|
2436
|
-
|
|
2498
|
+
For each test case that needs updating:
|
|
2437
2499
|
|
|
2438
|
-
1.
|
|
2500
|
+
1. **Read the test case markdown** to understand what changed
|
|
2501
|
+
2. **Read the existing spec file** (from \`automated_test\` frontmatter field)
|
|
2502
|
+
3. **Update the spec** to match the new specification:
|
|
2503
|
+
- Update test steps, assertions, selectors as needed
|
|
2504
|
+
- Preserve test structure and page object patterns
|
|
2505
|
+
- Follow conventions from \`./tests/CLAUDE.md\`
|
|
2506
|
+
4. **Run the test** to verify changes work (command from \`./tests/CLAUDE.md\`)
|
|
2507
|
+
5. **If test fails**: classify and fix (same as Mode A Step 4, max 3 attempts)
|
|
2508
|
+
6. **Update manual test case** if the \`automated_test\` path changed
|
|
2439
2509
|
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
2. **Environment**: Read \`.env.testdata\` to understand available variables. Never read \`.env\`. If test needs new variable, update \`.env.testdata\`.
|
|
2510
|
+
---
|
|
2443
2511
|
|
|
2444
|
-
|
|
2512
|
+
## Mode C: FIX \u2014 Debug and Fix Failing Tests
|
|
2445
2513
|
|
|
2446
2514
|
**Step 1: Read test file** \u2014 understand test intent, logic, and page objects used.
|
|
2447
2515
|
|
|
@@ -2451,7 +2519,7 @@ var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsi
|
|
|
2451
2519
|
- **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
|
|
2452
2520
|
- **Test issue**: Selector not found (but element exists), timeout, flaky behavior, wrong assertion, test isolation problem \u2192 proceed to fix
|
|
2453
2521
|
|
|
2454
|
-
**Step 4: Debug** (if needed) \u2014
|
|
2522
|
+
**Step 4: Debug** (if needed) \u2014 open browser, navigate to page, inspect elements with \`snapshot\`, manually execute test steps, identify discrepancy.
|
|
2455
2523
|
|
|
2456
2524
|
**Step 5: Apply fix** \u2014 edit test file using fix patterns from \`./tests/CLAUDE.md\`. Update selectors, waits, assertions, or logic.
|
|
2457
2525
|
|
|
@@ -2467,9 +2535,15 @@ var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsi
|
|
|
2467
2535
|
- Fixed: provide file path, fix description, verification result
|
|
2468
2536
|
- Still failing after 3 attempts: report as likely product bug
|
|
2469
2537
|
|
|
2470
|
-
|
|
2538
|
+
---
|
|
2539
|
+
|
|
2540
|
+
**After all work:**
|
|
2471
2541
|
|
|
2472
|
-
|
|
2542
|
+
${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-engineer")}
|
|
2543
|
+
|
|
2544
|
+
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.
|
|
2545
|
+
|
|
2546
|
+
**Generate summary**: tests created/updated/fixed (pass/fail), manual test cases automated, page objects/fixtures/helpers added or modified, next steps.
|
|
2473
2547
|
|
|
2474
2548
|
**Test Result Format**: The custom Bugzy reporter produces:
|
|
2475
2549
|
- **Manifest**: \`test-runs/{timestamp}/manifest.json\` \u2014 overall run summary
|
|
@@ -2478,24 +2552,28 @@ Update: fixed issues history, failure pattern library, known selectors, known pr
|
|
|
2478
2552
|
Read result.json from the execution path to understand failure context. Video, trace, and screenshots are in the same exec-{num}/ folder.
|
|
2479
2553
|
|
|
2480
2554
|
**Critical Rules:**
|
|
2555
|
+
- **NEVER** generate selectors without exploring the live application first
|
|
2556
|
+
- **NEVER** read .env \u2014 only .env.testdata
|
|
2481
2557
|
- **NEVER** fix tests when the issue is a product bug
|
|
2482
2558
|
- **NEVER** make tests pass by lowering expectations
|
|
2483
2559
|
- **NEVER** exceed 3 fix attempts \u2014 escalate instead
|
|
2560
|
+
- **ALWAYS** explore application before generating or updating code
|
|
2561
|
+
- **ALWAYS** verify selectors in live browser
|
|
2562
|
+
- **ALWAYS** follow conventions from \`./tests/CLAUDE.md\` and \`./tests/docs/testing-best-practices.md\`
|
|
2563
|
+
- **ALWAYS** link manual \u2194 automated tests bidirectionally
|
|
2484
2564
|
- **ALWAYS** classify before fixing (product bug vs test issue)
|
|
2485
|
-
- **ALWAYS** follow fix patterns from \`./tests/CLAUDE.md\`
|
|
2486
2565
|
- **ALWAYS** verify fixes by re-running tests
|
|
2487
|
-
- **ALWAYS** run flaky tests 10 times to confirm stability
|
|
2488
|
-
- **ALWAYS** follow \`./tests/docs/testing-best-practices.md\``;
|
|
2566
|
+
- **ALWAYS** run flaky tests 10 times to confirm stability`;
|
|
2489
2567
|
|
|
2490
2568
|
// src/subagents/templates/team-communicator/local.ts
|
|
2491
|
-
var
|
|
2569
|
+
var FRONTMATTER3 = {
|
|
2492
2570
|
name: "team-communicator",
|
|
2493
2571
|
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>`,
|
|
2494
2572
|
tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "AskUserQuestion", "ListMcpResourcesTool", "ReadMcpResourceTool"],
|
|
2495
2573
|
model: "haiku",
|
|
2496
2574
|
color: "yellow"
|
|
2497
2575
|
};
|
|
2498
|
-
var
|
|
2576
|
+
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.
|
|
2499
2577
|
|
|
2500
2578
|
## Core Philosophy: Direct Terminal Communication
|
|
2501
2579
|
|
|
@@ -2692,14 +2770,14 @@ You are not a formal report generator. You are a helpful QA engineer communicati
|
|
|
2692
2770
|
**Target feeling:** "This is helpful, clear communication that respects my time and gets me the info I need."`;
|
|
2693
2771
|
|
|
2694
2772
|
// src/subagents/templates/team-communicator/slack.ts
|
|
2695
|
-
var
|
|
2773
|
+
var FRONTMATTER4 = {
|
|
2696
2774
|
name: "team-communicator",
|
|
2697
2775
|
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>`,
|
|
2698
2776
|
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"],
|
|
2699
2777
|
model: "haiku",
|
|
2700
2778
|
color: "yellow"
|
|
2701
2779
|
};
|
|
2702
|
-
var
|
|
2780
|
+
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.
|
|
2703
2781
|
|
|
2704
2782
|
## Core Philosophy
|
|
2705
2783
|
|
|
@@ -2810,14 +2888,14 @@ Before sending:
|
|
|
2810
2888
|
**You are a helpful QA engineer who respects your team's time. Every word should earn its place.**`;
|
|
2811
2889
|
|
|
2812
2890
|
// src/subagents/templates/team-communicator/teams.ts
|
|
2813
|
-
var
|
|
2891
|
+
var FRONTMATTER5 = {
|
|
2814
2892
|
name: "team-communicator",
|
|
2815
2893
|
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>`,
|
|
2816
2894
|
tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__teams__teams_post_message", "mcp__teams__teams_post_rich_message"],
|
|
2817
2895
|
model: "haiku",
|
|
2818
2896
|
color: "yellow"
|
|
2819
2897
|
};
|
|
2820
|
-
var
|
|
2898
|
+
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.
|
|
2821
2899
|
|
|
2822
2900
|
## Core Philosophy: Concise, Human Communication
|
|
2823
2901
|
|
|
@@ -3162,14 +3240,14 @@ You are not a formal report generator. You are a helpful QA engineer who knows h
|
|
|
3162
3240
|
**Target feeling:** "This is a real person who respects my time and communicates clearly."`;
|
|
3163
3241
|
|
|
3164
3242
|
// src/subagents/templates/team-communicator/email.ts
|
|
3165
|
-
var
|
|
3243
|
+
var FRONTMATTER6 = {
|
|
3166
3244
|
name: "team-communicator",
|
|
3167
3245
|
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>`,
|
|
3168
3246
|
tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__resend__resend_send_email", "mcp__resend__resend_send_batch_emails", "ListMcpResourcesTool", "ReadMcpResourceTool"],
|
|
3169
3247
|
model: "haiku",
|
|
3170
3248
|
color: "yellow"
|
|
3171
3249
|
};
|
|
3172
|
-
var
|
|
3250
|
+
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.
|
|
3173
3251
|
|
|
3174
3252
|
## Core Philosophy: Concise, Professional Email Communication
|
|
3175
3253
|
|
|
@@ -3416,7 +3494,7 @@ You are not a formal report generator. You are a helpful QA engineer who knows h
|
|
|
3416
3494
|
**Target feeling:** "This is a concise, professional email from someone who respects my time and communicates clearly."`;
|
|
3417
3495
|
|
|
3418
3496
|
// src/subagents/templates/documentation-researcher/notion.ts
|
|
3419
|
-
var
|
|
3497
|
+
var FRONTMATTER7 = {
|
|
3420
3498
|
name: "documentation-researcher",
|
|
3421
3499
|
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.
|
|
3422
3500
|
user: "I need to generate test cases for the new OAuth flow"
|
|
@@ -3428,7 +3506,7 @@ assistant: "I'll use the documentation-researcher agent to search our Notion doc
|
|
|
3428
3506
|
model: "haiku",
|
|
3429
3507
|
color: "cyan"
|
|
3430
3508
|
};
|
|
3431
|
-
var
|
|
3509
|
+
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.
|
|
3432
3510
|
|
|
3433
3511
|
## Core Responsibilities
|
|
3434
3512
|
|
|
@@ -3494,7 +3572,7 @@ var CONTENT8 = `You are an expert Documentation Researcher specializing in syste
|
|
|
3494
3572
|
You are meticulous about maintaining your memory file as a living document that grows more valuable with each use. Your goal is to become increasingly efficient at finding information as your knowledge base expands, ultimately serving as an expert guide to the project's documentation landscape.`;
|
|
3495
3573
|
|
|
3496
3574
|
// src/subagents/templates/documentation-researcher/confluence.ts
|
|
3497
|
-
var
|
|
3575
|
+
var FRONTMATTER8 = {
|
|
3498
3576
|
name: "documentation-researcher",
|
|
3499
3577
|
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.
|
|
3500
3578
|
user: "I need to create a test plan for the new user profile feature"
|
|
@@ -3506,7 +3584,7 @@ assistant: "I'll use the documentation-researcher agent to search our Confluence
|
|
|
3506
3584
|
model: "sonnet",
|
|
3507
3585
|
color: "cyan"
|
|
3508
3586
|
};
|
|
3509
|
-
var
|
|
3587
|
+
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.
|
|
3510
3588
|
|
|
3511
3589
|
## Core Responsibilities
|
|
3512
3590
|
|
|
@@ -3606,7 +3684,7 @@ Handle these Confluence elements properly:
|
|
|
3606
3684
|
You are meticulous about maintaining your memory file as a living document that grows more valuable with each use. Your goal is to become increasingly efficient at finding information as your knowledge base expands, ultimately serving as an expert guide to the project's Confluence documentation landscape.`;
|
|
3607
3685
|
|
|
3608
3686
|
// src/subagents/templates/documentation-researcher/jira.ts
|
|
3609
|
-
var
|
|
3687
|
+
var FRONTMATTER9 = {
|
|
3610
3688
|
name: "documentation-researcher",
|
|
3611
3689
|
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.
|
|
3612
3690
|
user: "Generate test cases for the checkout flow feature"
|
|
@@ -3618,7 +3696,7 @@ assistant: "I'll use the documentation-researcher agent to search Jira comments
|
|
|
3618
3696
|
model: "haiku",
|
|
3619
3697
|
color: "cyan"
|
|
3620
3698
|
};
|
|
3621
|
-
var
|
|
3699
|
+
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.
|
|
3622
3700
|
|
|
3623
3701
|
## Core Responsibilities
|
|
3624
3702
|
|
|
@@ -3736,7 +3814,7 @@ Handle these Jira elements properly:
|
|
|
3736
3814
|
You are meticulous about maintaining your memory file as a living document that grows more valuable with each use. Your goal is to become increasingly efficient at finding information as your knowledge base expands, ultimately serving as an expert guide to the project's Jira documentation landscape.`;
|
|
3737
3815
|
|
|
3738
3816
|
// src/subagents/templates/issue-tracker/linear.ts
|
|
3739
|
-
var
|
|
3817
|
+
var FRONTMATTER10 = {
|
|
3740
3818
|
name: "issue-tracker",
|
|
3741
3819
|
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.
|
|
3742
3820
|
user: "The login flow is broken - users get a 500 error when submitting credentials"
|
|
@@ -3748,7 +3826,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to QA
|
|
|
3748
3826
|
model: "sonnet",
|
|
3749
3827
|
color: "red"
|
|
3750
3828
|
};
|
|
3751
|
-
var
|
|
3829
|
+
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.
|
|
3752
3830
|
|
|
3753
3831
|
**Core Responsibilities:**
|
|
3754
3832
|
|
|
@@ -3916,7 +3994,7 @@ Your memory file evolves with usage:
|
|
|
3916
3994
|
You are focused on creating bug reports that fit Linear's streamlined workflow while maintaining comprehensive tracking in your memory. Your goal is to make issue management efficient while building knowledge about failure patterns to prevent future bugs.`;
|
|
3917
3995
|
|
|
3918
3996
|
// src/subagents/templates/issue-tracker/jira.ts
|
|
3919
|
-
var
|
|
3997
|
+
var FRONTMATTER11 = {
|
|
3920
3998
|
name: "issue-tracker",
|
|
3921
3999
|
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.
|
|
3922
4000
|
user: "5 tests failed in the checkout flow - payment validation is broken"
|
|
@@ -3928,7 +4006,7 @@ assistant: "Let me use the issue-tracker agent to transition PROJ-456 to Done an
|
|
|
3928
4006
|
model: "sonnet",
|
|
3929
4007
|
color: "red"
|
|
3930
4008
|
};
|
|
3931
|
-
var
|
|
4009
|
+
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.
|
|
3932
4010
|
|
|
3933
4011
|
**Core Responsibilities:**
|
|
3934
4012
|
|
|
@@ -4087,7 +4165,7 @@ Your memory file becomes more valuable over time:
|
|
|
4087
4165
|
You are meticulous about maintaining your memory file as a critical resource for efficient Jira operations. Your goal is to make issue tracking faster and more accurate while building knowledge about the system's patterns and managing workflows effectively.`;
|
|
4088
4166
|
|
|
4089
4167
|
// src/subagents/templates/issue-tracker/azure-devops.ts
|
|
4090
|
-
var
|
|
4168
|
+
var FRONTMATTER12 = {
|
|
4091
4169
|
name: "issue-tracker",
|
|
4092
4170
|
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.
|
|
4093
4171
|
user: "5 tests failed in the checkout flow - payment validation is broken"
|
|
@@ -4099,7 +4177,7 @@ assistant: "Let me use the issue-tracker agent to update work item 456 state to
|
|
|
4099
4177
|
model: "sonnet",
|
|
4100
4178
|
color: "red"
|
|
4101
4179
|
};
|
|
4102
|
-
var
|
|
4180
|
+
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.
|
|
4103
4181
|
|
|
4104
4182
|
**Core Responsibilities:**
|
|
4105
4183
|
|
|
@@ -4314,7 +4392,7 @@ Your memory file becomes more valuable over time:
|
|
|
4314
4392
|
You are meticulous about maintaining your memory file as a critical resource for efficient Azure DevOps operations. Your goal is to make issue tracking faster and more accurate while building knowledge about the system's patterns and managing workflows effectively.`;
|
|
4315
4393
|
|
|
4316
4394
|
// src/subagents/templates/issue-tracker/notion.ts
|
|
4317
|
-
var
|
|
4395
|
+
var FRONTMATTER13 = {
|
|
4318
4396
|
name: "issue-tracker",
|
|
4319
4397
|
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.
|
|
4320
4398
|
user: "The submit button on the checkout page doesn't work on mobile Safari"
|
|
@@ -4326,7 +4404,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to 'QA
|
|
|
4326
4404
|
model: "haiku",
|
|
4327
4405
|
color: "red"
|
|
4328
4406
|
};
|
|
4329
|
-
var
|
|
4407
|
+
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.
|
|
4330
4408
|
|
|
4331
4409
|
**Core Responsibilities:**
|
|
4332
4410
|
|
|
@@ -4473,7 +4551,7 @@ Your memory file grows more valuable over time:
|
|
|
4473
4551
|
You are meticulous about maintaining your memory file as a critical resource that makes issue tracking more efficient and effective. Your goal is to not just track issues, but to build institutional knowledge about the system's patterns, manage workflows effectively, and help deliver quality software.`;
|
|
4474
4552
|
|
|
4475
4553
|
// src/subagents/templates/issue-tracker/slack.ts
|
|
4476
|
-
var
|
|
4554
|
+
var FRONTMATTER14 = {
|
|
4477
4555
|
name: "issue-tracker",
|
|
4478
4556
|
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.
|
|
4479
4557
|
user: "3 critical tests failed in the payment flow - looks like the Stripe integration is broken"
|
|
@@ -4485,7 +4563,7 @@ assistant: "Let me use the issue-tracker agent to update the story thread with Q
|
|
|
4485
4563
|
model: "sonnet",
|
|
4486
4564
|
color: "red"
|
|
4487
4565
|
};
|
|
4488
|
-
var
|
|
4566
|
+
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.
|
|
4489
4567
|
|
|
4490
4568
|
**Core Responsibilities:**
|
|
4491
4569
|
|
|
@@ -4707,7 +4785,7 @@ Maintain organized issue tracking:
|
|
|
4707
4785
|
You are focused on creating clear, organized issue threads that leverage Slack's real-time collaboration features while maintaining comprehensive tracking in your memory. Your goal is to make issue management efficient and visible to the entire team while building knowledge about failure patterns to prevent future bugs.`;
|
|
4708
4786
|
|
|
4709
4787
|
// src/subagents/templates/changelog-historian/github.ts
|
|
4710
|
-
var
|
|
4788
|
+
var FRONTMATTER15 = {
|
|
4711
4789
|
name: "changelog-historian",
|
|
4712
4790
|
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.
|
|
4713
4791
|
user: "The checkout flow test is failing in staging. What changed recently?"
|
|
@@ -4719,7 +4797,7 @@ assistant: "I'll use the changelog-historian agent to compare the two releases a
|
|
|
4719
4797
|
model: "haiku",
|
|
4720
4798
|
color: "gray"
|
|
4721
4799
|
};
|
|
4722
|
-
var
|
|
4800
|
+
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.
|
|
4723
4801
|
|
|
4724
4802
|
## Core Responsibilities
|
|
4725
4803
|
|
|
@@ -4836,80 +4914,74 @@ var TEMPLATES = {
|
|
|
4836
4914
|
content: CONTENT
|
|
4837
4915
|
}
|
|
4838
4916
|
},
|
|
4839
|
-
"test-
|
|
4840
|
-
|
|
4917
|
+
"test-engineer": {
|
|
4918
|
+
default: {
|
|
4841
4919
|
frontmatter: FRONTMATTER2,
|
|
4842
4920
|
content: CONTENT2
|
|
4843
4921
|
}
|
|
4844
4922
|
},
|
|
4845
|
-
"test-debugger-fixer": {
|
|
4846
|
-
playwright: {
|
|
4847
|
-
frontmatter: FRONTMATTER3,
|
|
4848
|
-
content: CONTENT3
|
|
4849
|
-
}
|
|
4850
|
-
},
|
|
4851
4923
|
"team-communicator": {
|
|
4852
4924
|
local: {
|
|
4925
|
+
frontmatter: FRONTMATTER3,
|
|
4926
|
+
content: CONTENT3
|
|
4927
|
+
},
|
|
4928
|
+
slack: {
|
|
4853
4929
|
frontmatter: FRONTMATTER4,
|
|
4854
4930
|
content: CONTENT4
|
|
4855
4931
|
},
|
|
4856
|
-
|
|
4932
|
+
teams: {
|
|
4857
4933
|
frontmatter: FRONTMATTER5,
|
|
4858
4934
|
content: CONTENT5
|
|
4859
4935
|
},
|
|
4860
|
-
|
|
4936
|
+
email: {
|
|
4861
4937
|
frontmatter: FRONTMATTER6,
|
|
4862
4938
|
content: CONTENT6
|
|
4863
|
-
},
|
|
4864
|
-
email: {
|
|
4865
|
-
frontmatter: FRONTMATTER7,
|
|
4866
|
-
content: CONTENT7
|
|
4867
4939
|
}
|
|
4868
4940
|
},
|
|
4869
4941
|
"documentation-researcher": {
|
|
4870
4942
|
notion: {
|
|
4943
|
+
frontmatter: FRONTMATTER7,
|
|
4944
|
+
content: CONTENT7
|
|
4945
|
+
},
|
|
4946
|
+
confluence: {
|
|
4871
4947
|
frontmatter: FRONTMATTER8,
|
|
4872
4948
|
content: CONTENT8
|
|
4873
4949
|
},
|
|
4874
|
-
|
|
4950
|
+
jira: {
|
|
4875
4951
|
frontmatter: FRONTMATTER9,
|
|
4876
4952
|
content: CONTENT9
|
|
4877
|
-
},
|
|
4878
|
-
jira: {
|
|
4879
|
-
frontmatter: FRONTMATTER10,
|
|
4880
|
-
content: CONTENT10
|
|
4881
4953
|
}
|
|
4882
4954
|
},
|
|
4883
4955
|
"issue-tracker": {
|
|
4884
4956
|
linear: {
|
|
4885
|
-
frontmatter:
|
|
4886
|
-
content:
|
|
4957
|
+
frontmatter: FRONTMATTER10,
|
|
4958
|
+
content: CONTENT10
|
|
4887
4959
|
},
|
|
4888
4960
|
jira: {
|
|
4889
|
-
frontmatter:
|
|
4890
|
-
content:
|
|
4961
|
+
frontmatter: FRONTMATTER11,
|
|
4962
|
+
content: CONTENT11
|
|
4891
4963
|
},
|
|
4892
4964
|
"jira-server": {
|
|
4965
|
+
frontmatter: FRONTMATTER11,
|
|
4966
|
+
content: CONTENT11
|
|
4967
|
+
},
|
|
4968
|
+
"azure-devops": {
|
|
4893
4969
|
frontmatter: FRONTMATTER12,
|
|
4894
4970
|
content: CONTENT12
|
|
4895
4971
|
},
|
|
4896
|
-
|
|
4972
|
+
notion: {
|
|
4897
4973
|
frontmatter: FRONTMATTER13,
|
|
4898
4974
|
content: CONTENT13
|
|
4899
4975
|
},
|
|
4900
|
-
|
|
4976
|
+
slack: {
|
|
4901
4977
|
frontmatter: FRONTMATTER14,
|
|
4902
4978
|
content: CONTENT14
|
|
4903
|
-
},
|
|
4904
|
-
slack: {
|
|
4905
|
-
frontmatter: FRONTMATTER15,
|
|
4906
|
-
content: CONTENT15
|
|
4907
4979
|
}
|
|
4908
4980
|
},
|
|
4909
4981
|
"changelog-historian": {
|
|
4910
4982
|
github: {
|
|
4911
|
-
frontmatter:
|
|
4912
|
-
content:
|
|
4983
|
+
frontmatter: FRONTMATTER15,
|
|
4984
|
+
content: CONTENT15
|
|
4913
4985
|
}
|
|
4914
4986
|
}
|
|
4915
4987
|
};
|
|
@@ -5016,6 +5088,13 @@ var INTEGRATIONS = {
|
|
|
5016
5088
|
// No requiredMCP - uses built-in Claude Code tools (AskUserQuestion, text output)
|
|
5017
5089
|
isLocal: true,
|
|
5018
5090
|
integrationType: "local"
|
|
5091
|
+
},
|
|
5092
|
+
default: {
|
|
5093
|
+
id: "default",
|
|
5094
|
+
name: "Default",
|
|
5095
|
+
provider: "default",
|
|
5096
|
+
isLocal: true,
|
|
5097
|
+
integrationType: "local"
|
|
5019
5098
|
}
|
|
5020
5099
|
};
|
|
5021
5100
|
var SUBAGENTS = {
|
|
@@ -5075,28 +5154,15 @@ var SUBAGENTS = {
|
|
|
5075
5154
|
color: "cyan",
|
|
5076
5155
|
version: "1.0.0"
|
|
5077
5156
|
},
|
|
5078
|
-
"test-
|
|
5079
|
-
role: "test-
|
|
5080
|
-
name: "Test
|
|
5081
|
-
description: "
|
|
5157
|
+
"test-engineer": {
|
|
5158
|
+
role: "test-engineer",
|
|
5159
|
+
name: "Test Engineer",
|
|
5160
|
+
description: "Create, update, debug, and fix automated tests",
|
|
5082
5161
|
icon: "code",
|
|
5083
|
-
integrations: [INTEGRATIONS.
|
|
5162
|
+
integrations: [INTEGRATIONS.default],
|
|
5084
5163
|
model: "sonnet",
|
|
5085
5164
|
color: "purple",
|
|
5086
5165
|
isRequired: true,
|
|
5087
|
-
// Required for automated test generation
|
|
5088
|
-
version: "1.0.0"
|
|
5089
|
-
},
|
|
5090
|
-
"test-debugger-fixer": {
|
|
5091
|
-
role: "test-debugger-fixer",
|
|
5092
|
-
name: "Test Debugger & Fixer",
|
|
5093
|
-
description: "Debug and fix failing automated tests automatically",
|
|
5094
|
-
icon: "wrench",
|
|
5095
|
-
integrations: [INTEGRATIONS.playwright],
|
|
5096
|
-
model: "sonnet",
|
|
5097
|
-
color: "yellow",
|
|
5098
|
-
isRequired: true,
|
|
5099
|
-
// Required for automated test execution and fixing
|
|
5100
5166
|
version: "1.0.0"
|
|
5101
5167
|
},
|
|
5102
5168
|
"changelog-historian": {
|
|
@@ -5168,8 +5234,7 @@ function buildSubagentsConfig(subagents) {
|
|
|
5168
5234
|
var TOOL_STRINGS = {
|
|
5169
5235
|
"claude-code": {
|
|
5170
5236
|
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.',
|
|
5171
|
-
|
|
5172
|
-
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.',
|
|
5237
|
+
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.',
|
|
5173
5238
|
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.',
|
|
5174
5239
|
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.",
|
|
5175
5240
|
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.',
|
|
@@ -5178,8 +5243,7 @@ var TOOL_STRINGS = {
|
|
|
5178
5243
|
},
|
|
5179
5244
|
"cursor": {
|
|
5180
5245
|
INVOKE_BROWSER_AUTOMATION: 'Run the browser-automation agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/browser-automation.md)" --output-format text\n```',
|
|
5181
|
-
|
|
5182
|
-
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```',
|
|
5246
|
+
INVOKE_TEST_ENGINEER: 'Run the test-engineer agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/test-engineer.md)" --output-format text\n```',
|
|
5183
5247
|
INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/team-communicator.md)" --output-format text\n```',
|
|
5184
5248
|
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.",
|
|
5185
5249
|
INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/issue-tracker.md)" --output-format text\n```',
|
|
@@ -5188,8 +5252,7 @@ var TOOL_STRINGS = {
|
|
|
5188
5252
|
},
|
|
5189
5253
|
"codex": {
|
|
5190
5254
|
INVOKE_BROWSER_AUTOMATION: 'Run the browser-automation agent:\n```bash\ncodex -p "$(cat .codex/agents/browser-automation.md)"\n```',
|
|
5191
|
-
|
|
5192
|
-
INVOKE_TEST_CODE_GENERATOR: 'Run the test-code-generator agent:\n```bash\ncodex -p "$(cat .codex/agents/test-code-generator.md)"\n```',
|
|
5255
|
+
INVOKE_TEST_ENGINEER: 'Run the test-engineer agent:\n```bash\ncodex -p "$(cat .codex/agents/test-engineer.md)"\n```',
|
|
5193
5256
|
INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncodex -p "$(cat .codex/agents/team-communicator.md)"\n```',
|
|
5194
5257
|
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.",
|
|
5195
5258
|
INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncodex -p "$(cat .codex/agents/issue-tracker.md)"\n```',
|
|
@@ -5212,8 +5275,7 @@ function replaceInvocationPlaceholders(content, toolId, isLocal = false) {
|
|
|
5212
5275
|
let result = content;
|
|
5213
5276
|
const keys = [
|
|
5214
5277
|
"INVOKE_BROWSER_AUTOMATION",
|
|
5215
|
-
"
|
|
5216
|
-
"INVOKE_TEST_CODE_GENERATOR",
|
|
5278
|
+
"INVOKE_TEST_ENGINEER",
|
|
5217
5279
|
"INVOKE_TEAM_COMMUNICATOR",
|
|
5218
5280
|
"INVOKE_ISSUE_TRACKER",
|
|
5219
5281
|
"INVOKE_DOCUMENTATION_RESEARCHER",
|
|
@@ -5905,9 +5967,9 @@ var fixTestIssuesStep = {
|
|
|
5905
5967
|
category: "execution",
|
|
5906
5968
|
content: `## Fix Test Issues Automatically
|
|
5907
5969
|
|
|
5908
|
-
For each test classified as **[TEST ISSUE]**, use the test-
|
|
5970
|
+
For each test classified as **[TEST ISSUE]**, use the test-engineer agent to automatically fix the test:
|
|
5909
5971
|
|
|
5910
|
-
{{
|
|
5972
|
+
{{INVOKE_TEST_ENGINEER}}
|
|
5911
5973
|
|
|
5912
5974
|
For each failed test classified as a test issue (not a product bug), provide:
|
|
5913
5975
|
- Test run timestamp: [from manifest.timestamp]
|
|
@@ -5930,7 +5992,7 @@ The agent will:
|
|
|
5930
5992
|
7. Repeat up to 3 times if needed (exec-1, exec-2, exec-3)
|
|
5931
5993
|
8. Report success or escalate as likely product bug
|
|
5932
5994
|
|
|
5933
|
-
**After test-
|
|
5995
|
+
**After test-engineer completes:**
|
|
5934
5996
|
- If fix succeeded: Mark test as fixed, add to "Tests Fixed" list
|
|
5935
5997
|
- If still failing after 3 attempts: Reclassify as potential product bug
|
|
5936
5998
|
|
|
@@ -5938,7 +6000,7 @@ The agent will:
|
|
|
5938
6000
|
- Maintain list of tests fixed automatically
|
|
5939
6001
|
- Include fix description (e.g., "Applied selector fix pattern from CLAUDE.md")
|
|
5940
6002
|
- Note verification status (test now passes)`,
|
|
5941
|
-
invokesSubagents: ["test-
|
|
6003
|
+
invokesSubagents: ["test-engineer"],
|
|
5942
6004
|
tags: ["execution", "fixing", "automation"]
|
|
5943
6005
|
};
|
|
5944
6006
|
|
|
@@ -6301,7 +6363,7 @@ var automateTestCasesStep = {
|
|
|
6301
6363
|
|
|
6302
6364
|
For each test case marked \`automated: true\`:
|
|
6303
6365
|
|
|
6304
|
-
{{
|
|
6366
|
+
{{INVOKE_TEST_ENGINEER}} with the following context:
|
|
6305
6367
|
|
|
6306
6368
|
"Automate test cases for the focus area: $ARGUMENTS
|
|
6307
6369
|
|
|
@@ -6334,7 +6396,7 @@ After automation, update the manual test case frontmatter:
|
|
|
6334
6396
|
automated: true
|
|
6335
6397
|
automated_test: tests/specs/feature/test-name.spec.ts
|
|
6336
6398
|
\`\`\``,
|
|
6337
|
-
invokesSubagents: ["test-
|
|
6399
|
+
invokesSubagents: ["test-engineer"],
|
|
6338
6400
|
tags: ["generation", "automation"]
|
|
6339
6401
|
};
|
|
6340
6402
|
|
|
@@ -6746,6 +6808,28 @@ After test generation completes, verify all artifacts meet quality standards:
|
|
|
6746
6808
|
tags: ["maintenance", "validation", "test-artifacts"]
|
|
6747
6809
|
};
|
|
6748
6810
|
|
|
6811
|
+
// src/tasks/steps/maintenance/sync-automation-from-feedback.ts
|
|
6812
|
+
var syncAutomationFromFeedbackStep = {
|
|
6813
|
+
id: "sync-automation-from-feedback",
|
|
6814
|
+
title: "Sync Automation Code with Test Case Changes",
|
|
6815
|
+
category: "maintenance",
|
|
6816
|
+
requiresSubagent: "test-engineer",
|
|
6817
|
+
invokesSubagents: ["test-engineer"],
|
|
6818
|
+
content: `## Sync Automation Code with Test Case Changes
|
|
6819
|
+
|
|
6820
|
+
After processing feedback that modified test case files, ensure automation code stays in sync.
|
|
6821
|
+
|
|
6822
|
+
**When to apply:** Only if you modified test case markdown files during this task.
|
|
6823
|
+
|
|
6824
|
+
For each modified test case:
|
|
6825
|
+
1. Read frontmatter \u2014 check for \`automated_test\` field
|
|
6826
|
+
2. If exists \u2192 {{INVOKE_TEST_ENGINEER}} to update the spec to match the updated markdown
|
|
6827
|
+
3. If not \u2192 skip (no automation to sync)
|
|
6828
|
+
|
|
6829
|
+
**CRITICAL:** Both specification (markdown) AND implementation (automation code) MUST stay in sync.`,
|
|
6830
|
+
tags: ["maintenance", "automation", "feedback"]
|
|
6831
|
+
};
|
|
6832
|
+
|
|
6749
6833
|
// src/tasks/steps/index.ts
|
|
6750
6834
|
var STEP_LIBRARY = {
|
|
6751
6835
|
// Setup
|
|
@@ -6782,7 +6866,8 @@ var STEP_LIBRARY = {
|
|
|
6782
6866
|
"generate-final-report": generateFinalReportStep,
|
|
6783
6867
|
"update-exploration-artifacts": updateExplorationArtifactsStep,
|
|
6784
6868
|
"cleanup-temp-files": cleanupTempFilesStep,
|
|
6785
|
-
"validate-test-artifacts": validateTestArtifactsStep
|
|
6869
|
+
"validate-test-artifacts": validateTestArtifactsStep,
|
|
6870
|
+
"sync-automation-from-feedback": syncAutomationFromFeedbackStep
|
|
6786
6871
|
};
|
|
6787
6872
|
function getStep(id) {
|
|
6788
6873
|
const step = STEP_LIBRARY[id];
|