agentic-qe 2.3.2 → 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 (127) hide show
  1. package/CHANGELOG.md +43 -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/learning/PerformanceTracker.d.ts +9 -0
  16. package/dist/learning/PerformanceTracker.d.ts.map +1 -1
  17. package/dist/learning/PerformanceTracker.js +26 -2
  18. package/dist/learning/PerformanceTracker.js.map +1 -1
  19. package/dist/mcp/server-instructions.d.ts +1 -1
  20. package/dist/mcp/server-instructions.js +1 -1
  21. package/package.json +3 -1
  22. package/scripts/README.md +352 -0
  23. package/scripts/hooks/capture-task-learning.js +191 -0
  24. package/scripts/hooks/emit-task-complete.sh +35 -0
  25. package/scripts/hooks/emit-task-spawn.sh +27 -0
  26. package/.claude/agents/failing-agent.json +0 -9
  27. package/.claude/agents/test-agent.json +0 -9
  28. package/dist/App.d.ts +0 -5
  29. package/dist/App.d.ts.map +0 -1
  30. package/dist/App.js +0 -15
  31. package/dist/App.js.map +0 -1
  32. package/dist/cli/init/utils.d.ts +0 -183
  33. package/dist/cli/init/utils.d.ts.map +0 -1
  34. package/dist/cli/init/utils.js +0 -354
  35. package/dist/cli/init/utils.js.map +0 -1
  36. package/dist/components/Dashboard/Dashboard.d.ts +0 -4
  37. package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
  38. package/dist/components/Dashboard/Dashboard.js +0 -148
  39. package/dist/components/Dashboard/Dashboard.js.map +0 -1
  40. package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
  41. package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
  42. package/dist/components/Dashboard/DashboardHeader.js +0 -138
  43. package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
  44. package/dist/contexts/DashboardContext.d.ts +0 -41
  45. package/dist/contexts/DashboardContext.d.ts.map +0 -1
  46. package/dist/contexts/DashboardContext.js +0 -187
  47. package/dist/contexts/DashboardContext.js.map +0 -1
  48. package/dist/core/transport/QUICTransport.d.ts +0 -320
  49. package/dist/core/transport/QUICTransport.d.ts.map +0 -1
  50. package/dist/core/transport/QUICTransport.js +0 -711
  51. package/dist/core/transport/QUICTransport.js.map +0 -1
  52. package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
  53. package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
  54. package/dist/learning/LearningPersistenceAdapter.js +0 -202
  55. package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
  56. package/dist/learning/algorithms/QLearning.d.ts +0 -68
  57. package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
  58. package/dist/learning/algorithms/QLearning.js +0 -116
  59. package/dist/learning/algorithms/QLearning.js.map +0 -1
  60. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
  61. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
  62. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
  63. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
  64. package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
  65. package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
  66. package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
  67. package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
  68. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
  69. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
  70. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
  71. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
  72. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
  73. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
  74. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
  75. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
  76. package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
  77. package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
  78. package/dist/mcp/handlers/optimize-tests.js +0 -533
  79. package/dist/mcp/handlers/optimize-tests.js.map +0 -1
  80. package/dist/mcp/handlers/predict-defects.d.ts +0 -194
  81. package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
  82. package/dist/mcp/handlers/predict-defects.js +0 -722
  83. package/dist/mcp/handlers/predict-defects.js.map +0 -1
  84. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
  85. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
  86. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
  87. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
  88. package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
  89. package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
  90. package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
  91. package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
  92. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
  93. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
  94. package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
  95. package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
  96. package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
  97. package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
  98. package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
  99. package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
  100. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
  101. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
  102. package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
  103. package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
  104. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
  105. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
  106. package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
  107. package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
  108. package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
  109. package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
  110. package/dist/mcp/handlers/quality-analyze.js +0 -720
  111. package/dist/mcp/handlers/quality-analyze.js.map +0 -1
  112. package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
  113. package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
  114. package/dist/mcp/handlers/security/check-authz.js +0 -434
  115. package/dist/mcp/handlers/security/check-authz.js.map +0 -1
  116. package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
  117. package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
  118. package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
  119. package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
  120. package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
  121. package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
  122. package/dist/mcp/handlers/security/validate-auth.js +0 -294
  123. package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
  124. package/dist/mcp/handlers/test-generate.d.ts +0 -107
  125. package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
  126. package/dist/mcp/handlers/test-generate.js +0 -454
  127. 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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"}