part of 'app_test.dart'; class VehicleTest { static Future _initVehicleModule() async { final vehicleParam = { 'display': 'VISIVEL', 'expirationDate': '', 'startDate': '', 'quantity': 0, }; final vehicleManagerParam = { 'display': 'VISIVEL', 'expirationDate': '', 'startDate': '', 'quantity': 0, }; await LicenseRepositoryImpl() .setModule(LicenseKeys.vehicles.value, vehicleParam); await LicenseRepositoryImpl() .setModule(LicenseKeys.vehiclesManager.value, vehicleManagerParam); } static Future vehiclePage() async { patrolWidgetTest( 'Vehicle Page', (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Vehicle Page'); final PatrolFinder throwsException = $(Dialog).$(ThrowExceptionWidget); await _loggedWithMultiLocalsAccount(); await _initVehicleModule(); await $.pumpAndSettle(); await $.pumpWidgetAndSettle(const App()); ff.navigatorKey.currentContext!.go('/vehiclesOnThePropertyPage'); final String title = MenuEntry.entries // .where((entry) => entry.key == 'FRE-HUB-VEHICLES') // .map((entry) => entry.name) .first; final PatrolFinder appBar = await $(AppBar) // .waitUntilExists(); final PatrolFinder titleAppBar = await appBar // .$(title) .waitUntilVisible(); expect(titleAppBar, findsOneWidget); final PatrolFinder tab1 = await $(#TabView_Tab1) // .waitUntilExists(); final PatrolFinder tab2 = await $(#TabView_Tab2) // .waitUntilExists(); await tab2.tap(); await Future.delayed(const Duration(milliseconds: 500)); await tab1.tap(); final PatrolFinder listViewFinder = await $(VehicleHistoryScreen) // .$(ListView) .waitUntilVisible(); expect(listViewFinder, findsOneWidget); final PatrolFinder entriesFinder = await $(listViewFinder) .$(CardItemTemplateComponentWidget) .waitUntilVisible(); expect(entriesFinder, findsWidgets); final int entriesCount = entriesFinder.evaluate().length; await $.pumpAndSettle(); if (entriesCount > 0) for (int i = 0; i < entriesCount; i++) { await $(entriesFinder.at(i)).scrollTo(); await $(entriesFinder.at(i)) .waitUntilVisible(timeout: const Duration(seconds: 1)) .tap( settleTimeout: const Duration(seconds: 1), settlePolicy: SettlePolicy.noSettle, ); await $.pumpAndSettle(duration: Duration(milliseconds: 500)); final PatrolFinder detailsFinder = await $(DetailsComponentWidget).waitUntilVisible(); expect(detailsFinder, findsOneWidget); await _navigateBackUsingSystemGesture(); // await $.native.pressBack().then((_) => $.pumpAndSettle()); } }, ); patrolWidgetTest( 'License', (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Vehicle Page'); await _loggedWithMultiLocalsAccount(); await _initVehicleModule(); await $.pumpAndSettle(); await $.pumpWidgetAndSettle(const App()); ff.navigatorKey.currentContext!.go('/vehiclesOnThePropertyPage'); final String title = MenuEntry.entries // .where((entry) => entry.key == 'FRE-HUB-VEHICLES') // .map((entry) => entry.name) .first; final PatrolFinder appBar = await $(AppBar) // .waitUntilExists(); final PatrolFinder titleAppBar = await appBar // .$(title) .waitUntilVisible(); expect(titleAppBar, findsOneWidget); final PatrolFinder tab1 = await $(#TabView_Tab1) // .waitUntilExists(); final PatrolFinder tab2 = await $(#TabView_Tab2) // .waitUntilExists(); await tab2.tap(); await Future.delayed(const Duration(milliseconds: 500)); await tab1.tap(); final PatrolFinder listViewFinder = await $(VehicleHistoryScreen) // .$(ListView) .waitUntilVisible(); expect(listViewFinder, findsOneWidget); final PatrolFinder entriesFinder = await $(listViewFinder) .$(CardItemTemplateComponentWidget) .waitUntilVisible(); expect(entriesFinder, findsWidgets); await $.pumpAndSettle(); await Future.delayed(const Duration(milliseconds: 1000)); }, ); } static Future historyScreen() async { patrolWidgetTest( 'historyScreen', (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Vehicle Page'); final PatrolFinder throwsException = $(Dialog).$(ThrowExceptionWidget); await _loggedWithMultiLocalsAccount(); await _initVehicleModule(); await $.pumpAndSettle(); await $.pumpWidgetAndSettle(const App()); ff.navigatorKey.currentContext!.go('/vehiclesOnThePropertyPage'); final String title = MenuEntry.entries // .where((entry) => entry.key == 'FRE-HUB-VEHICLES') // .map((entry) => entry.name) .first; final PatrolFinder appBar = await $(AppBar) // .waitUntilExists(); final PatrolFinder titleAppBar = await appBar // .$(title) .waitUntilVisible(); expect(titleAppBar, findsOneWidget); final PatrolFinder listViewFinder = await $(VehicleHistoryScreen) // .$(ListView) .waitUntilVisible(); expect(listViewFinder, findsOneWidget); final PatrolFinder entriesFinder = await $(listViewFinder) .$(CardItemTemplateComponentWidget) .waitUntilVisible(); expect(entriesFinder, findsWidgets); await $.pumpAndSettle(); await $(entriesFinder.first) .waitUntilVisible(timeout: const Duration(seconds: 1)) .tap( settleTimeout: const Duration(seconds: 1), settlePolicy: SettlePolicy.noSettle, ); await $.pumpAndSettle(duration: Duration(milliseconds: 500)); final PatrolFinder detailsFinder = await $(DetailsComponentWidget).waitUntilVisible(); expect(detailsFinder, findsOneWidget); await _navigateBackUsingSystemGesture(); /// Iterable Test // final int entriesCount = entriesFinder.evaluate().length; // for (int i = 0; i < entriesCount; i++) { // // await $(entriesFinder.at(i)).scrollTo(); // await $(entriesFinder.at(i)) // .waitUntilVisible(timeout: const Duration(seconds: 1)) // .tap( // settleTimeout: const Duration(seconds: 1), // settlePolicy: SettlePolicy.noSettle, // ); // await $.pumpAndSettle(duration: Duration(milliseconds: 500)); // final PatrolFinder detailsFinder = // await $(DetailsComponentWidget).waitUntilVisible(); // expect(detailsFinder, findsOneWidget); // await _navigateBackUsingSystemGesture(); // // await $.native.pressBack().then((_) => $.pumpAndSettle()); // } }, ); } static Future registerScreen() async { patrolWidgetTest( 'registerScreen', (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Vehicle Register Page'); await _loggedWithMultiLocalsAccount(); await _initVehicleModule(); await $.pumpAndSettle(); await $.pumpWidgetAndSettle(const App()); ff.navigatorKey.currentContext!.go('/vehiclesOnThePropertyPage'); final PatrolFinder tab2 = await $(#TabView_Tab2) // .waitUntilExists(); await tab2.tap(); final PatrolFinder licensePlateField = await $(TextField).at(0).waitUntilVisible(); final PatrolFinder modelField = await $(TextField).at(1).waitUntilVisible(); final PatrolFinder colorField = await $(TextField).at(2).waitUntilVisible(); final PatrolFinder submitButton = await $(SubmitButtonUtil).waitUntilVisible(); await licensePlateField.enterText('ABC1234'); await modelField.enterText('Voyage'); await colorField.enterText('Black'); await submitButton.tap(); await $.pumpAndSettle(); final PatrolFinder successDialog = await $(Dialog).waitUntilVisible(); expect(successDialog, findsOneWidget); }, ); } static Future updateScreen() async { patrolWidgetTest( 'updateScreen', (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Vehicle Update Page'); await _loggedWithMultiLocalsAccount(); await _initVehicleModule(); await $.pumpAndSettle(); await $.pumpWidgetAndSettle(const App()); ff.navigatorKey.currentContext!.go('/vehiclesOnThePropertyPage'); final PatrolFinder tab1 = await $(#TabView_Tab1) // .waitUntilExists(); await tab1.tap(); final PatrolFinder listViewFinder = await $(VehicleHistoryScreen) // .$(ListView) .waitUntilVisible(); expect(listViewFinder, findsOneWidget); final PatrolFinder entriesFinder = await $(listViewFinder) .$(CardItemTemplateComponentWidget) .waitUntilVisible(); expect(entriesFinder, findsWidgets); await $(entriesFinder.at(0)).tap(); final PatrolFinder editButton = await $(FFButtonWidget).$('Edit').waitUntilVisible(); await editButton.tap(); final PatrolFinder licensePlateField = await $(TextField).at(0).waitUntilVisible(); final PatrolFinder modelField = await $(TextField).at(1).waitUntilVisible(); final PatrolFinder colorField = await $(TextField).at(2).waitUntilVisible(); final PatrolFinder submitButton = await $(SubmitButtonUtil).waitUntilVisible(); await licensePlateField.enterText('XYZ5678'); await modelField.enterText('Fiesta'); await colorField.enterText('Red'); await submitButton.tap(); await $.pumpAndSettle(); final PatrolFinder successDialog = await $(Dialog).waitUntilVisible(); expect(successDialog, findsOneWidget); }, ); } }