@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
@@ -31,12 +31,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  ));
32
32
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
33
 
34
- // node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
34
+ // node_modules/.pnpm/tsup@8.5.0_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
35
35
  var getImportMetaUrl, importMetaUrl;
36
36
  var init_cjs_shims = __esm({
37
- "node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js"() {
37
+ "node_modules/.pnpm/tsup@8.5.0_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js"() {
38
38
  "use strict";
39
- getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
39
+ getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
40
40
  importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
41
41
  }
42
42
  });
@@ -551,7 +551,7 @@ If intent is not in the payload, detect from message patterns:
551
551
  | Condition | Intent |
552
552
  |-----------|--------|
553
553
  | Keywords: "status", "progress", "how did", "results", "how many passed" | \`status\` |
554
- | Keywords: "bug", "issue", "broken", "doesn't work", "failed", "error" | \`feedback\` |
554
+ | Keywords: "bug", "issue", "broken", "doesn't work", "failed", "error", "wrong triage", "incorrect classification", "dispute", "that was wrong" | \`feedback\` |
555
555
  | Question words: "what", "which", "do we have", "is there" about tests/project | \`question\` |
556
556
  | Default (none of above) | \`feedback\` |
557
557
 
@@ -587,7 +587,26 @@ Extract the following from the message:
587
587
  - \`suggestion\`: "should", "could we", "what if", "idea"
588
588
  - \`general\`: Default for unclassified feedback
589
589
 
590
- ### Step 2: Update Test Case Specifications
590
+ ### Step 2: Check for Dispute Intent
591
+
592
+ 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...").
593
+
594
+ **If dispute detected:**
595
+ 1. Call \`bugzy-findings list\` to retrieve recent findings
596
+ 2. Match the customer's message to a specific finding by test name, description, or ID
597
+ 3. If ambiguous (multiple possible matches), list recent findings and ask the customer to clarify which one they're disputing
598
+ 4. Once matched, call:
599
+ \`\`\`bash
600
+ bugzy-findings dispute --finding-id <matched-finding-id> --explanation "<customer's explanation>"
601
+ \`\`\`
602
+ 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."
603
+ 6. Skip the remaining feedback steps (the dispute is the action)
604
+
605
+ 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.
606
+
607
+ **If NOT a dispute**, continue with the standard feedback flow below.
608
+
609
+ ### Step 3: Update Test Case Specifications
591
610
 
592
611
  **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.
593
612
 
@@ -599,7 +618,7 @@ For each actionable feedback item:
599
618
 
600
619
  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.
601
620
 
602
- ### Step 3: Acknowledge and Confirm
621
+ ### Step 4: Acknowledge and Confirm
603
622
 
604
623
  Respond confirming: feedback received, summary of what was captured, actions taken (including any test case updates), and follow-up questions if needed.
605
624
 
@@ -892,7 +911,11 @@ Use these as reference patterns for common events. The webhook routing system al
892
911
 
893
912
  **Jira Events:**
894
913
  - **Status \u2192 "Ready to Test" / "In Testing" / "Ready for QA"**: Propose \`/verify-changes\` with issue context
895
- - **Resolution: "Not a Bug" / "Won't Fix" / "User Error"**: Update knowledge base directly with the learning (no queue needed)
914
+ - **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:
915
+ \`\`\`bash
916
+ bugzy-findings dispute --finding-id <matched-finding-id> --explanation "Issue resolved as Not a Bug/Won't Fix in issue tracker"
917
+ \`\`\`
918
+ 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.
896
919
  - **Bug created with relevant labels**: Propose \`/generate-test-cases\` to update related test coverage, confirm with team
897
920
  - **Backlog \u2192 To Do**: No QA action needed, log to event history only
898
921
 
@@ -6498,6 +6521,16 @@ After analyzing test results, triage each failure to determine if it's a product
6498
6521
 
6499
6522
  **IMPORTANT: Do NOT report bugs without triaging first.**
6500
6523
 
6524
+ ### 0. Read Disputed Findings (Learning Context)
6525
+
6526
+ Before triaging, check for prior disputed findings to avoid repeating past mistakes:
6527
+
6528
+ \`\`\`bash
6529
+ cat .bugzy/runtime/disputed-findings.md 2>/dev/null || echo "No disputed findings found"
6530
+ \`\`\`
6531
+
6532
+ 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.
6533
+
6501
6534
  ### 1. Check Failure Classification
6502
6535
 
6503
6536
  **Before triaging any failure**, read \`new_failures\` from the latest \`test-runs/*/manifest.json\`:
@@ -6555,7 +6588,42 @@ For each failed test (from \`new_failures\` or all failures if field is missing)
6555
6588
  | Test ID | Test Name | Last Passed Run |
6556
6589
  |---------|-----------|-----------------|
6557
6590
  | TC-003 | Search | 20260210-103045 |
6558
- \`\`\``,
6591
+ \`\`\`
6592
+
6593
+ ### 4. Record Findings
6594
+
6595
+ 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.
6596
+
6597
+ For each triaged failure, run:
6598
+
6599
+ \`\`\`bash
6600
+ bugzy-findings add \\
6601
+ --title "<concise failure description>" \\
6602
+ --description "<detailed analysis including error message and root cause>" \\
6603
+ --severity <critical|high|medium|low> \\
6604
+ --classification <product-bug|test-issue> \\
6605
+ --test-case-id "<test ID from triage table>" \\
6606
+ --test-run-timestamp "<timestamp from manifest.json>"
6607
+ \`\`\`
6608
+
6609
+ **Severity Guidelines:**
6610
+ - **critical**: Application crash, data loss, security vulnerability
6611
+ - **high**: Major feature broken, blocking workflow
6612
+ - **medium**: Feature partially broken, workaround exists
6613
+ - **low**: Minor cosmetic issue, edge case
6614
+
6615
+ Example:
6616
+ \`\`\`bash
6617
+ bugzy-findings add \\
6618
+ --title "Checkout form returns 500 on submit" \\
6619
+ --description "POST /api/checkout returns HTTP 500 when submitting with valid payment data. Stack trace shows null reference in payment processor." \\
6620
+ --severity high \\
6621
+ --classification product-bug \\
6622
+ --test-case-id "TC-002" \\
6623
+ --test-run-timestamp "20260219-103045"
6624
+ \`\`\`
6625
+
6626
+ If \`bugzy-findings\` is not available (command not found), skip this step silently \u2014 findings recording is optional and does not block triage.`,
6559
6627
  tags: ["execution", "triage", "analysis"]
6560
6628
  };
6561
6629