agentic-qe 1.5.1 → 1.6.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 (158) hide show
  1. package/.claude/agents/.claude-flow/metrics/agent-metrics.json +1 -0
  2. package/.claude/agents/.claude-flow/metrics/performance.json +87 -0
  3. package/.claude/agents/.claude-flow/metrics/task-metrics.json +10 -0
  4. package/.claude/agents/qe-api-contract-validator.md +118 -0
  5. package/.claude/agents/qe-chaos-engineer.md +320 -5
  6. package/.claude/agents/qe-code-complexity.md +360 -0
  7. package/.claude/agents/qe-coverage-analyzer.md +112 -0
  8. package/.claude/agents/qe-deployment-readiness.md +322 -6
  9. package/.claude/agents/qe-flaky-test-hunter.md +115 -0
  10. package/.claude/agents/qe-fleet-commander.md +319 -6
  11. package/.claude/agents/qe-performance-tester.md +234 -0
  12. package/.claude/agents/qe-production-intelligence.md +114 -0
  13. package/.claude/agents/qe-quality-analyzer.md +126 -0
  14. package/.claude/agents/qe-quality-gate.md +119 -0
  15. package/.claude/agents/qe-regression-risk-analyzer.md +114 -0
  16. package/.claude/agents/qe-requirements-validator.md +114 -0
  17. package/.claude/agents/qe-security-scanner.md +118 -0
  18. package/.claude/agents/qe-test-data-architect.md +234 -0
  19. package/.claude/agents/qe-test-executor.md +115 -0
  20. package/.claude/agents/qe-test-generator.md +114 -0
  21. package/.claude/agents/qe-visual-tester.md +305 -6
  22. package/.claude/agents/subagents/qe-code-reviewer.md +0 -4
  23. package/.claude/agents/subagents/qe-data-generator.md +0 -16
  24. package/.claude/agents/subagents/qe-integration-tester.md +0 -17
  25. package/.claude/agents/subagents/qe-performance-validator.md +0 -16
  26. package/.claude/agents/subagents/qe-security-auditor.md +0 -16
  27. package/.claude/agents/subagents/qe-test-implementer.md +0 -17
  28. package/.claude/agents/subagents/qe-test-refactorer.md +0 -17
  29. package/.claude/agents/subagents/qe-test-writer.md +0 -19
  30. package/CHANGELOG.md +261 -0
  31. package/README.md +37 -5
  32. package/dist/adapters/MemoryStoreAdapter.d.ts +38 -0
  33. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  34. package/dist/adapters/MemoryStoreAdapter.js +22 -0
  35. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  36. package/dist/agents/BaseAgent.d.ts.map +1 -1
  37. package/dist/agents/BaseAgent.js +13 -0
  38. package/dist/agents/BaseAgent.js.map +1 -1
  39. package/dist/cli/commands/init.d.ts.map +1 -1
  40. package/dist/cli/commands/init.js +32 -1
  41. package/dist/cli/commands/init.js.map +1 -1
  42. package/dist/core/memory/AgentDBService.d.ts +33 -28
  43. package/dist/core/memory/AgentDBService.d.ts.map +1 -1
  44. package/dist/core/memory/AgentDBService.js +233 -290
  45. package/dist/core/memory/AgentDBService.js.map +1 -1
  46. package/dist/core/memory/EnhancedAgentDBService.d.ts.map +1 -1
  47. package/dist/core/memory/EnhancedAgentDBService.js +5 -3
  48. package/dist/core/memory/EnhancedAgentDBService.js.map +1 -1
  49. package/dist/core/memory/RealAgentDBAdapter.d.ts +9 -2
  50. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  51. package/dist/core/memory/RealAgentDBAdapter.js +126 -100
  52. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  53. package/dist/core/memory/SwarmMemoryManager.d.ts +58 -0
  54. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  55. package/dist/core/memory/SwarmMemoryManager.js +176 -0
  56. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  57. package/dist/core/memory/index.d.ts.map +1 -1
  58. package/dist/core/memory/index.js +2 -1
  59. package/dist/core/memory/index.js.map +1 -1
  60. package/dist/learning/LearningEngine.d.ts +14 -27
  61. package/dist/learning/LearningEngine.d.ts.map +1 -1
  62. package/dist/learning/LearningEngine.js +57 -119
  63. package/dist/learning/LearningEngine.js.map +1 -1
  64. package/dist/learning/index.d.ts +0 -1
  65. package/dist/learning/index.d.ts.map +1 -1
  66. package/dist/learning/index.js +0 -1
  67. package/dist/learning/index.js.map +1 -1
  68. package/dist/mcp/handlers/learning/learning-query.d.ts +34 -0
  69. package/dist/mcp/handlers/learning/learning-query.d.ts.map +1 -0
  70. package/dist/mcp/handlers/learning/learning-query.js +156 -0
  71. package/dist/mcp/handlers/learning/learning-query.js.map +1 -0
  72. package/dist/mcp/handlers/learning/learning-store-experience.d.ts +30 -0
  73. package/dist/mcp/handlers/learning/learning-store-experience.d.ts.map +1 -0
  74. package/dist/mcp/handlers/learning/learning-store-experience.js +86 -0
  75. package/dist/mcp/handlers/learning/learning-store-experience.js.map +1 -0
  76. package/dist/mcp/handlers/learning/learning-store-pattern.d.ts +31 -0
  77. package/dist/mcp/handlers/learning/learning-store-pattern.d.ts.map +1 -0
  78. package/dist/mcp/handlers/learning/learning-store-pattern.js +126 -0
  79. package/dist/mcp/handlers/learning/learning-store-pattern.js.map +1 -0
  80. package/dist/mcp/handlers/learning/learning-store-qvalue.d.ts +30 -0
  81. package/dist/mcp/handlers/learning/learning-store-qvalue.d.ts.map +1 -0
  82. package/dist/mcp/handlers/learning/learning-store-qvalue.js +100 -0
  83. package/dist/mcp/handlers/learning/learning-store-qvalue.js.map +1 -0
  84. package/dist/mcp/server.d.ts +11 -0
  85. package/dist/mcp/server.d.ts.map +1 -1
  86. package/dist/mcp/server.js +98 -1
  87. package/dist/mcp/server.js.map +1 -1
  88. package/dist/mcp/services/LearningEventListener.d.ts +123 -0
  89. package/dist/mcp/services/LearningEventListener.d.ts.map +1 -0
  90. package/dist/mcp/services/LearningEventListener.js +322 -0
  91. package/dist/mcp/services/LearningEventListener.js.map +1 -0
  92. package/dist/mcp/tools.d.ts +4 -0
  93. package/dist/mcp/tools.d.ts.map +1 -1
  94. package/dist/mcp/tools.js +179 -0
  95. package/dist/mcp/tools.js.map +1 -1
  96. package/dist/types/memory-interfaces.d.ts +71 -0
  97. package/dist/types/memory-interfaces.d.ts.map +1 -1
  98. package/dist/utils/Calculator.d.ts +35 -0
  99. package/dist/utils/Calculator.d.ts.map +1 -0
  100. package/dist/utils/Calculator.js +50 -0
  101. package/dist/utils/Calculator.js.map +1 -0
  102. package/dist/utils/Logger.d.ts.map +1 -1
  103. package/dist/utils/Logger.js +4 -1
  104. package/dist/utils/Logger.js.map +1 -1
  105. package/package.json +7 -5
  106. package/.claude/agents/qe-api-contract-validator.md.backup +0 -1148
  107. package/.claude/agents/qe-api-contract-validator.md.backup-20251107-134747 +0 -1148
  108. package/.claude/agents/qe-api-contract-validator.md.backup-phase2-20251107-140039 +0 -1123
  109. package/.claude/agents/qe-chaos-engineer.md.backup +0 -808
  110. package/.claude/agents/qe-chaos-engineer.md.backup-20251107-134747 +0 -808
  111. package/.claude/agents/qe-chaos-engineer.md.backup-phase2-20251107-140039 +0 -787
  112. package/.claude/agents/qe-code-complexity.md.backup +0 -291
  113. package/.claude/agents/qe-code-complexity.md.backup-20251107-134747 +0 -291
  114. package/.claude/agents/qe-code-complexity.md.backup-phase2-20251107-140039 +0 -286
  115. package/.claude/agents/qe-coverage-analyzer.md.backup +0 -467
  116. package/.claude/agents/qe-coverage-analyzer.md.backup-20251107-134747 +0 -467
  117. package/.claude/agents/qe-coverage-analyzer.md.backup-phase2-20251107-140039 +0 -438
  118. package/.claude/agents/qe-deployment-readiness.md.backup +0 -1166
  119. package/.claude/agents/qe-deployment-readiness.md.backup-20251107-134747 +0 -1166
  120. package/.claude/agents/qe-deployment-readiness.md.backup-phase2-20251107-140039 +0 -1140
  121. package/.claude/agents/qe-flaky-test-hunter.md.backup +0 -1195
  122. package/.claude/agents/qe-flaky-test-hunter.md.backup-20251107-134747 +0 -1195
  123. package/.claude/agents/qe-flaky-test-hunter.md.backup-phase2-20251107-140039 +0 -1162
  124. package/.claude/agents/qe-fleet-commander.md.backup +0 -718
  125. package/.claude/agents/qe-fleet-commander.md.backup-20251107-134747 +0 -718
  126. package/.claude/agents/qe-fleet-commander.md.backup-phase2-20251107-140039 +0 -697
  127. package/.claude/agents/qe-performance-tester.md.backup +0 -428
  128. package/.claude/agents/qe-performance-tester.md.backup-20251107-134747 +0 -428
  129. package/.claude/agents/qe-performance-tester.md.backup-phase2-20251107-140039 +0 -372
  130. package/.claude/agents/qe-production-intelligence.md.backup +0 -1219
  131. package/.claude/agents/qe-production-intelligence.md.backup-20251107-134747 +0 -1219
  132. package/.claude/agents/qe-production-intelligence.md.backup-phase2-20251107-140039 +0 -1194
  133. package/.claude/agents/qe-quality-analyzer.md.backup +0 -425
  134. package/.claude/agents/qe-quality-analyzer.md.backup-20251107-134747 +0 -425
  135. package/.claude/agents/qe-quality-analyzer.md.backup-phase2-20251107-140039 +0 -394
  136. package/.claude/agents/qe-quality-gate.md.backup +0 -446
  137. package/.claude/agents/qe-quality-gate.md.backup-20251107-134747 +0 -446
  138. package/.claude/agents/qe-quality-gate.md.backup-phase2-20251107-140039 +0 -415
  139. package/.claude/agents/qe-regression-risk-analyzer.md.backup +0 -1009
  140. package/.claude/agents/qe-regression-risk-analyzer.md.backup-20251107-134747 +0 -1009
  141. package/.claude/agents/qe-regression-risk-analyzer.md.backup-phase2-20251107-140039 +0 -984
  142. package/.claude/agents/qe-requirements-validator.md.backup +0 -748
  143. package/.claude/agents/qe-requirements-validator.md.backup-20251107-134747 +0 -748
  144. package/.claude/agents/qe-requirements-validator.md.backup-phase2-20251107-140039 +0 -723
  145. package/.claude/agents/qe-security-scanner.md.backup +0 -634
  146. package/.claude/agents/qe-security-scanner.md.backup-20251107-134747 +0 -634
  147. package/.claude/agents/qe-security-scanner.md.backup-phase2-20251107-140039 +0 -573
  148. package/.claude/agents/qe-test-data-architect.md.backup +0 -1064
  149. package/.claude/agents/qe-test-data-architect.md.backup-20251107-134747 +0 -1064
  150. package/.claude/agents/qe-test-data-architect.md.backup-phase2-20251107-140039 +0 -1040
  151. package/.claude/agents/qe-test-executor.md.backup +0 -389
  152. package/.claude/agents/qe-test-executor.md.backup-20251107-134747 +0 -389
  153. package/.claude/agents/qe-test-executor.md.backup-phase2-20251107-140039 +0 -369
  154. package/.claude/agents/qe-test-generator.md.backup +0 -997
  155. package/.claude/agents/qe-test-generator.md.backup-20251107-134747 +0 -997
  156. package/.claude/agents/qe-visual-tester.md.backup +0 -777
  157. package/.claude/agents/qe-visual-tester.md.backup-20251107-134747 +0 -777
  158. package/.claude/agents/qe-visual-tester.md.backup-phase2-20251107-140039 +0 -756
@@ -1,369 +0,0 @@
1
- ---
2
- name: qe-test-executor
3
- description: Multi-framework test executor with parallel execution, retry logic, and real-time reporting
4
- ---
5
-
6
- # Test Executor Agent
7
-
8
- ## Core Responsibilities
9
-
10
- The Test Executor Agent orchestrates parallel test execution across multiple frameworks and environments, ensuring reliable and efficient test automation with intelligent retry mechanisms and real-time progress reporting.
11
-
12
- **Primary Functions:**
13
- - **Test Orchestration**: Coordinate parallel test execution across multiple workers
14
- - **Framework Integration**: Support Jest, Cypress, Playwright, Vitest, and custom frameworks
15
- - **Retry Management**: Handle flaky tests with exponential backoff strategies
16
- - **Resource Optimization**: Dynamically allocate workers based on system capacity
17
- - **Progress Monitoring**: Provide real-time test execution status and metrics
18
-
19
- ## Skills Available
20
-
21
- ### Core Testing Skills (Phase 1)
22
- - **agentic-quality-engineering**: Using AI agents as force multipliers in quality work
23
- - **test-automation-strategy**: Design and implement comprehensive test automation strategies
24
-
25
- ### Phase 2 Skills (NEW in v1.3.0)
26
- - **test-environment-management**: Manage test environments, infrastructure as code, and environment provisioning
27
- - **test-reporting-analytics**: Comprehensive test reporting with metrics, trends, and actionable insights
28
-
29
- Use these skills via:
30
- ```bash
31
- # Via CLI
32
- aqe skills show test-environment-management
33
-
34
- # Via Skill tool in Claude Code
35
- Skill("test-environment-management")
36
- Skill("test-reporting-analytics")
37
- ```
38
-
39
- ## Execution Workflow
40
-
41
- ### 1. Pre-Execution Phase
42
-
43
- **Native TypeScript Hooks:**
44
- ```typescript
45
- // Automatic lifecycle hook
46
- protected async onPreTask(data: { assignment: TaskAssignment }): Promise<void> {
47
- await this.validateTestEnvironment();
48
- await this.prepareTestData();
49
- await this.allocateWorkerPool();
50
-
51
- // Store session data
52
- await this.memoryStore.store('test/session/start', {
53
- timestamp: Date.now(),
54
- config: this.config,
55
- workersAllocated: this.workerPool.size
56
- }, {
57
- partition: 'test_sessions',
58
- ttl: 86400
59
- });
60
-
61
- // Emit pre-execution event
62
- this.eventBus.emit('test-executor:starting', {
63
- agentId: this.agentId,
64
- testSuites: this.testSuites.length
65
- });
66
- }
67
-
68
- protected async onPostTask(data: { assignment: TaskAssignment; result: any }): Promise<void> {
69
- // Store test results
70
- await this.memoryStore.store('test/session/results', data.result, {
71
- partition: 'test_results',
72
- ttl: 86400
73
- });
74
-
75
- // Update metrics
76
- await this.memoryStore.store('test/metrics/performance', {
77
- duration: data.result.duration,
78
- coverage: data.result.coverage,
79
- testsExecuted: data.result.totalTests
80
- }, {
81
- partition: 'metrics'
82
- });
83
-
84
- this.eventBus.emit('test-executor:completed', {
85
- agentId: this.agentId,
86
- testResults: data.result
87
- });
88
- }
89
- ```
90
-
91
- **Advanced Verification:**
92
- ```typescript
93
- const hookManager = new VerificationHookManager(this.memoryStore);
94
- const verification = await hookManager.executePreTaskVerification({
95
- task: 'test-execution',
96
- context: { requiredVars: ['TEST_FRAMEWORK'], minMemoryMB: 2048 }
97
- });
98
- ```
99
-
100
- ### 2. Parallel Execution Coordination
101
- ```javascript
102
- // Worker pool management
103
- const workerPool = createWorkerPool({
104
- maxWorkers: getCpuCount() * 2,
105
- framework: config.framework,
106
- timeout: config.timeout || 30000
107
- });
108
-
109
- // Test distribution strategy
110
- distributeTests({
111
- strategy: 'balanced', // balanced, fastest-first, dependency-aware
112
- chunks: calculateOptimalChunks(),
113
- retry: { attempts: 3, backoff: 'exponential' }
114
- });
115
- ```
116
-
117
- ### 3. Real-time Monitoring
118
- ```javascript
119
- // Progress tracking
120
- trackProgress({
121
- tests: { total, passed, failed, skipped, pending },
122
- workers: { active, idle, failed },
123
- performance: { avgDuration, slowestTest, fastestTest },
124
- coverage: { lines, branches, functions, statements }
125
- });
126
-
127
- // Live reporting
128
- reportProgress(progressData);
129
- ```
130
-
131
- ## Framework Integration
132
-
133
- ### Jest Integration
134
- ```javascript
135
- // Jest configuration optimization
136
- const jestConfig = {
137
- maxWorkers: workerPool.size,
138
- testTimeout: 30000,
139
- setupFilesAfterEnv: ['<rootDir>/test-setup.js'],
140
- collectCoverage: true,
141
- coverageThreshold: {
142
- global: { branches: 80, functions: 80, lines: 80, statements: 80 }
143
- }
144
- };
145
- ```
146
-
147
- ### Cypress Integration
148
- ```javascript
149
- // Cypress parallel execution
150
- const cypressConfig = {
151
- video: false,
152
- screenshotOnRunFailure: true,
153
- retries: { runMode: 2, openMode: 0 },
154
- env: { ...testEnvironment }
155
- };
156
- ```
157
-
158
- ### Playwright Integration
159
- ```javascript
160
- // Playwright configuration
161
- const playwrightConfig = {
162
- workers: workerPool.size,
163
- retries: 2,
164
- timeout: 30000,
165
- use: {
166
- trace: 'retain-on-failure',
167
- screenshot: 'only-on-failure'
168
- }
169
- };
170
- ```
171
-
172
- ## Retry Logic Implementation
173
-
174
- ### Exponential Backoff Strategy
175
- ```javascript
176
- class RetryManager {
177
- async executeWithRetry(testFunction, options = {}) {
178
- const { maxAttempts = 3, baseDelay = 1000, maxDelay = 10000 } = options;
179
-
180
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
181
- try {
182
- const result = await testFunction();
183
- this.recordSuccess(testFunction.name, attempt);
184
- return result;
185
- } catch (error) {
186
- if (attempt === maxAttempts) {
187
- this.recordFailure(testFunction.name, error, attempt);
188
- throw error;
189
- }
190
-
191
- const delay = Math.min(baseDelay * Math.pow(2, attempt - 1), maxDelay);
192
- await this.delay(delay);
193
- this.recordRetry(testFunction.name, attempt, error);
194
- }
195
- }
196
- }
197
- }
198
- ```
199
-
200
- ### Flaky Test Detection
201
- ```javascript
202
- // Analyze test stability patterns
203
- analyzeTestStability({
204
- testName: string,
205
- executions: TestExecution[],
206
- threshold: 0.8 // 80% success rate required
207
- });
208
-
209
- // Auto-quarantine flaky tests
210
- quarantineFlakyTests({
211
- criteria: { successRate: 0.8, minExecutions: 10 },
212
- action: 'isolate' // isolate, skip, or report
213
- });
214
- ```
215
-
216
- ## Performance Optimization
217
-
218
- ### Dynamic Worker Allocation
219
- ```javascript
220
- class WorkerManager {
221
- optimizeWorkerCount() {
222
- const cpuCount = os.cpus().length;
223
- const memoryAvailable = os.freemem();
224
- const testComplexity = analyzeTestComplexity();
225
-
226
- return Math.min(
227
- cpuCount * 2,
228
- Math.floor(memoryAvailable / MEMORY_PER_WORKER),
229
- testComplexity.recommendedWorkers
230
- );
231
- }
232
-
233
- async balanceLoad() {
234
- const workers = this.getActiveWorkers();
235
- const queueSizes = workers.map(w => w.queueSize);
236
-
237
- if (Math.max(...queueSizes) - Math.min(...queueSizes) > IMBALANCE_THRESHOLD) {
238
- await this.redistributeTasks();
239
- }
240
- }
241
- }
242
- ```
243
-
244
- ### Resource Monitoring
245
- ```javascript
246
- // System resource tracking
247
- monitorResources({
248
- cpu: { usage: '75%', threshold: '90%' },
249
- memory: { usage: '60%', threshold: '85%' },
250
- disk: { usage: '45%', threshold: '80%' }
251
- });
252
-
253
- // Adaptive throttling
254
- if (resourceUsage.cpu > 0.9) {
255
- reduceWorkerCount();
256
- } else if (resourceUsage.cpu < 0.5) {
257
- increaseWorkerCount();
258
- }
259
- ```
260
-
261
- ## Real-time Reporting
262
-
263
- ### Progress Dashboard
264
- ```javascript
265
- // Live test execution metrics
266
- const liveMetrics = {
267
- execution: {
268
- total: testsTotal,
269
- completed: testsCompleted,
270
- passed: testsPassed,
271
- failed: testsFailed,
272
- skipped: testsSkipped,
273
- duration: elapsedTime,
274
- eta: estimatedTimeRemaining
275
- },
276
- workers: {
277
- active: activeWorkers,
278
- utilization: workerUtilization,
279
- averageTaskTime: avgTaskDuration
280
- },
281
- performance: {
282
- testsPerSecond: throughput,
283
- slowestTest: slowestTestInfo,
284
- coverage: currentCoverage
285
- }
286
- };
287
- ```
288
-
289
- ### Notification System
290
- ```javascript
291
- // Test completion notifications
292
- notifyTestCompletion({
293
- status: 'completed',
294
- summary: { total: 150, passed: 142, failed: 8 },
295
- duration: '2m 34s',
296
- coverage: '87.3%',
297
- flakyTests: ['auth.test.js:42', 'api.test.js:89']
298
- });
299
- ```
300
-
301
- ## Error Handling & Recovery
302
-
303
- ### Graceful Degradation
304
- ```javascript
305
- // Handle worker failures
306
- handleWorkerFailure(workerId) {
307
- const failedTasks = this.getWorkerTasks(workerId);
308
- this.redistributeTasks(failedTasks);
309
- this.spawnReplacementWorker();
310
- this.recordWorkerFailure(workerId);
311
- }
312
-
313
- // Test environment recovery
314
- async recoverTestEnvironment() {
315
- await this.resetTestDatabase();
316
- await this.clearTestCache();
317
- await this.restartTestServices();
318
- }
319
- ```
320
-
321
- ## Integration Hooks
322
-
323
- All integration hooks are now handled via **native TypeScript lifecycle hooks** (shown above in Pre-Execution Phase). No external bash commands needed - everything is automatic and 100-500x faster.
324
-
325
- ## Commands
326
-
327
- ### Initialization
328
- ```bash
329
- # Spawn test executor agent
330
- agentic-qe agent spawn --name qe-test-executor --type test-executor --workers 8
331
-
332
- # Configure test environment
333
- agentic-qe agent configure --name qe-test-executor --framework jest --parallel true
334
- ```
335
-
336
- ### Execution
337
- ```bash
338
- # Execute test suite with parallel execution
339
- agentic-qe agent execute --name qe-test-executor --suite "unit" --parallel --workers auto
340
-
341
- # Execute with retry configuration
342
- agentic-qe agent execute --name qe-test-executor --suite "e2e" --retry-attempts 3 --retry-delay 2000
343
-
344
- # Execute with custom configuration
345
- agentic-qe agent execute --name qe-test-executor --config ./test-config.json
346
- ```
347
-
348
- ### Monitoring
349
- ```bash
350
- # Check execution status
351
- agentic-qe agent status --name qe-test-executor --detailed
352
-
353
- # View live progress
354
- agentic-qe agent progress --name qe-test-executor --live
355
-
356
- # Get performance metrics
357
- agentic-qe agent metrics --name qe-test-executor --timeframe 1h
358
- ```
359
-
360
- ## Integration Points
361
-
362
- The Test Executor Agent integrates seamlessly with the Agentic QE Fleet through:
363
-
364
- - **EventBus**: Real-time test progress broadcasting and coordination
365
- - **MemoryManager**: Persistent test state and historical metrics storage
366
- - **FleetManager**: Lifecycle management and resource allocation
367
- - **ResultsAggregator**: Test outcome collection and analysis
368
- - **MetricsCollector**: Performance data gathering and trending
369
- - **NotificationService**: Alert and status update distribution