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.
- package/README.md +219 -0
- package/dist/analyzers/astAnalyzer.d.ts +108 -0
- package/dist/analyzers/astAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/astAnalyzer.js +800 -0
- package/dist/analyzers/astAnalyzer.js.map +1 -0
- package/dist/analyzers/performanceAnalyzer.d.ts +90 -0
- package/dist/analyzers/performanceAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/performanceAnalyzer.js +647 -0
- package/dist/analyzers/performanceAnalyzer.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +683 -0
- package/dist/index.js.map +1 -0
- package/dist/platforms/android/index.d.ts +90 -0
- package/dist/platforms/android/index.d.ts.map +1 -0
- package/dist/platforms/android/index.js +519 -0
- package/dist/platforms/android/index.js.map +1 -0
- package/dist/platforms/flutter/index.d.ts +105 -0
- package/dist/platforms/flutter/index.d.ts.map +1 -0
- package/dist/platforms/flutter/index.js +533 -0
- package/dist/platforms/flutter/index.js.map +1 -0
- package/dist/platforms/ios/index.d.ts +79 -0
- package/dist/platforms/ios/index.d.ts.map +1 -0
- package/dist/platforms/ios/index.js +393 -0
- package/dist/platforms/ios/index.js.map +1 -0
- package/dist/platforms/react-native/index.d.ts +160 -0
- package/dist/platforms/react-native/index.d.ts.map +1 -0
- package/dist/platforms/react-native/index.js +602 -0
- package/dist/platforms/react-native/index.js.map +1 -0
- package/dist/platforms/web/index.d.ts +177 -0
- package/dist/platforms/web/index.d.ts.map +1 -0
- package/dist/platforms/web/index.js +637 -0
- package/dist/platforms/web/index.js.map +1 -0
- package/dist/storage/index.d.ts +35 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +351 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/tools/analysis/analyzeAppStructure.d.ts +9 -0
- package/dist/tools/analysis/analyzeAppStructure.d.ts.map +1 -0
- package/dist/tools/analysis/analyzeAppStructure.js +289 -0
- package/dist/tools/analysis/analyzeAppStructure.js.map +1 -0
- package/dist/tools/analysis/createTestPlan.d.ts +21 -0
- package/dist/tools/analysis/createTestPlan.d.ts.map +1 -0
- package/dist/tools/analysis/createTestPlan.js +214 -0
- package/dist/tools/analysis/createTestPlan.js.map +1 -0
- package/dist/tools/analysis/generateScenarios.d.ts +21 -0
- package/dist/tools/analysis/generateScenarios.d.ts.map +1 -0
- package/dist/tools/analysis/generateScenarios.js +567 -0
- package/dist/tools/analysis/generateScenarios.js.map +1 -0
- package/dist/tools/automation/cicdIntegration.d.ts +41 -0
- package/dist/tools/automation/cicdIntegration.d.ts.map +1 -0
- package/dist/tools/automation/cicdIntegration.js +825 -0
- package/dist/tools/automation/cicdIntegration.js.map +1 -0
- package/dist/tools/automation/generateReport.d.ts +16 -0
- package/dist/tools/automation/generateReport.d.ts.map +1 -0
- package/dist/tools/automation/generateReport.js +406 -0
- package/dist/tools/automation/generateReport.js.map +1 -0
- package/dist/tools/automation/runFullAutomation.d.ts +25 -0
- package/dist/tools/automation/runFullAutomation.d.ts.map +1 -0
- package/dist/tools/automation/runFullAutomation.js +296 -0
- package/dist/tools/automation/runFullAutomation.js.map +1 -0
- package/dist/tools/detection/detectLogicErrors.d.ts +18 -0
- package/dist/tools/detection/detectLogicErrors.d.ts.map +1 -0
- package/dist/tools/detection/detectLogicErrors.js +470 -0
- package/dist/tools/detection/detectLogicErrors.js.map +1 -0
- package/dist/tools/detection/detectMemoryLeaks.d.ts +23 -0
- package/dist/tools/detection/detectMemoryLeaks.d.ts.map +1 -0
- package/dist/tools/detection/detectMemoryLeaks.js +453 -0
- package/dist/tools/detection/detectMemoryLeaks.js.map +1 -0
- package/dist/tools/execution/runScenarioTest.d.ts +34 -0
- package/dist/tools/execution/runScenarioTest.d.ts.map +1 -0
- package/dist/tools/execution/runScenarioTest.js +334 -0
- package/dist/tools/execution/runScenarioTest.js.map +1 -0
- package/dist/tools/execution/runSimulation.d.ts +17 -0
- package/dist/tools/execution/runSimulation.d.ts.map +1 -0
- package/dist/tools/execution/runSimulation.js +250 -0
- package/dist/tools/execution/runSimulation.js.map +1 -0
- package/dist/tools/execution/runStressTest.d.ts +52 -0
- package/dist/tools/execution/runStressTest.d.ts.map +1 -0
- package/dist/tools/execution/runStressTest.js +176 -0
- package/dist/tools/execution/runStressTest.js.map +1 -0
- package/dist/tools/fixing/applyFix.d.ts +44 -0
- package/dist/tools/fixing/applyFix.d.ts.map +1 -0
- package/dist/tools/fixing/applyFix.js +399 -0
- package/dist/tools/fixing/applyFix.js.map +1 -0
- package/dist/tools/fixing/confirmFix.d.ts +31 -0
- package/dist/tools/fixing/confirmFix.d.ts.map +1 -0
- package/dist/tools/fixing/confirmFix.js +136 -0
- package/dist/tools/fixing/confirmFix.js.map +1 -0
- package/dist/tools/fixing/suggestFixes.d.ts +23 -0
- package/dist/tools/fixing/suggestFixes.d.ts.map +1 -0
- package/dist/tools/fixing/suggestFixes.js +349 -0
- package/dist/tools/fixing/suggestFixes.js.map +1 -0
- package/dist/types.d.ts +322 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/codeParser.d.ts +12 -0
- package/dist/utils/codeParser.d.ts.map +1 -0
- package/dist/utils/codeParser.js +487 -0
- package/dist/utils/codeParser.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================
|
|
3
|
+
// Generate Test Scenarios Tool
|
|
4
|
+
// ============================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateScenarios = generateScenarios;
|
|
7
|
+
const uuid_1 = require("uuid");
|
|
8
|
+
const index_js_1 = require("../../storage/index.js");
|
|
9
|
+
function generateScenarios(params) {
|
|
10
|
+
const { appStructure, testTypes = ['unit', 'integration', 'e2e'], coverage = 'standard', focusAreas = [], maxScenarios = 100, } = params;
|
|
11
|
+
const scenarios = [];
|
|
12
|
+
// Generate scenarios based on test types
|
|
13
|
+
if (testTypes.includes('e2e')) {
|
|
14
|
+
scenarios.push(...generateE2EScenarios(appStructure, coverage));
|
|
15
|
+
}
|
|
16
|
+
if (testTypes.includes('integration')) {
|
|
17
|
+
scenarios.push(...generateIntegrationScenarios(appStructure, coverage));
|
|
18
|
+
}
|
|
19
|
+
if (testTypes.includes('unit')) {
|
|
20
|
+
scenarios.push(...generateUnitScenarios(appStructure, coverage));
|
|
21
|
+
}
|
|
22
|
+
if (testTypes.includes('performance')) {
|
|
23
|
+
scenarios.push(...generatePerformanceScenarios(appStructure));
|
|
24
|
+
}
|
|
25
|
+
if (testTypes.includes('memory')) {
|
|
26
|
+
scenarios.push(...generateMemoryScenarios(appStructure));
|
|
27
|
+
}
|
|
28
|
+
// Filter by focus areas if specified
|
|
29
|
+
let filteredScenarios = scenarios;
|
|
30
|
+
if (focusAreas.length > 0) {
|
|
31
|
+
filteredScenarios = scenarios.filter(s => focusAreas.some(area => s.name.toLowerCase().includes(area.toLowerCase()) ||
|
|
32
|
+
s.tags.some(tag => tag.toLowerCase().includes(area.toLowerCase()))));
|
|
33
|
+
}
|
|
34
|
+
// Limit scenarios
|
|
35
|
+
const finalScenarios = filteredScenarios.slice(0, maxScenarios);
|
|
36
|
+
// Save scenarios
|
|
37
|
+
for (const scenario of finalScenarios) {
|
|
38
|
+
(0, index_js_1.saveScenario)(scenario, appStructure.projectPath);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
scenarios: finalScenarios,
|
|
42
|
+
coverage: {
|
|
43
|
+
screens: countCoveredScreens(finalScenarios, appStructure),
|
|
44
|
+
components: countCoveredComponents(finalScenarios, appStructure),
|
|
45
|
+
apis: countCoveredApis(finalScenarios, appStructure),
|
|
46
|
+
edgeCases: finalScenarios.filter(s => s.tags.includes('edge-case')).length,
|
|
47
|
+
},
|
|
48
|
+
summary: generateSummary(finalScenarios, appStructure),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// ============================================
|
|
52
|
+
// E2E Scenario Generation
|
|
53
|
+
// ============================================
|
|
54
|
+
function generateE2EScenarios(app, coverage) {
|
|
55
|
+
const scenarios = [];
|
|
56
|
+
// Happy path scenarios for each screen
|
|
57
|
+
for (const screen of app.screens) {
|
|
58
|
+
scenarios.push(createHappyPathScenario(screen, app));
|
|
59
|
+
// Navigation scenarios
|
|
60
|
+
for (const nav of screen.navigation) {
|
|
61
|
+
scenarios.push(createNavigationScenario(screen, nav, app));
|
|
62
|
+
}
|
|
63
|
+
// Edge cases
|
|
64
|
+
if (coverage === 'comprehensive') {
|
|
65
|
+
scenarios.push(...createEdgeCaseScenarios(screen, app));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// User flow scenarios
|
|
69
|
+
scenarios.push(...generateUserFlowScenarios(app, coverage));
|
|
70
|
+
return scenarios;
|
|
71
|
+
}
|
|
72
|
+
function createHappyPathScenario(screen, app) {
|
|
73
|
+
const steps = [
|
|
74
|
+
{
|
|
75
|
+
order: 1,
|
|
76
|
+
action: 'navigate',
|
|
77
|
+
target: screen.name,
|
|
78
|
+
expectedOutput: `${screen.name} is displayed`,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
order: 2,
|
|
82
|
+
action: 'verify',
|
|
83
|
+
target: 'screen',
|
|
84
|
+
expectedOutput: 'All UI elements are visible',
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
// Add interaction steps based on components
|
|
88
|
+
let stepOrder = 3;
|
|
89
|
+
for (const component of screen.components.slice(0, 5)) {
|
|
90
|
+
steps.push({
|
|
91
|
+
order: stepOrder++,
|
|
92
|
+
action: 'interact',
|
|
93
|
+
target: component,
|
|
94
|
+
expectedOutput: 'Component responds correctly',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
id: (0, uuid_1.v4)(),
|
|
99
|
+
name: `[E2E] ${screen.name} - Happy Path`,
|
|
100
|
+
description: `Verify ${screen.name} displays correctly and basic interactions work`,
|
|
101
|
+
type: 'e2e',
|
|
102
|
+
priority: 'high',
|
|
103
|
+
steps,
|
|
104
|
+
preconditions: ['App is launched', 'User is authenticated'],
|
|
105
|
+
expectedResults: ['Screen loads successfully', 'All elements are interactive'],
|
|
106
|
+
tags: ['e2e', 'happy-path', screen.name.toLowerCase()],
|
|
107
|
+
estimatedDuration: 30,
|
|
108
|
+
createdAt: new Date().toISOString(),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function createNavigationScenario(screen, nav, app) {
|
|
112
|
+
return {
|
|
113
|
+
id: (0, uuid_1.v4)(),
|
|
114
|
+
name: `[E2E] Navigation: ${screen.name} → ${nav.target}`,
|
|
115
|
+
description: `Verify navigation from ${screen.name} to ${nav.target}`,
|
|
116
|
+
type: 'e2e',
|
|
117
|
+
priority: 'medium',
|
|
118
|
+
steps: [
|
|
119
|
+
{ order: 1, action: 'navigate', target: screen.name, expectedOutput: `${screen.name} is displayed` },
|
|
120
|
+
{ order: 2, action: 'tap', target: `navigate_to_${nav.target}`, expectedOutput: 'Navigation triggered' },
|
|
121
|
+
{ order: 3, action: 'verify', target: nav.target, expectedOutput: `${nav.target} is displayed` },
|
|
122
|
+
],
|
|
123
|
+
preconditions: ['App is launched', `${screen.name} is accessible`],
|
|
124
|
+
expectedResults: [`Successfully navigated to ${nav.target}`],
|
|
125
|
+
tags: ['e2e', 'navigation', screen.name.toLowerCase(), nav.target.toLowerCase()],
|
|
126
|
+
estimatedDuration: 15,
|
|
127
|
+
createdAt: new Date().toISOString(),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function createEdgeCaseScenarios(screen, app) {
|
|
131
|
+
const scenarios = [];
|
|
132
|
+
// Empty state
|
|
133
|
+
scenarios.push({
|
|
134
|
+
id: (0, uuid_1.v4)(),
|
|
135
|
+
name: `[E2E] ${screen.name} - Empty State`,
|
|
136
|
+
description: `Verify ${screen.name} handles empty data gracefully`,
|
|
137
|
+
type: 'e2e',
|
|
138
|
+
priority: 'medium',
|
|
139
|
+
steps: [
|
|
140
|
+
{ order: 1, action: 'mock', target: 'api', input: 'empty_response' },
|
|
141
|
+
{ order: 2, action: 'navigate', target: screen.name },
|
|
142
|
+
{ order: 3, action: 'verify', target: 'empty_state', expectedOutput: 'Empty state message displayed' },
|
|
143
|
+
],
|
|
144
|
+
preconditions: ['App is launched', 'API returns empty data'],
|
|
145
|
+
expectedResults: ['Empty state is displayed correctly'],
|
|
146
|
+
tags: ['e2e', 'edge-case', 'empty-state', screen.name.toLowerCase()],
|
|
147
|
+
estimatedDuration: 20,
|
|
148
|
+
createdAt: new Date().toISOString(),
|
|
149
|
+
});
|
|
150
|
+
// Error state
|
|
151
|
+
scenarios.push({
|
|
152
|
+
id: (0, uuid_1.v4)(),
|
|
153
|
+
name: `[E2E] ${screen.name} - Error Handling`,
|
|
154
|
+
description: `Verify ${screen.name} handles API errors gracefully`,
|
|
155
|
+
type: 'e2e',
|
|
156
|
+
priority: 'high',
|
|
157
|
+
steps: [
|
|
158
|
+
{ order: 1, action: 'mock', target: 'api', input: 'error_500' },
|
|
159
|
+
{ order: 2, action: 'navigate', target: screen.name },
|
|
160
|
+
{ order: 3, action: 'verify', target: 'error_state', expectedOutput: 'Error message displayed' },
|
|
161
|
+
{ order: 4, action: 'tap', target: 'retry_button', expectedOutput: 'Retry triggered' },
|
|
162
|
+
],
|
|
163
|
+
preconditions: ['App is launched', 'API returns error'],
|
|
164
|
+
expectedResults: ['Error state is displayed', 'Retry works correctly'],
|
|
165
|
+
tags: ['e2e', 'edge-case', 'error-handling', screen.name.toLowerCase()],
|
|
166
|
+
estimatedDuration: 25,
|
|
167
|
+
createdAt: new Date().toISOString(),
|
|
168
|
+
});
|
|
169
|
+
// Network offline
|
|
170
|
+
scenarios.push({
|
|
171
|
+
id: (0, uuid_1.v4)(),
|
|
172
|
+
name: `[E2E] ${screen.name} - Offline Mode`,
|
|
173
|
+
description: `Verify ${screen.name} handles offline state`,
|
|
174
|
+
type: 'e2e',
|
|
175
|
+
priority: 'medium',
|
|
176
|
+
steps: [
|
|
177
|
+
{ order: 1, action: 'set_network', target: 'offline' },
|
|
178
|
+
{ order: 2, action: 'navigate', target: screen.name },
|
|
179
|
+
{ order: 3, action: 'verify', target: 'offline_indicator', expectedOutput: 'Offline message shown' },
|
|
180
|
+
],
|
|
181
|
+
preconditions: ['App is launched', 'Network is disabled'],
|
|
182
|
+
expectedResults: ['Offline state is handled gracefully'],
|
|
183
|
+
tags: ['e2e', 'edge-case', 'offline', screen.name.toLowerCase()],
|
|
184
|
+
estimatedDuration: 20,
|
|
185
|
+
createdAt: new Date().toISOString(),
|
|
186
|
+
});
|
|
187
|
+
return scenarios;
|
|
188
|
+
}
|
|
189
|
+
function generateUserFlowScenarios(app, coverage) {
|
|
190
|
+
const scenarios = [];
|
|
191
|
+
// Common user flows based on app structure
|
|
192
|
+
const flows = detectUserFlows(app);
|
|
193
|
+
for (const flow of flows) {
|
|
194
|
+
const steps = flow.screens.map((screen, index) => ({
|
|
195
|
+
order: index + 1,
|
|
196
|
+
action: index === 0 ? 'navigate' : 'tap',
|
|
197
|
+
target: screen,
|
|
198
|
+
expectedOutput: `${screen} is displayed`,
|
|
199
|
+
}));
|
|
200
|
+
scenarios.push({
|
|
201
|
+
id: (0, uuid_1.v4)(),
|
|
202
|
+
name: `[E2E] User Flow: ${flow.name}`,
|
|
203
|
+
description: flow.description,
|
|
204
|
+
type: 'e2e',
|
|
205
|
+
priority: 'high',
|
|
206
|
+
steps,
|
|
207
|
+
preconditions: flow.preconditions,
|
|
208
|
+
expectedResults: flow.expectedResults,
|
|
209
|
+
tags: ['e2e', 'user-flow', ...flow.tags],
|
|
210
|
+
estimatedDuration: flow.screens.length * 10,
|
|
211
|
+
createdAt: new Date().toISOString(),
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
return scenarios;
|
|
215
|
+
}
|
|
216
|
+
function detectUserFlows(app) {
|
|
217
|
+
const flows = [];
|
|
218
|
+
const screenNames = app.screens.map(s => s.name.toLowerCase());
|
|
219
|
+
// Login flow
|
|
220
|
+
if (screenNames.some(s => s.includes('login') || s.includes('signin'))) {
|
|
221
|
+
flows.push({
|
|
222
|
+
name: 'Login Flow',
|
|
223
|
+
description: 'Complete user login process',
|
|
224
|
+
screens: ['Login', 'Home'],
|
|
225
|
+
preconditions: ['App is launched', 'User has valid credentials'],
|
|
226
|
+
expectedResults: ['User is logged in', 'Home screen is displayed'],
|
|
227
|
+
tags: ['auth', 'login'],
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
// Registration flow
|
|
231
|
+
if (screenNames.some(s => s.includes('register') || s.includes('signup'))) {
|
|
232
|
+
flows.push({
|
|
233
|
+
name: 'Registration Flow',
|
|
234
|
+
description: 'Complete user registration process',
|
|
235
|
+
screens: ['Register', 'Verification', 'Home'],
|
|
236
|
+
preconditions: ['App is launched', 'User has valid email'],
|
|
237
|
+
expectedResults: ['Account is created', 'User is logged in'],
|
|
238
|
+
tags: ['auth', 'registration'],
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
// Onboarding flow
|
|
242
|
+
if (screenNames.some(s => s.includes('onboarding') || s.includes('tutorial'))) {
|
|
243
|
+
flows.push({
|
|
244
|
+
name: 'Onboarding Flow',
|
|
245
|
+
description: 'Complete onboarding tutorial',
|
|
246
|
+
screens: ['Onboarding1', 'Onboarding2', 'Onboarding3', 'Home'],
|
|
247
|
+
preconditions: ['First app launch'],
|
|
248
|
+
expectedResults: ['Onboarding completed', 'Main screen displayed'],
|
|
249
|
+
tags: ['onboarding'],
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
// Settings flow
|
|
253
|
+
if (screenNames.some(s => s.includes('settings') || s.includes('profile'))) {
|
|
254
|
+
flows.push({
|
|
255
|
+
name: 'Settings Update Flow',
|
|
256
|
+
description: 'Update user settings',
|
|
257
|
+
screens: ['Home', 'Settings', 'Edit', 'Settings'],
|
|
258
|
+
preconditions: ['User is logged in'],
|
|
259
|
+
expectedResults: ['Settings updated successfully'],
|
|
260
|
+
tags: ['settings', 'profile'],
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
return flows;
|
|
264
|
+
}
|
|
265
|
+
// ============================================
|
|
266
|
+
// Integration Scenario Generation
|
|
267
|
+
// ============================================
|
|
268
|
+
function generateIntegrationScenarios(app, coverage) {
|
|
269
|
+
const scenarios = [];
|
|
270
|
+
// API integration scenarios
|
|
271
|
+
for (const api of app.apis) {
|
|
272
|
+
scenarios.push({
|
|
273
|
+
id: (0, uuid_1.v4)(),
|
|
274
|
+
name: `[Integration] API: ${api.method} ${api.endpoint}`,
|
|
275
|
+
description: `Test ${api.method} ${api.endpoint} integration`,
|
|
276
|
+
type: 'integration',
|
|
277
|
+
priority: 'high',
|
|
278
|
+
steps: [
|
|
279
|
+
{ order: 1, action: 'prepare', target: 'request', input: JSON.stringify({ method: api.method, endpoint: api.endpoint }) },
|
|
280
|
+
{ order: 2, action: 'execute', target: 'api_call', expectedOutput: 'Response received' },
|
|
281
|
+
{ order: 3, action: 'verify', target: 'response', expectedOutput: 'Valid response structure' },
|
|
282
|
+
],
|
|
283
|
+
preconditions: ['API server is running', 'Valid authentication token'],
|
|
284
|
+
expectedResults: ['API returns valid response', 'Response matches expected schema'],
|
|
285
|
+
tags: ['integration', 'api', api.method.toLowerCase()],
|
|
286
|
+
estimatedDuration: 10,
|
|
287
|
+
createdAt: new Date().toISOString(),
|
|
288
|
+
});
|
|
289
|
+
// Error handling for API
|
|
290
|
+
if (coverage === 'comprehensive') {
|
|
291
|
+
scenarios.push({
|
|
292
|
+
id: (0, uuid_1.v4)(),
|
|
293
|
+
name: `[Integration] API Error: ${api.method} ${api.endpoint}`,
|
|
294
|
+
description: `Test error handling for ${api.method} ${api.endpoint}`,
|
|
295
|
+
type: 'integration',
|
|
296
|
+
priority: 'medium',
|
|
297
|
+
steps: [
|
|
298
|
+
{ order: 1, action: 'mock', target: 'api', input: 'error_response' },
|
|
299
|
+
{ order: 2, action: 'execute', target: 'api_call' },
|
|
300
|
+
{ order: 3, action: 'verify', target: 'error_handling', expectedOutput: 'Error handled gracefully' },
|
|
301
|
+
],
|
|
302
|
+
preconditions: ['API mocked to return error'],
|
|
303
|
+
expectedResults: ['Error is caught', 'User-friendly message displayed'],
|
|
304
|
+
tags: ['integration', 'api', 'error-handling'],
|
|
305
|
+
estimatedDuration: 10,
|
|
306
|
+
createdAt: new Date().toISOString(),
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// State management integration
|
|
311
|
+
if (app.stateManagement) {
|
|
312
|
+
scenarios.push({
|
|
313
|
+
id: (0, uuid_1.v4)(),
|
|
314
|
+
name: `[Integration] State Management: ${app.stateManagement.type}`,
|
|
315
|
+
description: `Test ${app.stateManagement.type} state synchronization`,
|
|
316
|
+
type: 'integration',
|
|
317
|
+
priority: 'high',
|
|
318
|
+
steps: [
|
|
319
|
+
{ order: 1, action: 'dispatch', target: 'action', input: 'test_action' },
|
|
320
|
+
{ order: 2, action: 'verify', target: 'state', expectedOutput: 'State updated correctly' },
|
|
321
|
+
{ order: 3, action: 'verify', target: 'ui', expectedOutput: 'UI reflects state change' },
|
|
322
|
+
],
|
|
323
|
+
preconditions: ['Store is initialized'],
|
|
324
|
+
expectedResults: ['State updates propagate correctly', 'UI reflects state changes'],
|
|
325
|
+
tags: ['integration', 'state-management', app.stateManagement.type],
|
|
326
|
+
estimatedDuration: 15,
|
|
327
|
+
createdAt: new Date().toISOString(),
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
return scenarios;
|
|
331
|
+
}
|
|
332
|
+
// ============================================
|
|
333
|
+
// Unit Scenario Generation
|
|
334
|
+
// ============================================
|
|
335
|
+
function generateUnitScenarios(app, coverage) {
|
|
336
|
+
const scenarios = [];
|
|
337
|
+
// Component unit tests
|
|
338
|
+
for (const component of app.components.slice(0, 20)) {
|
|
339
|
+
// Props validation
|
|
340
|
+
if (component.props.length > 0) {
|
|
341
|
+
scenarios.push({
|
|
342
|
+
id: (0, uuid_1.v4)(),
|
|
343
|
+
name: `[Unit] ${component.name} - Props Validation`,
|
|
344
|
+
description: `Test ${component.name} with various prop combinations`,
|
|
345
|
+
type: 'unit',
|
|
346
|
+
priority: 'medium',
|
|
347
|
+
steps: [
|
|
348
|
+
{ order: 1, action: 'render', target: component.name, input: 'valid_props' },
|
|
349
|
+
{ order: 2, action: 'verify', target: 'rendered', expectedOutput: 'Component rendered' },
|
|
350
|
+
],
|
|
351
|
+
preconditions: ['Component imported'],
|
|
352
|
+
expectedResults: ['Component renders with valid props', 'PropTypes/TypeScript validation passes'],
|
|
353
|
+
tags: ['unit', 'component', component.name.toLowerCase()],
|
|
354
|
+
estimatedDuration: 5,
|
|
355
|
+
createdAt: new Date().toISOString(),
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
// State changes
|
|
359
|
+
if (component.state.length > 0) {
|
|
360
|
+
scenarios.push({
|
|
361
|
+
id: (0, uuid_1.v4)(),
|
|
362
|
+
name: `[Unit] ${component.name} - State Changes`,
|
|
363
|
+
description: `Test ${component.name} state transitions`,
|
|
364
|
+
type: 'unit',
|
|
365
|
+
priority: 'medium',
|
|
366
|
+
steps: [
|
|
367
|
+
{ order: 1, action: 'render', target: component.name },
|
|
368
|
+
{ order: 2, action: 'trigger', target: 'state_change' },
|
|
369
|
+
{ order: 3, action: 'verify', target: 'state', expectedOutput: 'State updated correctly' },
|
|
370
|
+
],
|
|
371
|
+
preconditions: ['Component mounted'],
|
|
372
|
+
expectedResults: ['State changes correctly', 'Re-render triggered'],
|
|
373
|
+
tags: ['unit', 'state', component.name.toLowerCase()],
|
|
374
|
+
estimatedDuration: 5,
|
|
375
|
+
createdAt: new Date().toISOString(),
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return scenarios;
|
|
380
|
+
}
|
|
381
|
+
// ============================================
|
|
382
|
+
// Performance Scenario Generation
|
|
383
|
+
// ============================================
|
|
384
|
+
function generatePerformanceScenarios(app) {
|
|
385
|
+
const scenarios = [];
|
|
386
|
+
// Screen load time
|
|
387
|
+
for (const screen of app.screens.slice(0, 5)) {
|
|
388
|
+
scenarios.push({
|
|
389
|
+
id: (0, uuid_1.v4)(),
|
|
390
|
+
name: `[Performance] ${screen.name} - Load Time`,
|
|
391
|
+
description: `Measure ${screen.name} initial load time`,
|
|
392
|
+
type: 'performance',
|
|
393
|
+
priority: 'high',
|
|
394
|
+
steps: [
|
|
395
|
+
{ order: 1, action: 'start_profiling', target: 'cpu_memory' },
|
|
396
|
+
{ order: 2, action: 'navigate', target: screen.name },
|
|
397
|
+
{ order: 3, action: 'measure', target: 'time_to_interactive', expectedOutput: '< 2000ms' },
|
|
398
|
+
{ order: 4, action: 'stop_profiling' },
|
|
399
|
+
],
|
|
400
|
+
preconditions: ['App is launched', 'Cold start'],
|
|
401
|
+
expectedResults: ['Load time under 2 seconds', 'No frame drops'],
|
|
402
|
+
tags: ['performance', 'load-time', screen.name.toLowerCase()],
|
|
403
|
+
estimatedDuration: 30,
|
|
404
|
+
createdAt: new Date().toISOString(),
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
// List scrolling performance
|
|
408
|
+
scenarios.push({
|
|
409
|
+
id: (0, uuid_1.v4)(),
|
|
410
|
+
name: '[Performance] List Scrolling - 60fps',
|
|
411
|
+
description: 'Ensure list scrolling maintains 60fps',
|
|
412
|
+
type: 'performance',
|
|
413
|
+
priority: 'high',
|
|
414
|
+
steps: [
|
|
415
|
+
{ order: 1, action: 'navigate', target: 'list_screen' },
|
|
416
|
+
{ order: 2, action: 'load_data', input: '1000_items' },
|
|
417
|
+
{ order: 3, action: 'scroll', target: 'list', input: 'fast_scroll' },
|
|
418
|
+
{ order: 4, action: 'measure', target: 'frame_rate', expectedOutput: '>= 60fps' },
|
|
419
|
+
],
|
|
420
|
+
preconditions: ['List screen available', 'Large dataset loaded'],
|
|
421
|
+
expectedResults: ['Scrolling is smooth', 'No dropped frames'],
|
|
422
|
+
tags: ['performance', 'scrolling', 'fps'],
|
|
423
|
+
estimatedDuration: 45,
|
|
424
|
+
createdAt: new Date().toISOString(),
|
|
425
|
+
});
|
|
426
|
+
// API response time
|
|
427
|
+
for (const api of app.apis.slice(0, 3)) {
|
|
428
|
+
scenarios.push({
|
|
429
|
+
id: (0, uuid_1.v4)(),
|
|
430
|
+
name: `[Performance] API: ${api.endpoint} Response Time`,
|
|
431
|
+
description: `Measure ${api.endpoint} response time`,
|
|
432
|
+
type: 'performance',
|
|
433
|
+
priority: 'medium',
|
|
434
|
+
steps: [
|
|
435
|
+
{ order: 1, action: 'execute', target: api.endpoint },
|
|
436
|
+
{ order: 2, action: 'measure', target: 'response_time', expectedOutput: '< 1000ms' },
|
|
437
|
+
],
|
|
438
|
+
preconditions: ['Network available'],
|
|
439
|
+
expectedResults: ['Response time under 1 second'],
|
|
440
|
+
tags: ['performance', 'api', 'response-time'],
|
|
441
|
+
estimatedDuration: 10,
|
|
442
|
+
createdAt: new Date().toISOString(),
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
return scenarios;
|
|
446
|
+
}
|
|
447
|
+
// ============================================
|
|
448
|
+
// Memory Scenario Generation
|
|
449
|
+
// ============================================
|
|
450
|
+
function generateMemoryScenarios(app) {
|
|
451
|
+
const scenarios = [];
|
|
452
|
+
// Navigation memory leak check
|
|
453
|
+
scenarios.push({
|
|
454
|
+
id: (0, uuid_1.v4)(),
|
|
455
|
+
name: '[Memory] Navigation Memory Leak Check',
|
|
456
|
+
description: 'Check for memory leaks during navigation',
|
|
457
|
+
type: 'memory',
|
|
458
|
+
priority: 'critical',
|
|
459
|
+
steps: [
|
|
460
|
+
{ order: 1, action: 'snapshot', target: 'heap' },
|
|
461
|
+
{ order: 2, action: 'navigate', target: 'screen_a' },
|
|
462
|
+
{ order: 3, action: 'navigate', target: 'screen_b' },
|
|
463
|
+
{ order: 4, action: 'navigate', target: 'screen_a' },
|
|
464
|
+
{ order: 5, action: 'repeat', target: 'steps_2-4', input: '10_times' },
|
|
465
|
+
{ order: 6, action: 'snapshot', target: 'heap' },
|
|
466
|
+
{ order: 7, action: 'compare', target: 'snapshots', expectedOutput: 'No significant memory increase' },
|
|
467
|
+
],
|
|
468
|
+
preconditions: ['App is launched'],
|
|
469
|
+
expectedResults: ['No memory leaks detected', 'Memory usage stable'],
|
|
470
|
+
tags: ['memory', 'leak', 'navigation'],
|
|
471
|
+
estimatedDuration: 120,
|
|
472
|
+
createdAt: new Date().toISOString(),
|
|
473
|
+
});
|
|
474
|
+
// Component lifecycle memory check
|
|
475
|
+
for (const component of app.components.filter(c => c.lifecycle.length > 0).slice(0, 3)) {
|
|
476
|
+
scenarios.push({
|
|
477
|
+
id: (0, uuid_1.v4)(),
|
|
478
|
+
name: `[Memory] ${component.name} - Lifecycle Cleanup`,
|
|
479
|
+
description: `Verify ${component.name} properly cleans up resources`,
|
|
480
|
+
type: 'memory',
|
|
481
|
+
priority: 'high',
|
|
482
|
+
steps: [
|
|
483
|
+
{ order: 1, action: 'snapshot', target: 'heap' },
|
|
484
|
+
{ order: 2, action: 'mount', target: component.name },
|
|
485
|
+
{ order: 3, action: 'unmount', target: component.name },
|
|
486
|
+
{ order: 4, action: 'repeat', target: 'steps_2-3', input: '5_times' },
|
|
487
|
+
{ order: 5, action: 'force_gc' },
|
|
488
|
+
{ order: 6, action: 'snapshot', target: 'heap' },
|
|
489
|
+
{ order: 7, action: 'compare', target: 'snapshots', expectedOutput: 'No retained objects' },
|
|
490
|
+
],
|
|
491
|
+
preconditions: ['Component available'],
|
|
492
|
+
expectedResults: ['All subscriptions cleaned up', 'No memory retention'],
|
|
493
|
+
tags: ['memory', 'lifecycle', component.name.toLowerCase()],
|
|
494
|
+
estimatedDuration: 60,
|
|
495
|
+
createdAt: new Date().toISOString(),
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
// Long session memory check
|
|
499
|
+
scenarios.push({
|
|
500
|
+
id: (0, uuid_1.v4)(),
|
|
501
|
+
name: '[Memory] Long Session Stability',
|
|
502
|
+
description: 'Check memory stability during extended use',
|
|
503
|
+
type: 'memory',
|
|
504
|
+
priority: 'high',
|
|
505
|
+
steps: [
|
|
506
|
+
{ order: 1, action: 'snapshot', target: 'heap' },
|
|
507
|
+
{ order: 2, action: 'simulate', target: 'user_session', input: '30_minutes' },
|
|
508
|
+
{ order: 3, action: 'snapshot', target: 'heap' },
|
|
509
|
+
{ order: 4, action: 'compare', target: 'snapshots', expectedOutput: 'Memory growth < 50MB' },
|
|
510
|
+
],
|
|
511
|
+
preconditions: ['App is launched'],
|
|
512
|
+
expectedResults: ['Memory usage remains stable', 'No OOM crashes'],
|
|
513
|
+
tags: ['memory', 'stability', 'long-session'],
|
|
514
|
+
estimatedDuration: 1800,
|
|
515
|
+
createdAt: new Date().toISOString(),
|
|
516
|
+
});
|
|
517
|
+
return scenarios;
|
|
518
|
+
}
|
|
519
|
+
// ============================================
|
|
520
|
+
// Helper Functions
|
|
521
|
+
// ============================================
|
|
522
|
+
function countCoveredScreens(scenarios, app) {
|
|
523
|
+
const coveredScreens = new Set();
|
|
524
|
+
for (const scenario of scenarios) {
|
|
525
|
+
for (const step of scenario.steps) {
|
|
526
|
+
if (step.target) {
|
|
527
|
+
const matchingScreen = app.screens.find(s => s.name.toLowerCase().includes(step.target.toLowerCase()));
|
|
528
|
+
if (matchingScreen) {
|
|
529
|
+
coveredScreens.add(matchingScreen.name);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
return coveredScreens.size;
|
|
535
|
+
}
|
|
536
|
+
function countCoveredComponents(scenarios, app) {
|
|
537
|
+
const coveredComponents = new Set();
|
|
538
|
+
for (const scenario of scenarios) {
|
|
539
|
+
for (const tag of scenario.tags) {
|
|
540
|
+
const matchingComponent = app.components.find(c => c.name.toLowerCase() === tag.toLowerCase());
|
|
541
|
+
if (matchingComponent) {
|
|
542
|
+
coveredComponents.add(matchingComponent.name);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
return coveredComponents.size;
|
|
547
|
+
}
|
|
548
|
+
function countCoveredApis(scenarios, app) {
|
|
549
|
+
return scenarios.filter(s => s.tags.includes('api')).length;
|
|
550
|
+
}
|
|
551
|
+
function generateSummary(scenarios, app) {
|
|
552
|
+
const byType = {};
|
|
553
|
+
const byPriority = {};
|
|
554
|
+
for (const scenario of scenarios) {
|
|
555
|
+
byType[scenario.type] = (byType[scenario.type] || 0) + 1;
|
|
556
|
+
byPriority[scenario.priority] = (byPriority[scenario.priority] || 0) + 1;
|
|
557
|
+
}
|
|
558
|
+
const typeBreakdown = Object.entries(byType)
|
|
559
|
+
.map(([type, count]) => `${type}: ${count}`)
|
|
560
|
+
.join(', ');
|
|
561
|
+
const priorityBreakdown = Object.entries(byPriority)
|
|
562
|
+
.map(([priority, count]) => `${priority}: ${count}`)
|
|
563
|
+
.join(', ');
|
|
564
|
+
return `Generated ${scenarios.length} test scenarios for ${app.screens.length} screens and ${app.components.length} components. Types: ${typeBreakdown}. Priority: ${priorityBreakdown}.`;
|
|
565
|
+
}
|
|
566
|
+
exports.default = generateScenarios;
|
|
567
|
+
//# sourceMappingURL=generateScenarios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateScenarios.js","sourceRoot":"","sources":["../../../src/tools/analysis/generateScenarios.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Platform } from '../../types.js';
|
|
2
|
+
export interface CICDConfig {
|
|
3
|
+
projectPath: string;
|
|
4
|
+
platform: Platform;
|
|
5
|
+
provider: 'github-actions' | 'jenkins' | 'gitlab-ci' | 'circleci';
|
|
6
|
+
options?: {
|
|
7
|
+
testCommand?: string;
|
|
8
|
+
buildCommand?: string;
|
|
9
|
+
deployCommand?: string;
|
|
10
|
+
notifyOnFailure?: boolean;
|
|
11
|
+
cacheEnabled?: boolean;
|
|
12
|
+
parallelTests?: boolean;
|
|
13
|
+
branches?: string[];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface CICDGeneratedConfig {
|
|
17
|
+
provider: string;
|
|
18
|
+
filePath: string;
|
|
19
|
+
content: string;
|
|
20
|
+
additionalFiles?: {
|
|
21
|
+
path: string;
|
|
22
|
+
content: string;
|
|
23
|
+
}[];
|
|
24
|
+
}
|
|
25
|
+
export declare function generateGitHubActions(config: CICDConfig): CICDGeneratedConfig;
|
|
26
|
+
export declare function generateJenkinsfile(config: CICDConfig): CICDGeneratedConfig;
|
|
27
|
+
export declare function generateGitLabCI(config: CICDConfig): CICDGeneratedConfig;
|
|
28
|
+
export declare function generateCICDConfig(config: CICDConfig): CICDGeneratedConfig;
|
|
29
|
+
export declare function writeCICDConfig(config: CICDConfig): {
|
|
30
|
+
success: boolean;
|
|
31
|
+
files: string[];
|
|
32
|
+
};
|
|
33
|
+
declare const _default: {
|
|
34
|
+
generateCICDConfig: typeof generateCICDConfig;
|
|
35
|
+
writeCICDConfig: typeof writeCICDConfig;
|
|
36
|
+
generateGitHubActions: typeof generateGitHubActions;
|
|
37
|
+
generateJenkinsfile: typeof generateJenkinsfile;
|
|
38
|
+
generateGitLabCI: typeof generateGitLabCI;
|
|
39
|
+
};
|
|
40
|
+
export default _default;
|
|
41
|
+
//# sourceMappingURL=cicdIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cicdIntegration.d.ts","sourceRoot":"","sources":["../../../src/tools/automation/cicdIntegration.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK1C,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAClE,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AAKD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,CAoC7E;AA6eD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,CAuI3E;AAKD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,CA4GxE;AAKD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,CAW1E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAkCzF;;;;;;;;AAED,wBAME"}
|