generateAndSave method
Future<List<String> >
generateAndSave({
- required String screenName,
- required Map<
String, dynamic> widgetTree, - required List<
InteractionResult> interactionResults, - required List<
WidgetIssue> issues,
Implementation
Future<List<String>> generateAndSave({
required String screenName,
required Map<String, dynamic> widgetTree,
required List<InteractionResult> interactionResults,
required List<WidgetIssue> issues,
}) async {
print('\nš Generating Flutter test scripts for $screenName...');
// Auto-analyse the project if not done yet
_analysis ??= await AppAnalyser(projectPath: projectPath).analyse();
final analysis = _analysis!;
final sourceInfo = _readScreenSource(screenName, issues);
print(' š Screen files: ${(sourceInfo['files'] as List).join(', ')}');
print(' š Keys found: ${(sourceInfo['keys'] as List).length}');
print(
' š Tappable widgets: ${(sourceInfo['tappable_lines'] as List).length}');
final outputDir = Directory('$projectPath/integration_test/dangi_doctor');
if (!outputDir.existsSync()) outputDir.createSync(recursive: true);
// Generate shared test helper (once per project)
_generateTestHelper(outputDir.path, analysis);
final screenSnake = _toSnakeCase(screenName);
final savedFiles = <String>[];
print(' āļø Smoke test...');
final smokeFile = '${outputDir.path}/${screenSnake}_smoke_test.dart';
File(smokeFile).writeAsStringSync(
_generateSmokeTest(screenName, sourceInfo, analysis));
savedFiles.add(smokeFile);
print(' ā
${smokeFile.split('/').last}');
print(' āļø Interaction test...');
final intFile = '${outputDir.path}/${screenSnake}_interaction_test.dart';
File(intFile).writeAsStringSync(_generateInteractionTest(
screenName, sourceInfo, interactionResults, analysis));
savedFiles.add(intFile);
print(' ā
${intFile.split('/').last}');
print(' āļø Performance test...');
final perfFile = '${outputDir.path}/${screenSnake}_perf_test.dart';
File(perfFile).writeAsStringSync(
_generatePerfTest(screenName, interactionResults, analysis));
savedFiles.add(perfFile);
print(' ā
${perfFile.split('/').last}');
_saveReadme(outputDir.path, analysis);
print('\n š Saved to: integration_test/dangi_doctor/');
print(
' Run: flutter test integration_test/dangi_doctor/ -d <device_id>\n');
return savedFiles;
}