import 'dart:io'; import 'screens/equipment/equipment_in_full_test.dart'; /// 장비 테스트 독립 실행 스크립트 Future main() async { print('\n=============================='); print('장비 화면 자동 테스트 시작'); print('==============================\n'); final equipmentTest = EquipmentInFullTest(); try { final results = await equipmentTest.runAllTests(); print('\n=============================='); print('테스트 결과 요약'); print('=============================='); print('전체 테스트: ${results['totalTests']}개'); print('성공: ${results['passedTests']}개'); print('실패: ${results['failedTests']}개'); print('==============================\n'); // 상세 결과 출력 final tests = results['tests'] as List; for (final test in tests) { final status = test['passed'] ? '✅' : '❌'; print('$status ${test['testName']}'); if (!test['passed'] && test['error'] != null) { print(' 에러: ${test['error']}'); if (test['retryCount'] != null && test['retryCount'] > 0) { print(' 재시도 횟수: ${test['retryCount']}회'); } } } // 리포트 생성 final reportCollector = equipmentTest.autoTestSystem.reportCollector; print('\n리포트 생성 중...'); // 리포트 디렉토리 생성 final reportDir = Directory('test_reports'); if (!await reportDir.exists()) { await reportDir.create(recursive: true); } // HTML 리포트 생성 try { final htmlReport = await reportCollector.generateHtmlReport(); final htmlFile = File('test_reports/equipment_test_report.html'); await htmlFile.writeAsString(htmlReport); print('✅ HTML 리포트 생성: ${htmlFile.path}'); } catch (e) { print('❌ HTML 리포트 생성 실패: $e'); } // Markdown 리포트 생성 try { final mdReport = await reportCollector.generateMarkdownReport(); final mdFile = File('test_reports/equipment_test_report.md'); await mdFile.writeAsString(mdReport); print('✅ Markdown 리포트 생성: ${mdFile.path}'); } catch (e) { print('❌ Markdown 리포트 생성 실패: $e'); } // JSON 리포트 생성 try { final jsonReport = await reportCollector.generateJsonReport(); final jsonFile = File('test_reports/equipment_test_report.json'); await jsonFile.writeAsString(jsonReport); print('✅ JSON 리포트 생성: ${jsonFile.path}'); } catch (e) { print('❌ JSON 리포트 생성 실패: $e'); } // 실패한 테스트가 있으면 비정상 종료 if (results['failedTests'] > 0) { print('\n❌ ${results['failedTests']}개의 테스트가 실패했습니다.'); exit(1); } else { print('\n✅ 모든 테스트가 성공했습니다!'); exit(0); } } catch (e, stackTrace) { print('\n❌ 치명적 오류 발생:'); print(e); print('\n스택 추적:'); print(stackTrace); exit(2); } }