test-genie-mcp 2.0.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 (102) hide show
  1. package/README.md +219 -0
  2. package/dist/analyzers/astAnalyzer.d.ts +108 -0
  3. package/dist/analyzers/astAnalyzer.d.ts.map +1 -0
  4. package/dist/analyzers/astAnalyzer.js +800 -0
  5. package/dist/analyzers/astAnalyzer.js.map +1 -0
  6. package/dist/analyzers/performanceAnalyzer.d.ts +90 -0
  7. package/dist/analyzers/performanceAnalyzer.d.ts.map +1 -0
  8. package/dist/analyzers/performanceAnalyzer.js +647 -0
  9. package/dist/analyzers/performanceAnalyzer.js.map +1 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +683 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/platforms/android/index.d.ts +90 -0
  15. package/dist/platforms/android/index.d.ts.map +1 -0
  16. package/dist/platforms/android/index.js +519 -0
  17. package/dist/platforms/android/index.js.map +1 -0
  18. package/dist/platforms/flutter/index.d.ts +105 -0
  19. package/dist/platforms/flutter/index.d.ts.map +1 -0
  20. package/dist/platforms/flutter/index.js +533 -0
  21. package/dist/platforms/flutter/index.js.map +1 -0
  22. package/dist/platforms/ios/index.d.ts +79 -0
  23. package/dist/platforms/ios/index.d.ts.map +1 -0
  24. package/dist/platforms/ios/index.js +393 -0
  25. package/dist/platforms/ios/index.js.map +1 -0
  26. package/dist/platforms/react-native/index.d.ts +160 -0
  27. package/dist/platforms/react-native/index.d.ts.map +1 -0
  28. package/dist/platforms/react-native/index.js +602 -0
  29. package/dist/platforms/react-native/index.js.map +1 -0
  30. package/dist/platforms/web/index.d.ts +177 -0
  31. package/dist/platforms/web/index.d.ts.map +1 -0
  32. package/dist/platforms/web/index.js +637 -0
  33. package/dist/platforms/web/index.js.map +1 -0
  34. package/dist/storage/index.d.ts +35 -0
  35. package/dist/storage/index.d.ts.map +1 -0
  36. package/dist/storage/index.js +351 -0
  37. package/dist/storage/index.js.map +1 -0
  38. package/dist/tools/analysis/analyzeAppStructure.d.ts +9 -0
  39. package/dist/tools/analysis/analyzeAppStructure.d.ts.map +1 -0
  40. package/dist/tools/analysis/analyzeAppStructure.js +289 -0
  41. package/dist/tools/analysis/analyzeAppStructure.js.map +1 -0
  42. package/dist/tools/analysis/createTestPlan.d.ts +21 -0
  43. package/dist/tools/analysis/createTestPlan.d.ts.map +1 -0
  44. package/dist/tools/analysis/createTestPlan.js +214 -0
  45. package/dist/tools/analysis/createTestPlan.js.map +1 -0
  46. package/dist/tools/analysis/generateScenarios.d.ts +21 -0
  47. package/dist/tools/analysis/generateScenarios.d.ts.map +1 -0
  48. package/dist/tools/analysis/generateScenarios.js +567 -0
  49. package/dist/tools/analysis/generateScenarios.js.map +1 -0
  50. package/dist/tools/automation/cicdIntegration.d.ts +41 -0
  51. package/dist/tools/automation/cicdIntegration.d.ts.map +1 -0
  52. package/dist/tools/automation/cicdIntegration.js +825 -0
  53. package/dist/tools/automation/cicdIntegration.js.map +1 -0
  54. package/dist/tools/automation/generateReport.d.ts +16 -0
  55. package/dist/tools/automation/generateReport.d.ts.map +1 -0
  56. package/dist/tools/automation/generateReport.js +406 -0
  57. package/dist/tools/automation/generateReport.js.map +1 -0
  58. package/dist/tools/automation/runFullAutomation.d.ts +25 -0
  59. package/dist/tools/automation/runFullAutomation.d.ts.map +1 -0
  60. package/dist/tools/automation/runFullAutomation.js +296 -0
  61. package/dist/tools/automation/runFullAutomation.js.map +1 -0
  62. package/dist/tools/detection/detectLogicErrors.d.ts +18 -0
  63. package/dist/tools/detection/detectLogicErrors.d.ts.map +1 -0
  64. package/dist/tools/detection/detectLogicErrors.js +470 -0
  65. package/dist/tools/detection/detectLogicErrors.js.map +1 -0
  66. package/dist/tools/detection/detectMemoryLeaks.d.ts +23 -0
  67. package/dist/tools/detection/detectMemoryLeaks.d.ts.map +1 -0
  68. package/dist/tools/detection/detectMemoryLeaks.js +453 -0
  69. package/dist/tools/detection/detectMemoryLeaks.js.map +1 -0
  70. package/dist/tools/execution/runScenarioTest.d.ts +34 -0
  71. package/dist/tools/execution/runScenarioTest.d.ts.map +1 -0
  72. package/dist/tools/execution/runScenarioTest.js +334 -0
  73. package/dist/tools/execution/runScenarioTest.js.map +1 -0
  74. package/dist/tools/execution/runSimulation.d.ts +17 -0
  75. package/dist/tools/execution/runSimulation.d.ts.map +1 -0
  76. package/dist/tools/execution/runSimulation.js +250 -0
  77. package/dist/tools/execution/runSimulation.js.map +1 -0
  78. package/dist/tools/execution/runStressTest.d.ts +52 -0
  79. package/dist/tools/execution/runStressTest.d.ts.map +1 -0
  80. package/dist/tools/execution/runStressTest.js +176 -0
  81. package/dist/tools/execution/runStressTest.js.map +1 -0
  82. package/dist/tools/fixing/applyFix.d.ts +44 -0
  83. package/dist/tools/fixing/applyFix.d.ts.map +1 -0
  84. package/dist/tools/fixing/applyFix.js +399 -0
  85. package/dist/tools/fixing/applyFix.js.map +1 -0
  86. package/dist/tools/fixing/confirmFix.d.ts +31 -0
  87. package/dist/tools/fixing/confirmFix.d.ts.map +1 -0
  88. package/dist/tools/fixing/confirmFix.js +136 -0
  89. package/dist/tools/fixing/confirmFix.js.map +1 -0
  90. package/dist/tools/fixing/suggestFixes.d.ts +23 -0
  91. package/dist/tools/fixing/suggestFixes.d.ts.map +1 -0
  92. package/dist/tools/fixing/suggestFixes.js +349 -0
  93. package/dist/tools/fixing/suggestFixes.js.map +1 -0
  94. package/dist/types.d.ts +322 -0
  95. package/dist/types.d.ts.map +1 -0
  96. package/dist/types.js +6 -0
  97. package/dist/types.js.map +1 -0
  98. package/dist/utils/codeParser.d.ts +12 -0
  99. package/dist/utils/codeParser.d.ts.map +1 -0
  100. package/dist/utils/codeParser.js +487 -0
  101. package/dist/utils/codeParser.js.map +1 -0
  102. package/package.json +68 -0
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ // ============================================
3
+ // Run Full Automation Tool
4
+ // ============================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runFullAutomation = runFullAutomation;
7
+ const uuid_1 = require("uuid");
8
+ const analyzeAppStructure_js_1 = require("../analysis/analyzeAppStructure.js");
9
+ const generateScenarios_js_1 = require("../analysis/generateScenarios.js");
10
+ const createTestPlan_js_1 = require("../analysis/createTestPlan.js");
11
+ const runScenarioTest_js_1 = require("../execution/runScenarioTest.js");
12
+ const runSimulation_js_1 = require("../execution/runSimulation.js");
13
+ const detectMemoryLeaks_js_1 = require("../detection/detectMemoryLeaks.js");
14
+ const detectLogicErrors_js_1 = require("../detection/detectLogicErrors.js");
15
+ const suggestFixes_js_1 = require("../fixing/suggestFixes.js");
16
+ const confirmFix_js_1 = require("../fixing/confirmFix.js");
17
+ const applyFix_js_1 = require("../fixing/applyFix.js");
18
+ async function runFullAutomation(params) {
19
+ const { projectPath, platform, testTypes = ['unit', 'integration', 'e2e'], autoFix = false, confirmMode = 'interactive', thresholds = {}, skipPhases = [], onProgress, onConfirmRequired, } = params;
20
+ const startTime = Date.now();
21
+ const automationId = (0, uuid_1.v4)();
22
+ let appStructure = null;
23
+ let testPlan = null;
24
+ let testResults = [];
25
+ let simulationResult = null;
26
+ let detectedIssues = [];
27
+ let fixSuggestions = [];
28
+ let appliedFixes = [];
29
+ const pendingConfirmations = [];
30
+ try {
31
+ // ============================================
32
+ // Phase 1: App Analysis
33
+ // ============================================
34
+ if (!skipPhases.includes('analysis')) {
35
+ onProgress?.('analysis', 0, 'Starting app analysis...');
36
+ appStructure = (0, analyzeAppStructure_js_1.analyzeAppStructure)({
37
+ projectPath,
38
+ platform,
39
+ depth: 'normal',
40
+ });
41
+ onProgress?.('analysis', 100, `Analyzed ${appStructure.screens.length} screens, ${appStructure.components.length} components`);
42
+ }
43
+ if (!appStructure) {
44
+ throw new Error('App structure analysis is required');
45
+ }
46
+ // ============================================
47
+ // Phase 2: Scenario Generation
48
+ // ============================================
49
+ if (!skipPhases.includes('scenarios')) {
50
+ onProgress?.('scenarios', 0, 'Generating test scenarios...');
51
+ const scenarioResult = (0, generateScenarios_js_1.generateScenarios)({
52
+ appStructure,
53
+ testTypes,
54
+ coverage: 'standard',
55
+ });
56
+ onProgress?.('scenarios', 50, `Generated ${scenarioResult.scenarios.length} scenarios`);
57
+ // Create test plan
58
+ const planResult = (0, createTestPlan_js_1.createTestPlan)({
59
+ name: 'Automated Test Plan',
60
+ scenarios: scenarioResult.scenarios,
61
+ appStructure,
62
+ });
63
+ testPlan = planResult.plan;
64
+ onProgress?.('scenarios', 100, `Test plan created with ${testPlan.scenarios.length} scenarios`);
65
+ }
66
+ if (!testPlan) {
67
+ throw new Error('Test plan generation is required');
68
+ }
69
+ // ============================================
70
+ // Phase 3: Test Execution
71
+ // ============================================
72
+ if (!skipPhases.includes('execution')) {
73
+ onProgress?.('execution', 0, 'Running test scenarios...');
74
+ // Run scenarios
75
+ const executionResult = await (0, runScenarioTest_js_1.runScenarios)(testPlan.scenarios, projectPath, appStructure.platform, { parallel: true, maxParallel: 5 });
76
+ testResults = executionResult.results;
77
+ onProgress?.('execution', 50, `${executionResult.passed}/${executionResult.results.length} tests passed`);
78
+ // Run simulation if memory test is included
79
+ if (testTypes.includes('memory') || testTypes.includes('performance')) {
80
+ const simResult = await (0, runSimulation_js_1.runSimulation)({
81
+ appStructure,
82
+ duration: 60, // 1 minute simulation
83
+ userPatterns: ['random', 'sequential'],
84
+ intensity: 'medium',
85
+ });
86
+ simulationResult = simResult.result;
87
+ }
88
+ onProgress?.('execution', 100, 'Test execution completed');
89
+ }
90
+ // ============================================
91
+ // Phase 4: Issue Detection
92
+ // ============================================
93
+ if (!skipPhases.includes('detection')) {
94
+ onProgress?.('detection', 0, 'Detecting issues...');
95
+ // Detect memory leaks
96
+ const memoryResult = (0, detectMemoryLeaks_js_1.detectMemoryLeaks)({
97
+ appStructure,
98
+ analysisType: 'both',
99
+ thresholds: {
100
+ minLeakSizeMB: thresholds.memoryLeakSizeMB || 5,
101
+ },
102
+ });
103
+ detectedIssues.push(...memoryResult.issues);
104
+ onProgress?.('detection', 50, `Found ${memoryResult.issues.length} memory issues`);
105
+ // Detect logic errors
106
+ const logicResult = (0, detectLogicErrors_js_1.detectLogicErrors)({
107
+ appStructure,
108
+ analysisDepth: 'normal',
109
+ });
110
+ detectedIssues.push(...logicResult.issues);
111
+ onProgress?.('detection', 100, `Total issues found: ${detectedIssues.length}`);
112
+ }
113
+ // ============================================
114
+ // Phase 5: Fix Generation & Application
115
+ // ============================================
116
+ if (!skipPhases.includes('fixing') && detectedIssues.length > 0) {
117
+ onProgress?.('fixing', 0, 'Generating fix suggestions...');
118
+ // Generate fix suggestions
119
+ const fixResult = (0, suggestFixes_js_1.suggestFixes)({
120
+ issues: detectedIssues,
121
+ projectPath,
122
+ platform: appStructure.platform,
123
+ });
124
+ fixSuggestions = fixResult.suggestions;
125
+ onProgress?.('fixing', 30, `Generated ${fixSuggestions.length} fix suggestions`);
126
+ // Handle fixes based on confirm mode
127
+ if (autoFix && confirmMode === 'auto') {
128
+ // Auto-apply high-confidence fixes
129
+ for (const fix of fixSuggestions.filter(f => f.confidence >= 90)) {
130
+ (0, confirmFix_js_1.confirmFix)({ fixId: fix.id, action: 'approve' });
131
+ const result = (0, applyFix_js_1.applyFix)({ fixId: fix.id, backup: true, validate: true });
132
+ if (result.success) {
133
+ appliedFixes.push(result.application);
134
+ }
135
+ }
136
+ }
137
+ else if (confirmMode === 'interactive' && onConfirmRequired) {
138
+ // Interactive confirmation
139
+ for (const fix of fixSuggestions) {
140
+ const action = await onConfirmRequired(fix);
141
+ if (action === 'approve') {
142
+ (0, confirmFix_js_1.confirmFix)({ fixId: fix.id, action: 'approve' });
143
+ const result = (0, applyFix_js_1.applyFix)({ fixId: fix.id, backup: true, validate: true });
144
+ if (result.success) {
145
+ appliedFixes.push(result.application);
146
+ }
147
+ }
148
+ else if (action === 'reject') {
149
+ (0, confirmFix_js_1.confirmFix)({ fixId: fix.id, action: 'reject' });
150
+ }
151
+ }
152
+ }
153
+ else {
154
+ // Batch mode - collect all for later confirmation
155
+ pendingConfirmations.push(...fixSuggestions);
156
+ }
157
+ onProgress?.('fixing', 100, `Applied ${appliedFixes.length} fixes`);
158
+ }
159
+ // ============================================
160
+ // Generate Summary
161
+ // ============================================
162
+ const endTime = Date.now();
163
+ const duration = (endTime - startTime) / 1000;
164
+ const summary = {
165
+ totalScenarios: testPlan.scenarios.length,
166
+ passedScenarios: testResults.filter(r => r.status === 'passed').length,
167
+ failedScenarios: testResults.filter(r => r.status === 'failed').length,
168
+ totalIssues: detectedIssues.length,
169
+ criticalIssues: detectedIssues.filter(i => i.severity === 'critical').length,
170
+ fixesApplied: appliedFixes.length,
171
+ coveragePercent: testPlan.coverage.screens,
172
+ duration,
173
+ };
174
+ const result = {
175
+ id: automationId,
176
+ config: {
177
+ projectPath,
178
+ platform: appStructure.platform,
179
+ testTypes,
180
+ autoFix,
181
+ confirmMode,
182
+ thresholds: {
183
+ memoryLeakSizeMB: thresholds.memoryLeakSizeMB || 10,
184
+ cpuUsagePercent: thresholds.cpuUsagePercent || 80,
185
+ renderTimeMs: 16,
186
+ apiTimeoutMs: 5000,
187
+ coveragePercent: thresholds.coveragePercent || 80,
188
+ },
189
+ },
190
+ appStructure,
191
+ testPlan,
192
+ testResults,
193
+ simulationResult: simulationResult || undefined,
194
+ detectedIssues,
195
+ fixSuggestions,
196
+ appliedFixes,
197
+ summary,
198
+ startedAt: new Date(startTime).toISOString(),
199
+ completedAt: new Date(endTime).toISOString(),
200
+ };
201
+ return {
202
+ result,
203
+ success: true,
204
+ pendingConfirmations,
205
+ summary: generateAutomationSummary(result),
206
+ };
207
+ }
208
+ catch (error) {
209
+ return {
210
+ result: {
211
+ id: automationId,
212
+ config: {
213
+ projectPath,
214
+ platform: platform || 'web',
215
+ testTypes,
216
+ autoFix,
217
+ confirmMode,
218
+ thresholds: {
219
+ memoryLeakSizeMB: 10,
220
+ cpuUsagePercent: 80,
221
+ renderTimeMs: 16,
222
+ apiTimeoutMs: 5000,
223
+ coveragePercent: 80,
224
+ },
225
+ },
226
+ appStructure: appStructure,
227
+ testPlan: testPlan,
228
+ testResults,
229
+ detectedIssues,
230
+ fixSuggestions,
231
+ appliedFixes,
232
+ summary: {
233
+ totalScenarios: 0,
234
+ passedScenarios: 0,
235
+ failedScenarios: 0,
236
+ totalIssues: 0,
237
+ criticalIssues: 0,
238
+ fixesApplied: 0,
239
+ coveragePercent: 0,
240
+ duration: (Date.now() - startTime) / 1000,
241
+ },
242
+ startedAt: new Date(startTime).toISOString(),
243
+ completedAt: new Date().toISOString(),
244
+ },
245
+ success: false,
246
+ pendingConfirmations: [],
247
+ summary: `Automation failed: ${error instanceof Error ? error.message : String(error)}`,
248
+ };
249
+ }
250
+ }
251
+ function generateAutomationSummary(result) {
252
+ const lines = [];
253
+ const { summary } = result;
254
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
255
+ lines.push('🤖 Test Automation Complete');
256
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
257
+ lines.push('');
258
+ lines.push(`📁 Project: ${result.config.projectPath}`);
259
+ lines.push(`📱 Platform: ${result.config.platform}`);
260
+ lines.push(`⏱️ Duration: ${summary.duration.toFixed(1)}s`);
261
+ lines.push('');
262
+ lines.push('📊 Test Results:');
263
+ lines.push(` ✅ Passed: ${summary.passedScenarios}/${summary.totalScenarios}`);
264
+ lines.push(` ❌ Failed: ${summary.failedScenarios}/${summary.totalScenarios}`);
265
+ lines.push(` 📈 Coverage: ${summary.coveragePercent}%`);
266
+ lines.push('');
267
+ lines.push('🔍 Issues Detected:');
268
+ lines.push(` Total: ${summary.totalIssues}`);
269
+ lines.push(` 🔴 Critical: ${summary.criticalIssues}`);
270
+ lines.push('');
271
+ lines.push('🔧 Fixes:');
272
+ lines.push(` Suggested: ${result.fixSuggestions.length}`);
273
+ lines.push(` Applied: ${summary.fixesApplied}`);
274
+ if (result.simulationResult) {
275
+ lines.push('');
276
+ lines.push('📈 Simulation Results:');
277
+ lines.push(` Duration: ${result.simulationResult.duration.toFixed(1)}s`);
278
+ lines.push(` User Actions: ${result.simulationResult.userActions}`);
279
+ lines.push(` Memory Peak: ${result.simulationResult.memoryPeakMB}MB`);
280
+ lines.push(` CPU Peak: ${result.simulationResult.cpuPeakPercent}%`);
281
+ lines.push(` Anomalies: ${result.simulationResult.anomalies.length}`);
282
+ }
283
+ // Status
284
+ const overallStatus = summary.criticalIssues === 0 && summary.failedScenarios === 0
285
+ ? '✅ HEALTHY'
286
+ : summary.criticalIssues > 0
287
+ ? '🔴 CRITICAL ISSUES'
288
+ : '⚠️ ISSUES FOUND';
289
+ lines.push('');
290
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
291
+ lines.push(`Status: ${overallStatus}`);
292
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
293
+ return lines.join('\n');
294
+ }
295
+ exports.default = runFullAutomation;
296
+ //# sourceMappingURL=runFullAutomation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runFullAutomation.js","sourceRoot":"","sources":["../../../src/tools/automation/runFullAutomation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { LogicErrorInfo, AppStructure } from '../../types.js';
2
+ interface DetectLogicErrorsParams {
3
+ appStructure: AppStructure;
4
+ analysisDepth?: 'shallow' | 'normal' | 'deep';
5
+ checkTypes?: ('race_condition' | 'state_inconsistency' | 'null_reference' | 'type_mismatch' | 'all')[];
6
+ }
7
+ interface DetectLogicErrorsResult {
8
+ issues: LogicErrorInfo[];
9
+ summary: {
10
+ totalIssues: number;
11
+ byType: Record<string, number>;
12
+ bySeverity: Record<string, number>;
13
+ };
14
+ recommendations: string[];
15
+ }
16
+ export declare function detectLogicErrors(params: DetectLogicErrorsParams): DetectLogicErrorsResult;
17
+ export default detectLogicErrors;
18
+ //# sourceMappingURL=detectLogicErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectLogicErrors.d.ts","sourceRoot":"","sources":["../../../src/tools/detection/detectLogicErrors.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,cAAc,EAEd,YAAY,EACb,MAAM,gBAAgB,CAAC;AAIxB,UAAU,uBAAuB;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,UAAU,CAAC,EAAE,CAAC,gBAAgB,GAAG,qBAAqB,GAAG,gBAAgB,GAAG,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC;CACxG;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,uBAAuB,CA8D1F;AAmaD,eAAe,iBAAiB,CAAC"}