agentic-qe 2.3.1 → 2.3.3

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 (128) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +1 -1
  3. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  4. package/dist/agents/CoverageAnalyzerAgent.js +53 -27
  5. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  6. package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
  7. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  8. package/dist/agents/FlakyTestHunterAgent.js +20 -5
  9. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  10. package/dist/agents/QualityGateAgent.js +44 -6
  11. package/dist/agents/QualityGateAgent.js.map +1 -1
  12. package/dist/cli/index.js +0 -0
  13. package/dist/cli/init/database-init.js +5 -0
  14. package/dist/cli/init/database-init.js.map +1 -1
  15. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  16. package/dist/learning/PerformanceTracker.d.ts +9 -0
  17. package/dist/learning/PerformanceTracker.d.ts.map +1 -1
  18. package/dist/learning/PerformanceTracker.js +26 -2
  19. package/dist/learning/PerformanceTracker.js.map +1 -1
  20. package/dist/mcp/server-instructions.d.ts +1 -1
  21. package/dist/mcp/server-instructions.js +1 -1
  22. package/package.json +4 -2
  23. package/scripts/README.md +352 -0
  24. package/scripts/hooks/capture-task-learning.js +191 -0
  25. package/scripts/hooks/emit-task-complete.sh +35 -0
  26. package/scripts/hooks/emit-task-spawn.sh +27 -0
  27. package/.claude/agents/failing-agent.json +0 -9
  28. package/.claude/agents/test-agent.json +0 -9
  29. package/dist/App.d.ts +0 -5
  30. package/dist/App.d.ts.map +0 -1
  31. package/dist/App.js +0 -15
  32. package/dist/App.js.map +0 -1
  33. package/dist/cli/init/utils.d.ts +0 -183
  34. package/dist/cli/init/utils.d.ts.map +0 -1
  35. package/dist/cli/init/utils.js +0 -354
  36. package/dist/cli/init/utils.js.map +0 -1
  37. package/dist/components/Dashboard/Dashboard.d.ts +0 -4
  38. package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
  39. package/dist/components/Dashboard/Dashboard.js +0 -148
  40. package/dist/components/Dashboard/Dashboard.js.map +0 -1
  41. package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
  42. package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
  43. package/dist/components/Dashboard/DashboardHeader.js +0 -138
  44. package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
  45. package/dist/contexts/DashboardContext.d.ts +0 -41
  46. package/dist/contexts/DashboardContext.d.ts.map +0 -1
  47. package/dist/contexts/DashboardContext.js +0 -187
  48. package/dist/contexts/DashboardContext.js.map +0 -1
  49. package/dist/core/transport/QUICTransport.d.ts +0 -320
  50. package/dist/core/transport/QUICTransport.d.ts.map +0 -1
  51. package/dist/core/transport/QUICTransport.js +0 -711
  52. package/dist/core/transport/QUICTransport.js.map +0 -1
  53. package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
  54. package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
  55. package/dist/learning/LearningPersistenceAdapter.js +0 -202
  56. package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
  57. package/dist/learning/algorithms/QLearning.d.ts +0 -68
  58. package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
  59. package/dist/learning/algorithms/QLearning.js +0 -116
  60. package/dist/learning/algorithms/QLearning.js.map +0 -1
  61. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
  62. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
  63. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
  64. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
  65. package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
  66. package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
  67. package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
  68. package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
  69. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
  70. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
  71. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
  72. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
  73. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
  74. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
  75. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
  76. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
  77. package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
  78. package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
  79. package/dist/mcp/handlers/optimize-tests.js +0 -533
  80. package/dist/mcp/handlers/optimize-tests.js.map +0 -1
  81. package/dist/mcp/handlers/predict-defects.d.ts +0 -194
  82. package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
  83. package/dist/mcp/handlers/predict-defects.js +0 -722
  84. package/dist/mcp/handlers/predict-defects.js.map +0 -1
  85. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
  86. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
  87. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
  88. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
  89. package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
  90. package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
  91. package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
  92. package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
  93. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
  94. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
  95. package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
  96. package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
  97. package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
  98. package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
  99. package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
  100. package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
  101. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
  102. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
  103. package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
  104. package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
  105. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
  106. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
  107. package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
  108. package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
  109. package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
  110. package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
  111. package/dist/mcp/handlers/quality-analyze.js +0 -720
  112. package/dist/mcp/handlers/quality-analyze.js.map +0 -1
  113. package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
  114. package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
  115. package/dist/mcp/handlers/security/check-authz.js +0 -434
  116. package/dist/mcp/handlers/security/check-authz.js.map +0 -1
  117. package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
  118. package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
  119. package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
  120. package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
  121. package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
  122. package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
  123. package/dist/mcp/handlers/security/validate-auth.js +0 -294
  124. package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
  125. package/dist/mcp/handlers/test-generate.d.ts +0 -107
  126. package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
  127. package/dist/mcp/handlers/test-generate.js +0 -454
  128. package/dist/mcp/handlers/test-generate.js.map +0 -1
@@ -1,454 +0,0 @@
1
- "use strict";
2
- /**
3
- * Test Generation Handler
4
- *
5
- * Handles AI-driven test generation for various testing strategies.
6
- * Integrates with code analysis and test synthesis capabilities.
7
- *
8
- * @version 1.0.0
9
- * @author Agentic QE Team
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.TestGenerateHandler = void 0;
13
- const base_handler_js_1 = require("./base-handler.js");
14
- const SecureRandom_js_1 = require("../../utils/SecureRandom.js");
15
- class TestGenerateHandler extends base_handler_js_1.BaseHandler {
16
- constructor(registry, hookExecutor) {
17
- super();
18
- this.generatedSuites = new Map();
19
- this.generators = new Map();
20
- this.registry = registry;
21
- this.hookExecutor = hookExecutor;
22
- this.initializeGenerators();
23
- }
24
- async handle(args) {
25
- const requestId = this.generateRequestId();
26
- this.log('info', 'Generating test suite', { requestId, spec: args.spec });
27
- try {
28
- // Validate required parameters
29
- this.validateRequired(args, ['spec']);
30
- this.validateTestGenerationSpec(args.spec);
31
- // Get or spawn test-generator agent
32
- let agentId = args.agentId;
33
- if (!agentId) {
34
- this.log('info', 'Spawning test-generator agent');
35
- const spawnResult = await this.registry.spawnAgent('test-generator', {
36
- name: 'test-generator',
37
- description: `Generate ${args.spec.type} tests using ${args.spec.frameworks?.[0] || 'default'} framework`
38
- });
39
- agentId = spawnResult.id;
40
- this.log('info', `Spawned test-generator agent: ${agentId}`);
41
- }
42
- // Execute pre-task hook
43
- await this.hookExecutor.executePreTask({
44
- description: `Generating ${args.spec.type} tests for ${args.spec.sourceCode.repositoryUrl}`,
45
- agentType: 'test-generator',
46
- agentId
47
- });
48
- // Execute test generation via agent
49
- const { result: testSuite, executionTime } = await this.measureExecutionTime(async () => {
50
- // Create proper TaskAssignment for BaseAgent validation
51
- const taskAssignment = {
52
- id: requestId,
53
- task: {
54
- id: requestId,
55
- type: 'generate-tests',
56
- description: `Generate ${args.spec.type} tests for ${args.spec.sourceCode.repositoryUrl}`,
57
- priority: 'medium',
58
- input: args.spec,
59
- requirements: {
60
- capabilities: ['test-generation', 'code-analysis']
61
- },
62
- context: {
63
- requestId,
64
- timestamp: new Date().toISOString(),
65
- framework: args.spec.frameworks?.[0] || 'jest',
66
- coverageTarget: args.spec.coverageTarget
67
- }
68
- },
69
- agentId: agentId,
70
- assignedAt: new Date(),
71
- status: 'assigned'
72
- };
73
- // Use agent registry to execute task
74
- const result = await this.registry.executeTask(agentId, taskAssignment);
75
- // Also run legacy generation for backward compatibility
76
- const legacyResult = await this.generateTestSuite(args.spec, agentId);
77
- // Merge results (prefer agent result if available)
78
- return result?.output || legacyResult;
79
- });
80
- // Execute post-task hook
81
- await this.hookExecutor.executePostTask({
82
- taskId: agentId,
83
- results: {
84
- suiteId: testSuite.id,
85
- testCount: testSuite.tests.length,
86
- coverage: testSuite.coverage.achieved,
87
- executionTime
88
- }
89
- });
90
- this.log('info', `Test suite generated successfully in ${executionTime.toFixed(2)}ms`, {
91
- suiteId: testSuite.id,
92
- testCount: testSuite.tests.length,
93
- coverage: testSuite.coverage.achieved
94
- });
95
- return this.createSuccessResponse(testSuite, requestId);
96
- }
97
- catch (error) {
98
- this.log('error', 'Test generation failed', { error: error instanceof Error ? error.message : String(error) });
99
- // Execute post-task hook with failure
100
- if (args.agentId) {
101
- await this.hookExecutor.executePostTask({
102
- taskId: args.agentId,
103
- results: { error: error instanceof Error ? error.message : String(error) }
104
- }).catch((hookError) => {
105
- this.log('error', 'Failed to execute post-task hook', {
106
- error: hookError instanceof Error ? hookError.message : String(hookError)
107
- });
108
- });
109
- }
110
- return this.createErrorResponse(error instanceof Error ? error.message : 'Test generation failed', requestId);
111
- }
112
- }
113
- initializeGenerators() {
114
- this.generators.set('unit', {
115
- analyzer: 'function-analysis',
116
- strategy: 'boundary-value-analysis',
117
- patterns: ['arrange-act-assert', 'given-when-then'],
118
- coverage: ['statement', 'branch', 'function']
119
- });
120
- this.generators.set('integration', {
121
- analyzer: 'dependency-analysis',
122
- strategy: 'interaction-testing',
123
- patterns: ['mock-integration', 'contract-testing'],
124
- coverage: ['interface', 'workflow', 'data-flow']
125
- });
126
- this.generators.set('e2e', {
127
- analyzer: 'user-flow-analysis',
128
- strategy: 'scenario-based',
129
- patterns: ['page-object-model', 'behavior-driven'],
130
- coverage: ['user-journey', 'business-logic', 'ui-interaction']
131
- });
132
- this.generators.set('property-based', {
133
- analyzer: 'property-analysis',
134
- strategy: 'hypothesis-testing',
135
- patterns: ['quickcheck', 'property-invariants'],
136
- coverage: ['input-space', 'invariants', 'edge-cases']
137
- });
138
- this.generators.set('mutation', {
139
- analyzer: 'code-mutation',
140
- strategy: 'fault-injection',
141
- patterns: ['mutant-killing', 'fault-detection'],
142
- coverage: ['mutation-score', 'fault-types', 'test-strength']
143
- });
144
- }
145
- validateTestGenerationSpec(spec) {
146
- const validTypes = ['unit', 'integration', 'e2e', 'property-based', 'mutation'];
147
- if (!validTypes.includes(spec.type)) {
148
- throw new Error(`Invalid test type: ${spec.type}. Must be one of: ${validTypes.join(', ')}`);
149
- }
150
- if (!spec.sourceCode || !spec.sourceCode.repositoryUrl) {
151
- throw new Error('Source code repository URL is required');
152
- }
153
- if (spec.coverageTarget < 0 || spec.coverageTarget > 100) {
154
- throw new Error('Coverage target must be between 0 and 100');
155
- }
156
- }
157
- async generateTestSuite(spec, agentId) {
158
- const suiteId = `test-suite-${spec.type}-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(3)}`;
159
- // Analyze source code
160
- const analysisResults = await this.analyzeSourceCode(spec.sourceCode);
161
- // Generate test cases
162
- const tests = await this.generateTestCases(spec, analysisResults);
163
- // Calculate coverage
164
- const coverage = await this.calculateCoverage(tests, spec.coverageTarget, analysisResults);
165
- // Synthesize test data if requested
166
- if (spec.synthesizeData) {
167
- await this.synthesizeTestData(tests, analysisResults);
168
- }
169
- const testSuite = {
170
- id: suiteId,
171
- type: spec.type,
172
- name: `${spec.type.charAt(0).toUpperCase() + spec.type.slice(1)} Test Suite`,
173
- framework: spec.frameworks?.[0] || this.getDefaultFramework(spec.sourceCode.language),
174
- language: spec.sourceCode.language,
175
- tests,
176
- coverage,
177
- metadata: {
178
- generatedAt: new Date().toISOString(),
179
- sourceCommit: spec.sourceCode.branch,
180
- analysisResults,
181
- synthesizedData: spec.synthesizeData
182
- }
183
- };
184
- // Store test suite
185
- this.generatedSuites.set(suiteId, testSuite);
186
- return testSuite;
187
- }
188
- async analyzeSourceCode(sourceCode) {
189
- this.log('info', 'Analyzing source code', { repository: sourceCode.repositoryUrl, language: sourceCode.language });
190
- // Simulate code analysis
191
- // In a real implementation, this would:
192
- // 1. Clone the repository
193
- // 2. Parse AST for the target language
194
- // 3. Extract functions, classes, dependencies
195
- // 4. Identify complexity metrics
196
- // 5. Map control flow and data flow
197
- await new Promise(resolve => setTimeout(resolve, 200));
198
- return {
199
- functions: this.generateMockFunctions(sourceCode.language),
200
- classes: this.generateMockClasses(sourceCode.language),
201
- dependencies: this.generateMockDependencies(),
202
- complexity: this.generateComplexityMetrics(),
203
- patterns: this.identifyCodePatterns(sourceCode.language)
204
- };
205
- }
206
- async generateTestCases(spec, analysisResults) {
207
- const generator = this.generators.get(spec.type);
208
- const testCases = [];
209
- this.log('info', 'Generating test cases', { type: spec.type, strategy: generator.strategy });
210
- // Generate test cases based on type and analysis
211
- for (const func of analysisResults.functions) {
212
- const testCase = await this.generateTestCaseForFunction(spec, func, generator);
213
- testCases.push(testCase);
214
- }
215
- // Add edge case tests
216
- const edgeCases = await this.generateEdgeCaseTests(spec, analysisResults);
217
- testCases.push(...edgeCases);
218
- return testCases;
219
- }
220
- async generateTestCaseForFunction(spec, func, generator) {
221
- const testId = `test-${func.name}-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(2)}`;
222
- return {
223
- id: testId,
224
- name: `test_${func.name}_${this.generateTestSuffix(spec.type)}`,
225
- description: `Test ${func.name} for ${spec.type} coverage`,
226
- type: spec.type,
227
- sourceFile: func.file,
228
- targetFunction: func.name,
229
- code: this.generateTestCode(spec, func, generator),
230
- assertions: this.generateAssertions(spec.type, func),
231
- tags: ['generated', spec.type, func.complexity || 'medium'],
232
- testData: spec.synthesizeData ? this.generateTestData(func) : undefined
233
- };
234
- }
235
- async generateEdgeCaseTests(spec, analysisResults) {
236
- // Generate edge case tests based on analysis
237
- const edgeCases = [];
238
- // Add boundary value tests
239
- if (spec.type === 'unit') {
240
- edgeCases.push(...this.generateBoundaryValueTests(analysisResults));
241
- }
242
- // Add error condition tests
243
- edgeCases.push(...this.generateErrorConditionTests(analysisResults));
244
- return edgeCases;
245
- }
246
- async calculateCoverage(tests, target, analysisResults) {
247
- // Simulate coverage calculation
248
- const achieved = Math.min(target + SecureRandom_js_1.SecureRandom.randomFloat() * 10, 95); // Simulate realistic coverage
249
- const gaps = [];
250
- if (achieved < target) {
251
- gaps.push({
252
- file: 'example.js',
253
- lines: [15, 23, 45],
254
- functions: ['uncoveredFunction'],
255
- branches: [2, 7],
256
- priority: 'medium'
257
- });
258
- }
259
- return {
260
- target,
261
- achieved: Math.round(achieved * 100) / 100,
262
- gaps
263
- };
264
- }
265
- async synthesizeTestData(tests, analysisResults) {
266
- this.log('info', 'Synthesizing test data');
267
- for (const test of tests) {
268
- if (!test.testData) {
269
- test.testData = this.generateRealisticTestData(test, analysisResults);
270
- }
271
- }
272
- }
273
- // Helper methods for mock data generation
274
- generateMockFunctions(language) {
275
- const functions = [
276
- { name: 'processData', file: 'processor.js', complexity: 'medium', parameters: ['data', 'options'] },
277
- { name: 'validateInput', file: 'validator.js', complexity: 'low', parameters: ['input'] },
278
- { name: 'calculateResult', file: 'calculator.js', complexity: 'high', parameters: ['a', 'b', 'operation'] }
279
- ];
280
- return functions.map(f => ({ ...f, language }));
281
- }
282
- generateMockClasses(language) {
283
- return [
284
- { name: 'DataProcessor', file: 'processor.js', methods: ['process', 'validate'] },
285
- { name: 'Calculator', file: 'calculator.js', methods: ['add', 'subtract', 'multiply'] }
286
- ];
287
- }
288
- generateMockDependencies() {
289
- return [
290
- { name: 'lodash', type: 'external', version: '^4.17.21' },
291
- { name: './utils', type: 'internal', exports: ['helper1', 'helper2'] }
292
- ];
293
- }
294
- generateComplexityMetrics() {
295
- return {
296
- cyclomaticComplexity: 3.2,
297
- linesOfCode: 156,
298
- maintainabilityIndex: 68.5,
299
- technicalDebt: 'low'
300
- };
301
- }
302
- identifyCodePatterns(language) {
303
- return ['mvc', 'observer', 'factory', 'singleton'];
304
- }
305
- generateTestSuffix(type) {
306
- const suffixes = {
307
- 'unit': 'should_return_expected_result',
308
- 'integration': 'should_integrate_correctly',
309
- 'e2e': 'should_complete_workflow',
310
- 'property-based': 'should_satisfy_property',
311
- 'mutation': 'should_detect_mutant'
312
- };
313
- return suffixes[type] || 'should_work';
314
- }
315
- generateTestCode(spec, func, generator) {
316
- // Generate basic test code structure
317
- const framework = spec.frameworks?.[0] || this.getDefaultFramework(spec.sourceCode.language);
318
- if (framework.includes('jest') || framework.includes('mocha')) {
319
- return this.generateJavaScriptTestCode(func, spec.type);
320
- }
321
- else if (framework.includes('pytest')) {
322
- return this.generatePythonTestCode(func, spec.type);
323
- }
324
- return this.generateGenericTestCode(func, spec.type);
325
- }
326
- generateJavaScriptTestCode(func, type) {
327
- return `describe('${func.name}', () => {
328
- test('should ${this.generateTestSuffix(type)}', () => {
329
- // Arrange
330
- const input = ${JSON.stringify(this.generateSampleInput(func))};
331
-
332
- // Act
333
- const result = ${func.name}(input);
334
-
335
- // Assert
336
- expect(result).toBeDefined();
337
- // Add more specific assertions based on function analysis
338
- });
339
- });`;
340
- }
341
- generatePythonTestCode(func, type) {
342
- return `def test_${func.name}_${this.generateTestSuffix(type)}():
343
- # Arrange
344
- input_data = ${JSON.stringify(this.generateSampleInput(func))}
345
-
346
- # Act
347
- result = ${func.name}(input_data)
348
-
349
- # Assert
350
- assert result is not None
351
- # Add more specific assertions based on function analysis`;
352
- }
353
- generateGenericTestCode(func, type) {
354
- return `// Test for ${func.name}
355
- // Type: ${type}
356
- // Generated test code would be customized based on language and framework`;
357
- }
358
- generateAssertions(type, func) {
359
- const baseAssertions = [
360
- {
361
- type: 'notEquals',
362
- description: 'Result should not be null or undefined',
363
- expected: null,
364
- actual: 'result'
365
- }
366
- ];
367
- if (type === 'property-based') {
368
- baseAssertions.push({
369
- type: 'property',
370
- description: 'Result should satisfy property invariants',
371
- actual: 'result'
372
- });
373
- }
374
- return baseAssertions;
375
- }
376
- generateTestData(func) {
377
- return {
378
- input: this.generateSampleInput(func),
379
- expected: this.generateExpectedOutput(func),
380
- edgeCases: this.generateEdgeCaseInputs(func)
381
- };
382
- }
383
- generateSampleInput(func) {
384
- // Generate realistic sample input based on function parameters
385
- const sampleData = {};
386
- for (const param of func.parameters || []) {
387
- sampleData[param] = this.generateSampleValueForParameter(param);
388
- }
389
- return sampleData;
390
- }
391
- generateSampleValueForParameter(param) {
392
- const samples = {
393
- 'data': { id: 1, name: 'test', value: 42 },
394
- 'input': 'sample input',
395
- 'options': { timeout: 5000, retries: 3 },
396
- 'a': 10,
397
- 'b': 5,
398
- 'operation': 'add'
399
- };
400
- return samples[param] || 'default_value';
401
- }
402
- generateExpectedOutput(func) {
403
- return 'expected_result_based_on_analysis';
404
- }
405
- generateEdgeCaseInputs(func) {
406
- return [
407
- null,
408
- undefined,
409
- '',
410
- 0,
411
- -1,
412
- Number.MAX_SAFE_INTEGER
413
- ];
414
- }
415
- generateBoundaryValueTests(analysisResults) {
416
- // Generate boundary value tests
417
- return [];
418
- }
419
- generateErrorConditionTests(analysisResults) {
420
- // Generate error condition tests
421
- return [];
422
- }
423
- generateRealisticTestData(test, analysisResults) {
424
- return {
425
- scenario: `realistic_data_for_${test.name}`,
426
- values: this.generateSampleInput({ parameters: ['input'] })
427
- };
428
- }
429
- getDefaultFramework(language) {
430
- const defaults = {
431
- 'javascript': 'jest',
432
- 'typescript': 'jest',
433
- 'python': 'pytest',
434
- 'java': 'junit',
435
- 'csharp': 'nunit',
436
- 'go': 'testing'
437
- };
438
- return defaults[language] || 'generic';
439
- }
440
- /**
441
- * Get test suite by ID
442
- */
443
- getTestSuite(suiteId) {
444
- return this.generatedSuites.get(suiteId);
445
- }
446
- /**
447
- * List all generated test suites
448
- */
449
- listTestSuites() {
450
- return Array.from(this.generatedSuites.values());
451
- }
452
- }
453
- exports.TestGenerateHandler = TestGenerateHandler;
454
- //# sourceMappingURL=test-generate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-generate.js","sourceRoot":"","sources":["../../../src/mcp/handlers/test-generate.ts"],"names":[],"mappings":"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"}