agentic-qe 2.0.0 → 2.1.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 (116) hide show
  1. package/.claude/agents/qx-partner.md +17 -4
  2. package/.claude/skills/accessibility-testing/SKILL.md +144 -692
  3. package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
  4. package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
  5. package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
  6. package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
  7. package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
  8. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
  9. package/.claude/skills/code-review-quality/SKILL.md +158 -608
  10. package/.claude/skills/compatibility-testing/SKILL.md +148 -38
  11. package/.claude/skills/compliance-testing/SKILL.md +132 -63
  12. package/.claude/skills/consultancy-practices/SKILL.md +114 -446
  13. package/.claude/skills/context-driven-testing/SKILL.md +117 -381
  14. package/.claude/skills/contract-testing/SKILL.md +176 -141
  15. package/.claude/skills/database-testing/SKILL.md +137 -130
  16. package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
  17. package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
  18. package/.claude/skills/localization-testing/SKILL.md +145 -33
  19. package/.claude/skills/mobile-testing/SKILL.md +132 -448
  20. package/.claude/skills/mutation-testing/SKILL.md +147 -41
  21. package/.claude/skills/performance-testing/SKILL.md +200 -546
  22. package/.claude/skills/quality-metrics/SKILL.md +164 -519
  23. package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
  24. package/.claude/skills/regression-testing/SKILL.md +120 -926
  25. package/.claude/skills/risk-based-testing/SKILL.md +157 -660
  26. package/.claude/skills/security-testing/SKILL.md +199 -538
  27. package/.claude/skills/sherlock-review/SKILL.md +163 -699
  28. package/.claude/skills/shift-left-testing/SKILL.md +161 -465
  29. package/.claude/skills/shift-right-testing/SKILL.md +161 -519
  30. package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
  31. package/.claude/skills/skills-manifest.json +71 -20
  32. package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
  33. package/.claude/skills/technical-writing/SKILL.md +103 -154
  34. package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
  35. package/.claude/skills/test-data-management/SKILL.md +126 -910
  36. package/.claude/skills/test-design-techniques/SKILL.md +179 -89
  37. package/.claude/skills/test-environment-management/SKILL.md +136 -91
  38. package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
  39. package/.claude/skills/testability-scoring/SKILL.md +172 -538
  40. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +0 -0
  41. package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
  42. package/.claude/skills/xp-practices/SKILL.md +151 -587
  43. package/CHANGELOG.md +48 -0
  44. package/README.md +23 -16
  45. package/dist/agents/QXPartnerAgent.d.ts +8 -1
  46. package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
  47. package/dist/agents/QXPartnerAgent.js +1174 -112
  48. package/dist/agents/QXPartnerAgent.js.map +1 -1
  49. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  50. package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
  51. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  52. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  53. package/dist/cli/commands/init-claude-md-template.js +14 -0
  54. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  55. package/dist/core/SwarmCoordinator.d.ts +180 -0
  56. package/dist/core/SwarmCoordinator.d.ts.map +1 -0
  57. package/dist/core/SwarmCoordinator.js +473 -0
  58. package/dist/core/SwarmCoordinator.js.map +1 -0
  59. package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
  60. package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
  61. package/dist/core/metrics/MetricsAggregator.js +482 -0
  62. package/dist/core/metrics/MetricsAggregator.js.map +1 -0
  63. package/dist/core/metrics/index.d.ts +5 -0
  64. package/dist/core/metrics/index.d.ts.map +1 -0
  65. package/dist/core/metrics/index.js +11 -0
  66. package/dist/core/metrics/index.js.map +1 -0
  67. package/dist/core/optimization/SwarmOptimizer.d.ts +5 -0
  68. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -1
  69. package/dist/core/optimization/SwarmOptimizer.js +17 -0
  70. package/dist/core/optimization/SwarmOptimizer.js.map +1 -1
  71. package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
  72. package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
  73. package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
  74. package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
  75. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +13 -0
  76. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -1
  77. package/dist/core/orchestration/WorkflowOrchestrator.js +32 -0
  78. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -1
  79. package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
  80. package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
  81. package/dist/core/recovery/CircuitBreaker.js +382 -0
  82. package/dist/core/recovery/CircuitBreaker.js.map +1 -0
  83. package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
  84. package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
  85. package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
  86. package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
  87. package/dist/core/recovery/RetryStrategy.d.ts +127 -0
  88. package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
  89. package/dist/core/recovery/RetryStrategy.js +314 -0
  90. package/dist/core/recovery/RetryStrategy.js.map +1 -0
  91. package/dist/core/recovery/index.d.ts +8 -0
  92. package/dist/core/recovery/index.d.ts.map +1 -0
  93. package/dist/core/recovery/index.js +27 -0
  94. package/dist/core/recovery/index.js.map +1 -0
  95. package/dist/core/skills/DependencyResolver.d.ts +99 -0
  96. package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
  97. package/dist/core/skills/DependencyResolver.js +260 -0
  98. package/dist/core/skills/DependencyResolver.js.map +1 -0
  99. package/dist/core/skills/ManifestGenerator.d.ts +114 -0
  100. package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
  101. package/dist/core/skills/ManifestGenerator.js +449 -0
  102. package/dist/core/skills/ManifestGenerator.js.map +1 -0
  103. package/dist/core/skills/index.d.ts +9 -0
  104. package/dist/core/skills/index.d.ts.map +1 -0
  105. package/dist/core/skills/index.js +24 -0
  106. package/dist/core/skills/index.js.map +1 -0
  107. package/dist/mcp/server.d.ts +9 -9
  108. package/dist/mcp/server.d.ts.map +1 -1
  109. package/dist/mcp/server.js +1 -2
  110. package/dist/mcp/server.js.map +1 -1
  111. package/dist/types/qx.d.ts +39 -7
  112. package/dist/types/qx.d.ts.map +1 -1
  113. package/dist/types/qx.js.map +1 -1
  114. package/dist/visualization/api/RestEndpoints.js +1 -1
  115. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  116. package/package.json +13 -55
@@ -1,142 +1,219 @@
1
1
  ---
2
2
  name: visual-testing-advanced
3
- description: Advanced visual regression testing with pixel-perfect comparison, AI-powered diff analysis, responsive design validation, and cross-browser visual consistency. Use when detecting UI regressions, validating designs, or ensuring visual consistency.
3
+ description: "Advanced visual regression testing with pixel-perfect comparison, AI-powered diff analysis, responsive design validation, and cross-browser visual consistency. Use when detecting UI regressions, validating designs, or ensuring visual consistency."
4
+ category: specialized-testing
5
+ priority: high
6
+ tokenEstimate: 900
7
+ agents: [qe-visual-tester, qe-test-executor, qe-quality-gate]
8
+ implementation_status: optimized
9
+ optimization_version: 1.0
10
+ last_optimized: 2025-12-02
11
+ dependencies: []
12
+ quick_reference_card: true
13
+ tags: [visual, regression, screenshot, pixel-diff, percy, playwright, responsive]
4
14
  ---
5
15
 
6
16
  # Advanced Visual Testing
7
17
 
8
- ## Core Principle
18
+ <default_to_action>
19
+ When detecting visual regressions or validating UI:
20
+ 1. CAPTURE baseline screenshots (first run establishes baseline)
21
+ 2. COMPARE new screenshots against baseline (pixel-by-pixel or AI)
22
+ 3. MASK dynamic content (timestamps, ads, user counts)
23
+ 4. TEST across devices (desktop, tablet, mobile viewports)
24
+ 5. REVIEW and approve intentional changes, fail on regressions
25
+
26
+ **Quick Visual Testing Steps:**
27
+ - Set up baseline on main branch
28
+ - Compare feature branch against baseline
29
+ - Mask dynamic elements (timestamps, avatars)
30
+ - Use AI-powered comparison to reduce false positives
31
+ - Integrate in CI/CD to block visual regressions
32
+
33
+ **Critical Success Factors:**
34
+ - Functional tests don't catch visual bugs
35
+ - AI-powered tools reduce false positives
36
+ - Review diffs, don't just auto-approve
37
+ </default_to_action>
38
+
39
+ ## Quick Reference Card
40
+
41
+ ### When to Use
42
+ - UI component changes
43
+ - CSS/styling modifications
44
+ - Responsive design validation
45
+ - Cross-browser consistency checks
46
+
47
+ ### Visual Bug Types
48
+ | Bug Type | Description |
49
+ |----------|-------------|
50
+ | Layout shift | Elements moved position |
51
+ | Color change | Unintended color modification |
52
+ | Font rendering | Typography issues |
53
+ | Alignment | Spacing/alignment problems |
54
+ | Missing images | Broken image paths |
55
+ | Overflow | Content clipping |
56
+
57
+ ### Comparison Algorithms
58
+ | Algorithm | Best For |
59
+ |-----------|----------|
60
+ | **Pixel diff** | Exact match requirement |
61
+ | **Structural similarity** | Handle anti-aliasing |
62
+ | **AI semantic** | Ignore insignificant changes |
9
63
 
10
- **Visual bugs are bugs. Test what users see.**
11
-
12
- Visual testing catches UI regressions that functional tests miss: layout shifts, color changes, font rendering, alignment issues.
13
-
14
- ## Visual Regression Testing
64
+ ---
15
65
 
16
- **Process:**
17
- 1. Capture baseline screenshots
18
- 2. Make code changes
19
- 3. Capture new screenshots
20
- 4. Compare pixel-by-pixel
21
- 5. Flag differences for review
66
+ ## Visual Regression with Playwright
22
67
 
23
- **With Playwright:**
24
68
  ```javascript
25
69
  import { test, expect } from '@playwright/test';
26
70
 
27
71
  test('homepage visual regression', async ({ page }) => {
28
72
  await page.goto('https://example.com');
29
73
 
30
- // Capture screenshot
74
+ // Capture and compare screenshot
31
75
  await expect(page).toHaveScreenshot('homepage.png');
32
76
  // First run: saves baseline
33
77
  // Subsequent runs: compares to baseline
34
78
  });
35
79
 
36
- test('responsive design on mobile', async ({ page }) => {
37
- await page.setViewportSize({ width: 375, height: 667 }); // iPhone
38
-
80
+ test('responsive design', async ({ page }) => {
81
+ // Mobile viewport
82
+ await page.setViewportSize({ width: 375, height: 667 });
39
83
  await page.goto('https://example.com');
40
84
  await expect(page).toHaveScreenshot('homepage-mobile.png');
85
+
86
+ // Tablet viewport
87
+ await page.setViewportSize({ width: 768, height: 1024 });
88
+ await expect(page).toHaveScreenshot('homepage-tablet.png');
41
89
  });
42
90
  ```
43
91
 
44
- **Configuration:**
92
+ ---
93
+
94
+ ## Handling Dynamic Content
95
+
45
96
  ```javascript
46
- // playwright.config.js
47
- export default {
48
- expect: {
49
- toHaveScreenshot: {
50
- maxDiffPixels: 100, // Allow 100 pixel difference
51
- threshold: 0.2, // 20% similarity threshold
52
- animations: 'disabled', // Disable animations
53
- caret: 'hide' // Hide cursor
54
- }
55
- }
56
- };
97
+ test('mask dynamic elements', async ({ page }) => {
98
+ await page.goto('https://example.com');
99
+
100
+ await expect(page).toHaveScreenshot({
101
+ mask: [
102
+ page.locator('.timestamp'), // Dynamic time
103
+ page.locator('.user-count'), // Live counter
104
+ page.locator('.advertisement'), // Ads
105
+ page.locator('.avatar') // User avatars
106
+ ]
107
+ });
108
+ });
57
109
  ```
58
110
 
59
- ## AI-Powered Visual Testing
111
+ ---
112
+
113
+ ## AI-Powered Visual Testing (Percy)
60
114
 
61
- **Percy (BrowserStack):**
62
115
  ```javascript
63
116
  import percySnapshot from '@percy/playwright';
64
117
 
65
- test('homepage visual test', async ({ page }) => {
118
+ test('AI-powered visual test', async ({ page }) => {
66
119
  await page.goto('https://example.com');
67
120
 
68
- // AI-powered comparison (ignores minor anti-aliasing differences)
121
+ // Percy uses AI to ignore anti-aliasing, minor font differences
69
122
  await percySnapshot(page, 'Homepage');
70
123
  });
71
- ```
72
124
 
73
- ## Cross-Browser Visual Testing
125
+ test('component visual test', async ({ page }) => {
126
+ await page.goto('https://example.com/components');
74
127
 
75
- ```javascript
76
- test.describe('cross-browser visual consistency', () => {
77
- test('Chrome vs Firefox', async ({ browser }) => {
78
- const chromePage = await browser.newPage();
79
- await chromePage.goto('https://example.com');
80
- const chromeScreenshot = await chromePage.screenshot();
81
-
82
- // Compare Chrome vs Firefox rendering
83
- expect(chromeScreenshot).toMatchSnapshot('chrome-homepage.png');
128
+ // Snapshot specific component
129
+ const button = page.locator('.primary-button');
130
+ await percySnapshot(page, 'Primary Button', {
131
+ scope: button
84
132
  });
85
133
  });
86
134
  ```
87
135
 
88
- ## Dynamic Content Handling
136
+ ---
89
137
 
90
- **Mask dynamic elements:**
91
- ```javascript
92
- test('ignore dynamic content', async ({ page }) => {
93
- await page.goto('https://example.com');
138
+ ## Playwright Configuration
94
139
 
95
- await expect(page).toHaveScreenshot({
96
- mask: [
97
- page.locator('.timestamp'), // Mask timestamps
98
- page.locator('.user-count'), // Mask dynamic counters
99
- page.locator('.advertisement') // Mask ads
100
- ]
101
- });
102
- });
140
+ ```javascript
141
+ // playwright.config.js
142
+ export default {
143
+ expect: {
144
+ toHaveScreenshot: {
145
+ maxDiffPixels: 100, // Allow 100 pixel difference
146
+ maxDiffPixelRatio: 0.01, // Or 1% of image
147
+ threshold: 0.2, // Color similarity threshold
148
+ animations: 'disabled', // Disable animations
149
+ caret: 'hide' // Hide cursor
150
+ }
151
+ }
152
+ };
103
153
  ```
104
154
 
105
- ## With qe-visual-tester Agent
155
+ ---
156
+
157
+ ## Agent-Driven Visual Testing
106
158
 
107
159
  ```typescript
108
- // Agent performs comprehensive visual testing
109
- const results = await agent.visualRegressionTest({
160
+ // Comprehensive visual regression
161
+ await Task("Visual Regression Suite", {
110
162
  baseline: 'main-branch',
111
163
  current: 'feature-branch',
112
164
  pages: ['homepage', 'product', 'checkout'],
113
165
  devices: ['desktop', 'tablet', 'mobile'],
114
- browsers: ['chrome', 'firefox', 'safari']
115
- });
166
+ browsers: ['chrome', 'firefox', 'safari'],
167
+ threshold: 0.01
168
+ }, "qe-visual-tester");
116
169
 
117
170
  // Returns:
118
171
  // {
119
- // totalPages: 3,
120
- // totalDevices: 3,
121
- // totalBrowsers: 3,
122
- // comparisons: 27, // 3 × 3 × 3
172
+ // comparisons: 27, // 3 pages × 3 devices × 3 browsers
123
173
  // differences: 2,
124
174
  // report: 'visual-regression-report.html'
125
175
  // }
126
176
  ```
127
177
 
128
- ## Remember
178
+ ---
179
+
180
+ ## Agent Coordination Hints
181
+
182
+ ### Memory Namespace
183
+ ```
184
+ aqe/visual-testing/
185
+ ├── baselines/* - Baseline screenshots
186
+ ├── comparisons/* - Diff results
187
+ ├── components/* - Component snapshots
188
+ └── reports/* - Visual regression reports
189
+ ```
129
190
 
130
- **Functional tests don't catch visual bugs.**
191
+ ### Fleet Coordination
192
+ ```typescript
193
+ const visualFleet = await FleetManager.coordinate({
194
+ strategy: 'visual-testing',
195
+ agents: [
196
+ 'qe-visual-tester', // Screenshot comparison
197
+ 'qe-test-executor', // Cross-browser execution
198
+ 'qe-quality-gate' // Block on visual regressions
199
+ ],
200
+ topology: 'parallel'
201
+ });
202
+ ```
203
+
204
+ ---
205
+
206
+ ## Related Skills
207
+ - [accessibility-testing](../accessibility-testing/) - Visual a11y checks
208
+ - [compatibility-testing](../compatibility-testing/) - Cross-browser visuals
209
+ - [regression-testing](../regression-testing/) - Regression suite
210
+
211
+ ---
212
+
213
+ ## Remember
131
214
 
132
- Visual regressions include:
133
- - Layout shifts
134
- - Color changes
135
- - Font rendering
136
- - Alignment issues
137
- - Missing images
138
- - Broken CSS
215
+ **Functional tests don't catch visual bugs.** Layout shifts, color changes, font rendering, alignment issues - all invisible to functional tests but visible to users.
139
216
 
140
- **AI-powered tools reduce false positives.**
217
+ **AI-powered tools reduce false positives.** Percy, Applitools use AI to ignore insignificant differences (anti-aliasing, minor font rendering).
141
218
 
142
- **With Agents:** `qe-visual-tester` automates visual regression across browsers and devices, uses AI to ignore insignificant differences, and generates visual diff reports.
219
+ **With Agents:** `qe-visual-tester` automates visual regression across browsers and devices, uses AI to filter noise, and generates visual diff reports. Catches UI regressions before users see them.