@bugzy-ai/bugzy 1.19.3 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +273 -273
  3. package/dist/cli/index.cjs +76 -8
  4. package/dist/cli/index.cjs.map +1 -1
  5. package/dist/cli/index.js +75 -7
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/index.cjs +73 -5
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.js +73 -5
  10. package/dist/index.js.map +1 -1
  11. package/dist/subagents/index.cjs.map +1 -1
  12. package/dist/subagents/index.js.map +1 -1
  13. package/dist/subagents/metadata.cjs.map +1 -1
  14. package/dist/subagents/metadata.js.map +1 -1
  15. package/dist/tasks/index.cjs +27 -4
  16. package/dist/tasks/index.cjs.map +1 -1
  17. package/dist/tasks/index.js +27 -4
  18. package/dist/tasks/index.js.map +1 -1
  19. package/dist/templates/init/.bugzy/runtime/knowledge-base.md +61 -0
  20. package/dist/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -0
  21. package/dist/templates/init/.bugzy/runtime/project-context.md +35 -0
  22. package/dist/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -0
  23. package/dist/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -0
  24. package/dist/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -0
  25. package/dist/templates/init/.bugzy/runtime/test-execution-strategy.md +535 -0
  26. package/dist/templates/init/.bugzy/runtime/testing-best-practices.md +632 -0
  27. package/dist/templates/init/.gitignore-template +25 -0
  28. package/package.json +95 -95
  29. package/templates/init/.bugzy/runtime/hooks/pre-compact.sh +53 -53
  30. package/templates/init/.bugzy/runtime/hooks/session-start.sh +68 -68
  31. package/templates/init/.bugzy/runtime/knowledge-base.md +61 -61
  32. package/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +140 -140
  33. package/templates/init/.bugzy/runtime/project-context.md +35 -35
  34. package/templates/init/.bugzy/runtime/subagent-memory-guide.md +122 -122
  35. package/templates/init/.bugzy/runtime/templates/event-examples.md +194 -194
  36. package/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -50
  37. package/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -498
  38. package/templates/init/.claude/settings.json +49 -49
  39. package/templates/init/.env.testdata +18 -18
  40. package/templates/init/.gitignore-template +24 -24
  41. package/templates/init/AGENTS.md +155 -155
  42. package/templates/init/CLAUDE.md +157 -157
  43. package/templates/init/test-runs/README.md +45 -45
  44. package/templates/init/tests/CLAUDE.md +199 -199
  45. package/templates/init/tests/docs/test-execution-strategy.md +535 -535
  46. package/templates/init/tests/docs/testing-best-practices.md +724 -724
  47. package/templates/playwright/BasePage.template.ts +190 -190
  48. package/templates/playwright/auth.setup.template.ts +89 -89
  49. package/templates/playwright/dataGenerators.helper.template.ts +148 -148
  50. package/templates/playwright/dateUtils.helper.template.ts +96 -96
  51. package/templates/playwright/pages.fixture.template.ts +50 -50
  52. package/templates/playwright/playwright.config.template.ts +97 -97
  53. package/templates/playwright/reporters/__tests__/bugzy-reporter-failure-classification.test.ts +299 -299
  54. package/templates/playwright/reporters/__tests__/bugzy-reporter-manifest-merge.test.ts +329 -329
  55. package/templates/playwright/reporters/__tests__/playwright.config.ts +5 -5
  56. package/templates/playwright/reporters/bugzy-reporter.ts +784 -784
package/dist/index.cjs CHANGED
@@ -718,7 +718,7 @@ If intent is not in the payload, detect from message patterns:
718
718
  | Condition | Intent |
719
719
  |-----------|--------|
720
720
  | Keywords: "status", "progress", "how did", "results", "how many passed" | \`status\` |
721
- | Keywords: "bug", "issue", "broken", "doesn't work", "failed", "error" | \`feedback\` |
721
+ | Keywords: "bug", "issue", "broken", "doesn't work", "failed", "error", "wrong triage", "incorrect classification", "dispute", "that was wrong" | \`feedback\` |
722
722
  | Question words: "what", "which", "do we have", "is there" about tests/project | \`question\` |
723
723
  | Default (none of above) | \`feedback\` |
724
724
 
@@ -754,7 +754,26 @@ Extract the following from the message:
754
754
  - \`suggestion\`: "should", "could we", "what if", "idea"
755
755
  - \`general\`: Default for unclassified feedback
756
756
 
757
- ### Step 2: Update Test Case Specifications
757
+ ### Step 2: Check for Dispute Intent
758
+
759
+ Before processing other feedback types, check if the message is disputing a prior triage finding (e.g., "that triage was wrong", "the login timeout is actually CI flakiness not a product bug", "incorrect classification for...").
760
+
761
+ **If dispute detected:**
762
+ 1. Call \`bugzy-findings list\` to retrieve recent findings
763
+ 2. Match the customer's message to a specific finding by test name, description, or ID
764
+ 3. If ambiguous (multiple possible matches), list recent findings and ask the customer to clarify which one they're disputing
765
+ 4. Once matched, call:
766
+ \`\`\`bash
767
+ bugzy-findings dispute --finding-id <matched-finding-id> --explanation "<customer's explanation>"
768
+ \`\`\`
769
+ 5. Confirm the dispute was recorded: "Dispute recorded for [finding title]. A triage credit has been applied and the finding is now marked as disputed. This feedback will help improve future triages."
770
+ 6. Skip the remaining feedback steps (the dispute is the action)
771
+
772
+ If \`bugzy-findings\` is not available (command not found), inform the customer that dispute functionality is not available for this project and suggest contacting support.
773
+
774
+ **If NOT a dispute**, continue with the standard feedback flow below.
775
+
776
+ ### Step 3: Update Test Case Specifications
758
777
 
759
778
  **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.
760
779
 
@@ -766,7 +785,7 @@ For each actionable feedback item:
766
785
 
767
786
  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.
768
787
 
769
- ### Step 3: Acknowledge and Confirm
788
+ ### Step 4: Acknowledge and Confirm
770
789
 
771
790
  Respond confirming: feedback received, summary of what was captured, actions taken (including any test case updates), and follow-up questions if needed.
772
791
 
@@ -1051,7 +1070,11 @@ Use these as reference patterns for common events. The webhook routing system al
1051
1070
 
1052
1071
  **Jira Events:**
1053
1072
  - **Status \u2192 "Ready to Test" / "In Testing" / "Ready for QA"**: Propose \`/verify-changes\` with issue context
1054
- - **Resolution: "Not a Bug" / "Won't Fix" / "User Error"**: Update knowledge base directly with the learning (no queue needed)
1073
+ - **Resolution: "Not a Bug" / "Won't Fix" / "User Error"**: Update knowledge base directly with the learning (no queue needed). Additionally, if the issue was linked to a triage finding (check via \`bugzy-findings list\` matching by issue tracker key), auto-dispute the finding:
1074
+ \`\`\`bash
1075
+ bugzy-findings dispute --finding-id <matched-finding-id> --explanation "Issue resolved as Not a Bug/Won't Fix in issue tracker"
1076
+ \`\`\`
1077
+ This applies a triage credit automatically when the issue tracker confirms the triage was incorrect. If \`bugzy-findings\` is not available, skip the dispute and only update the knowledge base.
1055
1078
  - **Bug created with relevant labels**: Propose \`/generate-test-cases\` to update related test coverage, confirm with team
1056
1079
  - **Backlog \u2192 To Do**: No QA action needed, log to event history only
1057
1080
 
@@ -6098,6 +6121,16 @@ After analyzing test results, triage each failure to determine if it's a product
6098
6121
 
6099
6122
  **IMPORTANT: Do NOT report bugs without triaging first.**
6100
6123
 
6124
+ ### 0. Read Disputed Findings (Learning Context)
6125
+
6126
+ Before triaging, check for prior disputed findings to avoid repeating past mistakes:
6127
+
6128
+ \`\`\`bash
6129
+ cat .bugzy/runtime/disputed-findings.md 2>/dev/null || echo "No disputed findings found"
6130
+ \`\`\`
6131
+
6132
+ If the file exists, read it carefully. It contains past triage mistakes and lessons learned. Use this context to improve classification accuracy for similar failures.
6133
+
6101
6134
  ### 1. Check Failure Classification
6102
6135
 
6103
6136
  **Before triaging any failure**, read \`new_failures\` from the latest \`test-runs/*/manifest.json\`:
@@ -6155,7 +6188,42 @@ For each failed test (from \`new_failures\` or all failures if field is missing)
6155
6188
  | Test ID | Test Name | Last Passed Run |
6156
6189
  |---------|-----------|-----------------|
6157
6190
  | TC-003 | Search | 20260210-103045 |
6158
- \`\`\``,
6191
+ \`\`\`
6192
+
6193
+ ### 4. Record Findings
6194
+
6195
+ After triaging, record each classified failure as a structured finding via the \`bugzy-findings\` CLI. This stores findings in the platform database for tracking, disputes, and dashboard visualization.
6196
+
6197
+ For each triaged failure, run:
6198
+
6199
+ \`\`\`bash
6200
+ bugzy-findings add \\
6201
+ --title "<concise failure description>" \\
6202
+ --description "<detailed analysis including error message and root cause>" \\
6203
+ --severity <critical|high|medium|low> \\
6204
+ --classification <product-bug|test-issue> \\
6205
+ --test-case-id "<test ID from triage table>" \\
6206
+ --test-run-timestamp "<timestamp from manifest.json>"
6207
+ \`\`\`
6208
+
6209
+ **Severity Guidelines:**
6210
+ - **critical**: Application crash, data loss, security vulnerability
6211
+ - **high**: Major feature broken, blocking workflow
6212
+ - **medium**: Feature partially broken, workaround exists
6213
+ - **low**: Minor cosmetic issue, edge case
6214
+
6215
+ Example:
6216
+ \`\`\`bash
6217
+ bugzy-findings add \\
6218
+ --title "Checkout form returns 500 on submit" \\
6219
+ --description "POST /api/checkout returns HTTP 500 when submitting with valid payment data. Stack trace shows null reference in payment processor." \\
6220
+ --severity high \\
6221
+ --classification product-bug \\
6222
+ --test-case-id "TC-002" \\
6223
+ --test-run-timestamp "20260219-103045"
6224
+ \`\`\`
6225
+
6226
+ If \`bugzy-findings\` is not available (command not found), skip this step silently \u2014 findings recording is optional and does not block triage.`,
6159
6227
  tags: ["execution", "triage", "analysis"]
6160
6228
  };
6161
6229