agentic-qe 2.0.0 → 2.1.1
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/.claude/agents/qx-partner.md +17 -4
- package/.claude/skills/accessibility-testing/SKILL.md +144 -692
- package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
- package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
- package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
- package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
- package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
- package/.claude/skills/code-review-quality/SKILL.md +158 -608
- package/.claude/skills/compatibility-testing/SKILL.md +148 -38
- package/.claude/skills/compliance-testing/SKILL.md +132 -63
- package/.claude/skills/consultancy-practices/SKILL.md +114 -446
- package/.claude/skills/context-driven-testing/SKILL.md +117 -381
- package/.claude/skills/contract-testing/SKILL.md +176 -141
- package/.claude/skills/database-testing/SKILL.md +137 -130
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
- package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
- package/.claude/skills/localization-testing/SKILL.md +145 -33
- package/.claude/skills/mobile-testing/SKILL.md +132 -448
- package/.claude/skills/mutation-testing/SKILL.md +147 -41
- package/.claude/skills/performance-testing/SKILL.md +200 -546
- package/.claude/skills/quality-metrics/SKILL.md +164 -519
- package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
- package/.claude/skills/regression-testing/SKILL.md +120 -926
- package/.claude/skills/risk-based-testing/SKILL.md +157 -660
- package/.claude/skills/security-testing/SKILL.md +199 -538
- package/.claude/skills/sherlock-review/SKILL.md +163 -699
- package/.claude/skills/shift-left-testing/SKILL.md +161 -465
- package/.claude/skills/shift-right-testing/SKILL.md +161 -519
- package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
- package/.claude/skills/skills-manifest.json +71 -20
- package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
- package/.claude/skills/technical-writing/SKILL.md +103 -154
- package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
- package/.claude/skills/test-data-management/SKILL.md +126 -910
- package/.claude/skills/test-design-techniques/SKILL.md +179 -89
- package/.claude/skills/test-environment-management/SKILL.md +136 -91
- package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
- package/.claude/skills/testability-scoring/SKILL.md +172 -538
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +0 -0
- package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
- package/.claude/skills/xp-practices/SKILL.md +151 -587
- package/CHANGELOG.md +86 -0
- package/README.md +23 -16
- package/dist/agents/QXPartnerAgent.d.ts +47 -1
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
- package/dist/agents/QXPartnerAgent.js +2086 -125
- package/dist/agents/QXPartnerAgent.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
- package/dist/cli/commands/init-claude-md-template.js +14 -0
- package/dist/cli/commands/init-claude-md-template.js.map +1 -1
- package/dist/core/SwarmCoordinator.d.ts +180 -0
- package/dist/core/SwarmCoordinator.d.ts.map +1 -0
- package/dist/core/SwarmCoordinator.js +473 -0
- package/dist/core/SwarmCoordinator.js.map +1 -0
- package/dist/core/memory/ReflexionMemoryAdapter.d.ts +109 -0
- package/dist/core/memory/ReflexionMemoryAdapter.d.ts.map +1 -0
- package/dist/core/memory/ReflexionMemoryAdapter.js +306 -0
- package/dist/core/memory/ReflexionMemoryAdapter.js.map +1 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts +28 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.js +70 -0
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/core/memory/SparseVectorSearch.d.ts +55 -0
- package/dist/core/memory/SparseVectorSearch.d.ts.map +1 -0
- package/dist/core/memory/SparseVectorSearch.js +130 -0
- package/dist/core/memory/SparseVectorSearch.js.map +1 -0
- package/dist/core/memory/TieredCompression.d.ts +81 -0
- package/dist/core/memory/TieredCompression.d.ts.map +1 -0
- package/dist/core/memory/TieredCompression.js +270 -0
- package/dist/core/memory/TieredCompression.js.map +1 -0
- package/dist/core/memory/index.d.ts +6 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +29 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
- package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
- package/dist/core/metrics/MetricsAggregator.js +482 -0
- package/dist/core/metrics/MetricsAggregator.js.map +1 -0
- package/dist/core/metrics/index.d.ts +5 -0
- package/dist/core/metrics/index.d.ts.map +1 -0
- package/dist/core/metrics/index.js +11 -0
- package/dist/core/metrics/index.js.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts +5 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -1
- package/dist/core/optimization/SwarmOptimizer.js +17 -0
- package/dist/core/optimization/SwarmOptimizer.js.map +1 -1
- package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
- package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
- package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
- package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts +13 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -1
- package/dist/core/orchestration/WorkflowOrchestrator.js +32 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -1
- package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
- package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
- package/dist/core/recovery/CircuitBreaker.js +382 -0
- package/dist/core/recovery/CircuitBreaker.js.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
- package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
- package/dist/core/recovery/RetryStrategy.d.ts +127 -0
- package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
- package/dist/core/recovery/RetryStrategy.js +314 -0
- package/dist/core/recovery/RetryStrategy.js.map +1 -0
- package/dist/core/recovery/index.d.ts +8 -0
- package/dist/core/recovery/index.d.ts.map +1 -0
- package/dist/core/recovery/index.js +27 -0
- package/dist/core/recovery/index.js.map +1 -0
- package/dist/core/skills/DependencyResolver.d.ts +99 -0
- package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
- package/dist/core/skills/DependencyResolver.js +260 -0
- package/dist/core/skills/DependencyResolver.js.map +1 -0
- package/dist/core/skills/ManifestGenerator.d.ts +114 -0
- package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
- package/dist/core/skills/ManifestGenerator.js +449 -0
- package/dist/core/skills/ManifestGenerator.js.map +1 -0
- package/dist/core/skills/index.d.ts +9 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/skills/index.js +24 -0
- package/dist/core/skills/index.js.map +1 -0
- package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts +5 -0
- package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-failure.js +36 -2
- package/dist/mcp/handlers/chaos/chaos-inject-failure.js.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts +5 -0
- package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-latency.js +36 -2
- package/dist/mcp/handlers/chaos/chaos-inject-latency.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -9
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/types/qx.d.ts +113 -7
- package/dist/types/qx.d.ts.map +1 -1
- package/dist/types/qx.js.map +1 -1
- package/dist/visualization/api/RestEndpoints.js +1 -1
- package/dist/visualization/api/RestEndpoints.js.map +1 -1
- package/package.json +15 -54
|
@@ -1,601 +1,209 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bug-reporting-excellence
|
|
3
|
-
description: Write high-quality bug reports that get fixed quickly. Use when reporting bugs, training teams on bug reporting, or establishing bug report standards.
|
|
3
|
+
description: "Write high-quality bug reports that get fixed quickly. Use when reporting bugs, training teams on bug reporting, or establishing bug report standards."
|
|
4
|
+
category: quality-communication
|
|
5
|
+
priority: high
|
|
6
|
+
tokenEstimate: 900
|
|
7
|
+
agents: [qe-quality-analyzer, qe-production-intelligence, qe-flaky-test-hunter]
|
|
8
|
+
implementation_status: optimized
|
|
9
|
+
optimization_version: 1.0
|
|
10
|
+
last_optimized: 2025-12-03
|
|
11
|
+
dependencies: []
|
|
12
|
+
quick_reference_card: true
|
|
13
|
+
tags: [bugs, reporting, communication, triage, quality]
|
|
4
14
|
---
|
|
5
15
|
|
|
6
16
|
# Bug Reporting Excellence
|
|
7
17
|
|
|
8
|
-
|
|
18
|
+
<default_to_action>
|
|
19
|
+
When reporting bugs:
|
|
20
|
+
1. TITLE: `[Component] fails [Condition] causing [Impact]`
|
|
21
|
+
2. DESCRIBE: Expected behavior → Actual behavior → Steps to reproduce
|
|
22
|
+
3. INCLUDE: Environment, severity, screenshots/logs, business impact
|
|
23
|
+
4. ISOLATE: Narrow down conditions (browser, user, amount thresholds)
|
|
24
|
+
5. ONE BUG = ONE REPORT (don't combine issues)
|
|
9
25
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
26
|
+
**Bug Report Formula:**
|
|
27
|
+
```markdown
|
|
28
|
+
## [Component] Issue Title
|
|
29
|
+
**Severity:** Critical/High/Medium/Low
|
|
30
|
+
**Environment:** Production/Staging/Dev
|
|
13
31
|
|
|
14
|
-
|
|
32
|
+
### Expected Behavior
|
|
33
|
+
What should happen
|
|
15
34
|
|
|
16
|
-
###
|
|
35
|
+
### Actual Behavior
|
|
36
|
+
What actually happens (with error messages)
|
|
17
37
|
|
|
18
|
-
|
|
19
|
-
|
|
38
|
+
### Steps to Reproduce
|
|
39
|
+
1. Step one
|
|
40
|
+
2. Step two
|
|
41
|
+
3. Observe issue
|
|
20
42
|
|
|
21
|
-
|
|
43
|
+
### Impact
|
|
44
|
+
How this affects users/business
|
|
45
|
+
```
|
|
22
46
|
|
|
23
|
-
|
|
47
|
+
**Critical Success Factors:**
|
|
48
|
+
- Reproducible steps (100%)
|
|
49
|
+
- Environment info (100%)
|
|
50
|
+
- Business impact stated (90%)
|
|
51
|
+
- Screenshots or logs (80%)
|
|
52
|
+
</default_to_action>
|
|
24
53
|
|
|
25
|
-
|
|
26
|
-
What should happen?
|
|
54
|
+
## Quick Reference Card
|
|
27
55
|
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
When a user adds items to cart and proceeds to checkout with a valid Visa card,
|
|
31
|
-
the payment should be processed successfully and the order should be created.
|
|
32
|
-
```
|
|
56
|
+
### Severity Levels
|
|
33
57
|
|
|
34
|
-
|
|
35
|
-
|
|
58
|
+
| Level | Definition | Examples |
|
|
59
|
+
|-------|------------|----------|
|
|
60
|
+
| **Critical** | System down, data loss, security | DB deleted, payments broken, credentials exposed |
|
|
61
|
+
| **High** | Major feature broken, many users | Can't checkout, search broken, dashboard fails |
|
|
62
|
+
| **Medium** | Partial break, workaround exists | Filter broken (refresh works), slow export |
|
|
63
|
+
| **Low** | Cosmetic, rare edge case | Button wraps on mobile, tooltip wrong color |
|
|
36
64
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Payment fails with
|
|
40
|
-
User remains on checkout page, order is not created.
|
|
41
|
-
Error appears in console: "Payment gateway timeout: 30000ms exceeded"
|
|
42
|
-
```
|
|
65
|
+
### Title Formula
|
|
66
|
+
❌ Bad: "Checkout broken"
|
|
67
|
+
✅ Good: "Payment fails with Visa cards when order total > $1000"
|
|
43
68
|
|
|
44
|
-
|
|
45
|
-
How to make it happen?
|
|
69
|
+
**Pattern:** `[Component] fails [Condition] causing [Impact]`
|
|
46
70
|
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
1. Log in as test user (test@example.com / password123)
|
|
50
|
-
2. Add "Premium Widget" to cart (SKU: WIDGET-001)
|
|
51
|
-
3. Add quantity: 15 (total: $1,050)
|
|
52
|
-
4. Go to checkout
|
|
53
|
-
5. Enter Visa card: 4532 1234 5678 9010
|
|
54
|
-
6. Click "Place Order"
|
|
55
|
-
7. Observe error message
|
|
56
|
-
```
|
|
71
|
+
---
|
|
57
72
|
|
|
58
|
-
## Essential Information
|
|
73
|
+
## Essential Information
|
|
59
74
|
|
|
60
75
|
### Environment Details
|
|
61
76
|
```
|
|
62
77
|
Browser: Chrome 120.0.6099.109 (Windows)
|
|
63
78
|
OS: Windows 11 Pro
|
|
64
|
-
Screen: 1920x1080
|
|
65
79
|
URL: https://example.com/checkout
|
|
66
80
|
Date/Time: 2025-10-17 14:23 UTC
|
|
67
81
|
User: test@example.com (ID: 12345)
|
|
82
|
+
Request ID: abc-123-def-456
|
|
68
83
|
```
|
|
69
84
|
|
|
70
|
-
### Impact/Severity
|
|
71
|
-
|
|
72
|
-
**Critical:** System down, data loss, security breach
|
|
73
|
-
- "Production database deleted"
|
|
74
|
-
- "Payment processing completely broken"
|
|
75
|
-
- "User credentials exposed"
|
|
76
|
-
|
|
77
|
-
**High:** Major feature broken, many users affected
|
|
78
|
-
- "Cannot checkout with Visa cards"
|
|
79
|
-
- "Search returns no results"
|
|
80
|
-
- "Admin dashboard doesn't load"
|
|
81
|
-
|
|
82
|
-
**Medium:** Feature partially broken, workaround exists
|
|
83
|
-
- "Filtering by price doesn't update results (refresh works)"
|
|
84
|
-
- "Export button slow (but completes eventually)"
|
|
85
|
-
|
|
86
|
-
**Low:** Minor issue, cosmetic, rare edge case
|
|
87
|
-
- "Button text wraps on mobile"
|
|
88
|
-
- "Tooltip shows wrong color"
|
|
89
|
-
- "Error message has typo"
|
|
90
|
-
|
|
91
85
|
### Supporting Evidence
|
|
92
86
|
|
|
93
|
-
**
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- Include multiple steps if needed
|
|
97
|
-
|
|
98
|
-
**Error Messages**
|
|
99
|
-
```
|
|
100
|
-
Network Error:
|
|
101
|
-
POST /api/checkout HTTP/1.1
|
|
102
|
-
Status: 504 Gateway Timeout
|
|
103
|
-
Response: {
|
|
87
|
+
**Error Messages:**
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
104
90
|
"error": "Payment service unavailable",
|
|
105
91
|
"code": "GATEWAY_TIMEOUT",
|
|
106
92
|
"requestId": "abc-123-def-456"
|
|
107
93
|
}
|
|
108
94
|
```
|
|
109
95
|
|
|
110
|
-
**Console Logs
|
|
96
|
+
**Console Logs:**
|
|
111
97
|
```
|
|
112
98
|
[ERROR] PaymentGateway: Connection timeout after 30000ms
|
|
113
99
|
at PaymentGateway.charge (gateway.js:145)
|
|
114
|
-
at CheckoutController.processPayment (checkout.js:67)
|
|
115
|
-
at async CheckoutController.submit (checkout.js:23)
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**Network Traces**
|
|
119
|
-
```
|
|
120
|
-
Request ID: abc-123-def-456
|
|
121
|
-
Duration: 30,142ms
|
|
122
|
-
Payment gateway endpoint: https://gateway.example.com/v1/charge
|
|
123
|
-
Request body: { amount: 1050, currency: 'USD', card: '4532...9010' }
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## Bug Report Template
|
|
127
|
-
|
|
128
|
-
```markdown
|
|
129
|
-
## [Component] Issue Title
|
|
130
|
-
|
|
131
|
-
**Severity:** [Critical/High/Medium/Low]
|
|
132
|
-
**Environment:** [Production/Staging/Dev]
|
|
133
|
-
**Affected Users:** [All/Specific segment/Single user]
|
|
134
|
-
|
|
135
|
-
### Expected Behavior
|
|
136
|
-
What should happen
|
|
137
|
-
|
|
138
|
-
### Actual Behavior
|
|
139
|
-
What actually happens
|
|
140
|
-
|
|
141
|
-
### Steps to Reproduce
|
|
142
|
-
1. Step one
|
|
143
|
-
2. Step two
|
|
144
|
-
3. Step three
|
|
145
|
-
4. Observe issue
|
|
146
|
-
|
|
147
|
-
### Environment
|
|
148
|
-
- Browser/App:
|
|
149
|
-
- OS:
|
|
150
|
-
- Version:
|
|
151
|
-
- User account:
|
|
152
|
-
- Date/time:
|
|
153
|
-
|
|
154
|
-
### Supporting Evidence
|
|
155
|
-
[Screenshots, error messages, logs]
|
|
156
|
-
|
|
157
|
-
### Impact
|
|
158
|
-
How this affects users/business
|
|
159
|
-
|
|
160
|
-
### Additional Context
|
|
161
|
-
Any other relevant information
|
|
162
|
-
|
|
163
|
-
### Possible Cause (Optional)
|
|
164
|
-
If you have insights into why this might be happening
|
|
165
100
|
```
|
|
166
101
|
|
|
167
|
-
|
|
102
|
+
---
|
|
168
103
|
|
|
169
|
-
|
|
104
|
+
## Example: Excellent Bug Report
|
|
170
105
|
|
|
171
106
|
```markdown
|
|
172
107
|
## [Checkout] Payment processing times out for orders > $1000
|
|
173
108
|
|
|
174
109
|
**Severity:** High
|
|
175
110
|
**Environment:** Production
|
|
176
|
-
**Affected Users:** ~15% of premium purchases
|
|
111
|
+
**Affected Users:** ~15% of premium purchases
|
|
177
112
|
|
|
178
113
|
### Expected Behavior
|
|
179
|
-
Payment
|
|
114
|
+
Payment completes within 5 seconds regardless of amount.
|
|
180
115
|
|
|
181
116
|
### Actual Behavior
|
|
182
|
-
For orders above $1000, payment gateway
|
|
183
|
-
User sees "Payment failed" error. Order
|
|
117
|
+
For orders above $1000, payment gateway times out after 30 seconds.
|
|
118
|
+
User sees "Payment failed" error. Order not created.
|
|
184
119
|
|
|
185
120
|
### Steps to Reproduce
|
|
186
|
-
1.
|
|
187
|
-
2.
|
|
188
|
-
3.
|
|
189
|
-
4.
|
|
190
|
-
5.
|
|
191
|
-
6.
|
|
192
|
-
7. Observe timeout error
|
|
121
|
+
1. Add items totaling $1,050 to cart
|
|
122
|
+
2. Proceed to checkout
|
|
123
|
+
3. Enter payment: Visa 4532 1234 5678 9010
|
|
124
|
+
4. Click "Place Order"
|
|
125
|
+
5. Wait 30+ seconds
|
|
126
|
+
6. Observe timeout error
|
|
193
127
|
|
|
194
128
|
### Environment
|
|
195
129
|
- Browser: Chrome 120 (Windows 11)
|
|
196
130
|
- User: test@example.com
|
|
197
|
-
- Time: 2025-10-17 14:23 UTC
|
|
198
131
|
- Request ID: abc-123-def-456
|
|
199
132
|
|
|
200
|
-
###
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
```
|
|
204
|
-
[ERROR] PaymentGateway timeout: 30000ms exceeded
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
Network tab shows:
|
|
208
|
-
- Request to /api/checkout: 30.14s
|
|
209
|
-
- Payment gateway call: 29.98s (timeout)
|
|
210
|
-
|
|
211
|
-
Screenshot attached: [timeout-error.png]
|
|
133
|
+
### Evidence
|
|
134
|
+
Console error: `PaymentGateway timeout: 30000ms exceeded`
|
|
135
|
+
Network: /api/checkout: 30.14s (timeout)
|
|
212
136
|
|
|
213
137
|
### Impact
|
|
214
|
-
- Lost revenue: ~$15K/week from failed
|
|
215
|
-
-
|
|
138
|
+
- Lost revenue: ~$15K/week from failed orders
|
|
139
|
+
- 23 support tickets this week
|
|
216
140
|
- Affects 15% of orders over $1000
|
|
217
141
|
|
|
218
142
|
### Additional Context
|
|
219
|
-
|
|
220
|
-
Possibly related to PR #456 (fraud check
|
|
221
|
-
|
|
222
|
-
### Possible Cause
|
|
223
|
-
New fraud check service for orders > $1000 is slow.
|
|
224
|
-
Might need caching or async processing.
|
|
143
|
+
Started after Oct 15 deployment (v2.3.0)
|
|
144
|
+
Possibly related to PR #456 (fraud check)
|
|
225
145
|
```
|
|
226
146
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
```markdown
|
|
230
|
-
## [Cart] "Remove" button hidden on mobile Safari
|
|
231
|
-
|
|
232
|
-
**Severity:** Medium
|
|
233
|
-
**Environment:** Production
|
|
234
|
-
**Affected Users:** Mobile Safari users (~8% of traffic)
|
|
235
|
-
|
|
236
|
-
### Expected Behavior
|
|
237
|
-
"Remove" button should be visible next to each cart item on all devices.
|
|
238
|
-
|
|
239
|
-
### Actual Behavior
|
|
240
|
-
On mobile Safari (iOS), "Remove" button is cut off and not clickable.
|
|
241
|
-
|
|
242
|
-
### Steps to Reproduce
|
|
243
|
-
1. Open https://example.com on iPhone (Safari)
|
|
244
|
-
2. Add 2+ items to cart
|
|
245
|
-
3. Navigate to cart page
|
|
246
|
-
4. Try to remove an item
|
|
247
|
-
5. Observe button is partially hidden
|
|
248
|
-
|
|
249
|
-
### Environment
|
|
250
|
-
- Device: iPhone 14 Pro (iOS 17.1)
|
|
251
|
-
- Browser: Safari 17
|
|
252
|
-
- Viewport: 390x844
|
|
253
|
-
- Time: 2025-10-17
|
|
254
|
-
|
|
255
|
-
### Supporting Evidence
|
|
256
|
-
Screenshot: [cart-mobile-bug.png]
|
|
257
|
-
- Shows button cut off at edge of screen
|
|
258
|
-
|
|
259
|
-
Comparison on Chrome iOS: Works correctly
|
|
260
|
-
|
|
261
|
-
### Impact
|
|
262
|
-
- Users cannot remove items from cart on iOS Safari
|
|
263
|
-
- Workaround: Use desktop or Chrome mobile
|
|
264
|
-
- Affects ~300 users/day
|
|
265
|
-
|
|
266
|
-
### Additional Context
|
|
267
|
-
CSS issue. Button has `position: absolute` and exceeds container width.
|
|
268
|
-
|
|
269
|
-
### Possible Cause
|
|
270
|
-
```css
|
|
271
|
-
.cart-item-remove {
|
|
272
|
-
position: absolute;
|
|
273
|
-
right: -10px; /* This is the problem */
|
|
274
|
-
}
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
Suggested fix: Change to `right: 10px;`
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
## Anti-Patterns: Bad Bug Reports
|
|
281
|
-
|
|
282
|
-
### ❌ Vague Description
|
|
283
|
-
|
|
284
|
-
**Bad:**
|
|
285
|
-
```
|
|
286
|
-
Title: Checkout is broken
|
|
287
|
-
Description: It doesn't work.
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
**Problem:**
|
|
291
|
-
- What doesn't work?
|
|
292
|
-
- Which part of checkout?
|
|
293
|
-
- What did you try?
|
|
294
|
-
|
|
295
|
-
**Good:**
|
|
296
|
-
```
|
|
297
|
-
Title: Payment submission button does nothing when clicked
|
|
298
|
-
Description: [Full details with steps, expected vs actual behavior]
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
### ❌ No Steps to Reproduce
|
|
302
|
-
|
|
303
|
-
**Bad:**
|
|
304
|
-
```
|
|
305
|
-
Title: I saw an error
|
|
306
|
-
Description: There was an error message on the screen.
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
**Problem:**
|
|
310
|
-
- How did you get to that screen?
|
|
311
|
-
- What were you doing?
|
|
312
|
-
- Can anyone else reproduce it?
|
|
313
|
-
|
|
314
|
-
### ❌ Missing Environment Info
|
|
315
|
-
|
|
316
|
-
**Bad:**
|
|
317
|
-
```
|
|
318
|
-
Title: Page loads slowly
|
|
319
|
-
Description: The page takes forever to load.
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
**Problem:**
|
|
323
|
-
- Which page?
|
|
324
|
-
- Which browser?
|
|
325
|
-
- How slow is "slow"?
|
|
326
|
-
- Is it always slow or sometimes?
|
|
327
|
-
|
|
328
|
-
### ❌ Combining Multiple Issues
|
|
329
|
-
|
|
330
|
-
**Bad:**
|
|
331
|
-
```
|
|
332
|
-
Title: Multiple bugs found
|
|
333
|
-
Description:
|
|
334
|
-
1. Cart doesn't update
|
|
335
|
-
2. Payment fails sometimes
|
|
336
|
-
3. Footer is misaligned
|
|
337
|
-
4. Email notifications are slow
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
**Problem:** Four separate issues, each needs its own investigation and fix.
|
|
341
|
-
|
|
342
|
-
**Good:** Create four separate bug reports.
|
|
343
|
-
|
|
344
|
-
### ❌ Feature Requests Disguised as Bugs
|
|
345
|
-
|
|
346
|
-
**Bad:**
|
|
347
|
-
```
|
|
348
|
-
Title: [BUG] No dark mode
|
|
349
|
-
Description: The app doesn't have dark mode.
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
**Problem:** Missing feature ≠ bug. File as feature request.
|
|
353
|
-
|
|
354
|
-
## Advanced Techniques
|
|
355
|
-
|
|
356
|
-
### Root Cause Analysis
|
|
357
|
-
|
|
358
|
-
Don't just report symptoms. Investigate:
|
|
359
|
-
|
|
360
|
-
```markdown
|
|
361
|
-
**Symptom:** Payment timeout
|
|
362
|
-
|
|
363
|
-
**Investigation:**
|
|
364
|
-
1. Checked network tab → 30s timeout
|
|
365
|
-
2. Checked server logs → Payment gateway slow
|
|
366
|
-
3. Checked gateway metrics → High latency for fraud checks
|
|
367
|
-
4. Checked recent changes → New fraud service deployed Oct 15
|
|
368
|
-
|
|
369
|
-
**Root Cause:** New fraud checking service adds 28s latency
|
|
370
|
-
|
|
371
|
-
**Suggested Fix:**
|
|
372
|
-
- Make fraud check async
|
|
373
|
-
- Or optimize fraud service queries
|
|
374
|
-
- Or increase timeout threshold
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
### Isolation and Simplification
|
|
378
|
-
|
|
379
|
-
**Original:** Payment fails on checkout
|
|
380
|
-
**After isolation:**
|
|
381
|
-
- Works with Mastercard ✓
|
|
382
|
-
- Fails with Visa ✗
|
|
383
|
-
- Only for amounts > $1000 ✗
|
|
384
|
-
- Only in production environment ✗
|
|
385
|
-
|
|
386
|
-
**Simplified repro:**
|
|
387
|
-
```
|
|
388
|
-
1. Use Visa card
|
|
389
|
-
2. Order total > $1000
|
|
390
|
-
3. In production
|
|
391
|
-
4. Observe failure
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
### Regression Testing
|
|
395
|
-
|
|
396
|
-
**When reopening bugs:**
|
|
397
|
-
```markdown
|
|
398
|
-
## [RE-OPENED] Payment timeout still occurs
|
|
399
|
-
|
|
400
|
-
**Original bug:** #12345 (marked as fixed in v2.3.1)
|
|
401
|
-
|
|
402
|
-
**Current status:** Still failing in v2.3.2
|
|
403
|
-
|
|
404
|
-
**New evidence:**
|
|
405
|
-
- Tested with fix from v2.3.1
|
|
406
|
-
- Issue persists for orders > $5000 (different threshold)
|
|
407
|
-
- Previous fix only addressed orders $1000-$5000
|
|
408
|
-
|
|
409
|
-
**Steps to reproduce:**
|
|
410
|
-
[Updated steps with new threshold]
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
## Bug Triage Guidelines
|
|
414
|
-
|
|
415
|
-
### Questions Developers Will Ask
|
|
416
|
-
|
|
417
|
-
**"Can you reproduce it consistently?"**
|
|
418
|
-
- Always: High priority
|
|
419
|
-
- Sometimes: Document conditions
|
|
420
|
-
- Once: Hard to fix, low priority
|
|
421
|
-
|
|
422
|
-
**"Does it happen in other environments?"**
|
|
423
|
-
- Production only: Likely config issue
|
|
424
|
-
- All environments: Code bug
|
|
425
|
-
- Dev only: Environment-specific
|
|
426
|
-
|
|
427
|
-
**"Is there a workaround?"**
|
|
428
|
-
- No workaround + high impact = Critical
|
|
429
|
-
- Easy workaround + low impact = Low priority
|
|
430
|
-
|
|
431
|
-
**"What's the business impact?"**
|
|
432
|
-
- Lost revenue: High priority
|
|
433
|
-
- Cosmetic issue: Low priority
|
|
434
|
-
- Data loss: Critical
|
|
435
|
-
|
|
436
|
-
## Tools for Better Bug Reports
|
|
437
|
-
|
|
438
|
-
### Screen Recording
|
|
439
|
-
- **Loom** - Quick screen recording with annotation
|
|
440
|
-
- **OBS Studio** - Professional recording
|
|
441
|
-
- **Built-in OS tools** - Windows Game Bar, macOS Screenshot
|
|
442
|
-
|
|
443
|
-
### Browser DevTools
|
|
444
|
-
- Network tab (HAR file export)
|
|
445
|
-
- Console logs (copy all)
|
|
446
|
-
- Performance profiling
|
|
447
|
-
- Screenshots with annotations
|
|
448
|
-
|
|
449
|
-
### Bug Tracking Systems
|
|
450
|
-
- **Jira** - Enterprise standard
|
|
451
|
-
- **Linear** - Modern, fast
|
|
452
|
-
- **GitHub Issues** - For open source
|
|
453
|
-
- **Azure DevOps** - Microsoft stack
|
|
454
|
-
|
|
455
|
-
### Collaboration
|
|
456
|
-
- **Slack/Teams** - Quick questions
|
|
457
|
-
- **Confluence** - Documentation
|
|
458
|
-
- **Miro/Figma** - Visual explanation
|
|
459
|
-
|
|
460
|
-
## Communication Tips
|
|
461
|
-
|
|
462
|
-
### Be Objective, Not Judgmental
|
|
463
|
-
|
|
464
|
-
**Bad:** "This stupid button doesn't work because someone wrote terrible code"
|
|
465
|
-
**Good:** "The submit button doesn't respond to clicks. Investigating why."
|
|
466
|
-
|
|
467
|
-
### Assume Good Intent
|
|
468
|
-
|
|
469
|
-
**Bad:** "Lazy devs broke checkout again"
|
|
470
|
-
**Good:** "Checkout issue appeared after yesterday's deployment. Might be related to PR #456."
|
|
471
|
-
|
|
472
|
-
### Be Specific About Impact
|
|
473
|
-
|
|
474
|
-
**Vague:** "This is really bad"
|
|
475
|
-
**Specific:** "15% of orders are failing, costing ~$15K/week in lost revenue"
|
|
476
|
-
|
|
477
|
-
### Offer to Help
|
|
478
|
-
|
|
479
|
-
**Passive:** "Button is broken"
|
|
480
|
-
**Helpful:** "Button is broken. I can pair with a dev to investigate or test fixes."
|
|
481
|
-
|
|
482
|
-
## Follow-Up
|
|
483
|
-
|
|
484
|
-
### After Reporting
|
|
485
|
-
|
|
486
|
-
1. **Monitor** for questions from developers
|
|
487
|
-
2. **Test** the fix when deployed
|
|
488
|
-
3. **Verify** it actually resolves the issue
|
|
489
|
-
4. **Document** if regression occurs
|
|
490
|
-
|
|
491
|
-
### Closing Bug Reports
|
|
492
|
-
|
|
493
|
-
**Verified fixed:**
|
|
494
|
-
```
|
|
495
|
-
✓ Tested in staging (v2.3.2)
|
|
496
|
-
✓ Verified with original repro steps
|
|
497
|
-
✓ No longer reproducible
|
|
498
|
-
✓ Closing as resolved
|
|
499
|
-
```
|
|
500
|
-
|
|
501
|
-
**Won't fix:**
|
|
502
|
-
```
|
|
503
|
-
Accepted as "won't fix" due to:
|
|
504
|
-
- Low impact (< 0.1% users)
|
|
505
|
-
- Workaround exists (use desktop)
|
|
506
|
-
- Cost of fix > benefit
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
## Metrics for Bug Report Quality
|
|
147
|
+
---
|
|
510
148
|
|
|
511
|
-
|
|
512
|
-
- Clear, reproducible steps (100%)
|
|
513
|
-
- Environment information (100%)
|
|
514
|
-
- Expected vs actual behavior (100%)
|
|
515
|
-
- Screenshots or logs (80%)
|
|
516
|
-
- Business impact stated (90%)
|
|
517
|
-
- Quick developer response time (<1 day)
|
|
149
|
+
## Anti-Patterns
|
|
518
150
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
151
|
+
| ❌ Bad | Problem | ✅ Good |
|
|
152
|
+
|--------|---------|--------|
|
|
153
|
+
| "Checkout is broken" | What doesn't work? | "Payment button doesn't respond when clicked" |
|
|
154
|
+
| "I saw an error" | No reproduction steps | Full steps with conditions |
|
|
155
|
+
| "Page loads slowly" | No specifics | "Dashboard takes 12s to load (should be <3s)" |
|
|
156
|
+
| Multiple bugs in one | Can't track separately | One report per bug |
|
|
524
157
|
|
|
525
|
-
|
|
158
|
+
---
|
|
526
159
|
|
|
527
|
-
|
|
160
|
+
## Agent Integration
|
|
528
161
|
|
|
529
|
-
**qe-quality-analyzer** assists in bug triage and categorization:
|
|
530
162
|
```typescript
|
|
531
|
-
//
|
|
532
|
-
const triage = await
|
|
163
|
+
// Automated bug triage
|
|
164
|
+
const triage = await Task("Triage Bug", {
|
|
533
165
|
title: 'Payment fails for orders > $1000',
|
|
534
166
|
description: bugDescription,
|
|
535
|
-
steps:
|
|
536
|
-
|
|
537
|
-
actualBehavior: '...',
|
|
538
|
-
attachments: screenshots
|
|
539
|
-
});
|
|
540
|
-
|
|
541
|
-
// Returns:
|
|
542
|
-
// {
|
|
543
|
-
// severity: 'critical',
|
|
544
|
-
// priority: 'high',
|
|
545
|
-
// likelyComponent: 'payment-service',
|
|
546
|
-
// suggestedAssignee: 'payments-team',
|
|
547
|
-
// relatedIssues: ['#123', '#456'],
|
|
548
|
-
// estimatedImpact: '5% of transactions affected'
|
|
549
|
-
// }
|
|
550
|
-
```
|
|
167
|
+
steps: reproductionSteps
|
|
168
|
+
}, "qe-quality-analyzer");
|
|
551
169
|
|
|
552
|
-
|
|
170
|
+
// Returns: { severity, priority, component, suggestedAssignee, relatedIssues }
|
|
553
171
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
const duplicateCheck = await agent.checkDuplicates({
|
|
172
|
+
// Duplicate detection
|
|
173
|
+
const dupeCheck = await Task("Check Duplicates", {
|
|
557
174
|
bugReport: newBug,
|
|
558
|
-
searchIn: 'open-and-closed',
|
|
559
175
|
similarityThreshold: 0.85
|
|
560
|
-
});
|
|
561
|
-
|
|
562
|
-
// Returns:
|
|
563
|
-
// {
|
|
564
|
-
// isDuplicate: true,
|
|
565
|
-
// originalIssue: '#789',
|
|
566
|
-
// similarity: 0.92,
|
|
567
|
-
// recommendation: 'Close as duplicate of #789'
|
|
568
|
-
// }
|
|
569
|
-
```
|
|
570
|
-
|
|
571
|
-
### Bug Report Quality Enhancement
|
|
176
|
+
}, "qe-quality-analyzer");
|
|
572
177
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
const enhanced = await qe-quality-analyzer.enhanceBugReport({
|
|
178
|
+
// Bug report enhancement
|
|
179
|
+
const enhanced = await Task("Enhance Report", {
|
|
576
180
|
originalReport: userSubmittedBug,
|
|
577
181
|
addMissingInfo: true,
|
|
578
|
-
suggestReproSteps: true,
|
|
579
182
|
identifyRootCause: true
|
|
580
|
-
});
|
|
581
|
-
|
|
582
|
-
// Agent adds:
|
|
583
|
-
// - Environment details
|
|
584
|
-
// - Browser/OS information
|
|
585
|
-
// - Clearer reproduction steps
|
|
586
|
-
// - Potential root cause analysis
|
|
183
|
+
}, "qe-production-intelligence");
|
|
587
184
|
```
|
|
588
185
|
|
|
589
|
-
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Agent Coordination Hints
|
|
189
|
+
|
|
190
|
+
### Memory Namespace
|
|
191
|
+
```
|
|
192
|
+
aqe/bug-reports/
|
|
193
|
+
├── triaged/* - Bug triage results
|
|
194
|
+
├── duplicates/* - Duplicate detection
|
|
195
|
+
├── patterns/* - Recurring bug patterns
|
|
196
|
+
└── root-cause/* - Root cause analyses
|
|
197
|
+
```
|
|
590
198
|
|
|
199
|
+
### Fleet Coordination
|
|
591
200
|
```typescript
|
|
592
201
|
const bugFleet = await FleetManager.coordinate({
|
|
593
202
|
strategy: 'bug-investigation',
|
|
594
203
|
agents: [
|
|
595
204
|
'qe-quality-analyzer', // Triage and categorize
|
|
596
205
|
'qe-flaky-test-hunter', // Check if test-related
|
|
597
|
-
'qe-
|
|
598
|
-
'qe-production-intelligence' // Check production logs
|
|
206
|
+
'qe-production-intelligence' // Check production logs
|
|
599
207
|
],
|
|
600
208
|
topology: 'parallel'
|
|
601
209
|
});
|
|
@@ -604,23 +212,14 @@ const bugFleet = await FleetManager.coordinate({
|
|
|
604
212
|
---
|
|
605
213
|
|
|
606
214
|
## Related Skills
|
|
607
|
-
|
|
608
|
-
**Communication:**
|
|
609
215
|
- [technical-writing](../technical-writing/) - Clear bug documentation
|
|
610
|
-
- [
|
|
611
|
-
|
|
612
|
-
**Testing:**
|
|
613
|
-
- [exploratory-testing-advanced](../exploratory-testing-advanced/) - Finding bugs through exploration
|
|
614
|
-
- [agentic-quality-engineering](../agentic-quality-engineering/) - Agent-driven bug workflows
|
|
216
|
+
- [exploratory-testing-advanced](../exploratory-testing-advanced/) - Finding bugs
|
|
217
|
+
- [sherlock-review](../sherlock-review/) - Root cause investigation
|
|
615
218
|
|
|
616
219
|
---
|
|
617
220
|
|
|
618
221
|
## Remember
|
|
619
222
|
|
|
620
|
-
Your bug report is the starting point for someone else's work. Make it
|
|
621
|
-
- **Complete** - All info needed to understand and fix
|
|
622
|
-
- **Clear** - Anyone can follow your steps
|
|
623
|
-
- **Concise** - No unnecessary information
|
|
624
|
-
- **Actionable** - Developer knows what to do next
|
|
223
|
+
Your bug report is the starting point for someone else's work. Make it **complete** (all info needed), **clear** (anyone can follow), **concise** (no noise), and **actionable** (developer knows next step).
|
|
625
224
|
|
|
626
225
|
**Good bug reports = Faster fixes = Better product = Happier users**
|