diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart index 96cb524..3e3943f 100644 --- a/integration_test/app_test.dart +++ b/integration_test/app_test.dart @@ -19,15 +19,22 @@ void main() { expect(find.byType(PlayerRegistry), findsOneWidget); // Add players - for (int i = 0; i < 6; i++) { - await tester.enterText(find.byType(TextField), 'Player $i'); + for (int i = 1; i <= 6; i++) { + // Find the TextField, enter text, and simulate the 'done' action on the keyboard + await tester.tap(find.byType(TextField).first); + await tester.enterText(find.byType(TextField).first, 'Player $i'); await tester.testTextInput.receiveAction(TextInputAction.done); + // Wait for the UI to settle before proceeding await tester.pumpAndSettle(); + // Debug print to check entered text + debugPrint('Entered Player $i'); } // Ensure all players are added - for (int i = 0; i < 6; i++) { + for (int i = 1; i <= 6; i++) { expect(find.text('Player $i'), findsOneWidget); + // Debug print to confirm text presence + debugPrint('Confirmed Player $i is present'); } // Navigate to GameSettings screen @@ -49,10 +56,39 @@ void main() { await tester.pumpAndSettle(); expect(find.byType(FlipingCard), findsOneWidget); + // Track player roles + Map playerRoles = {}; + // Flip through all players - for (int i = 0; i < 6; i++) { + for (int i = 1; i <= 5; i++) { await tester.tap(find.text('Klick um deine Rolle zu sehen!')); await tester.pumpAndSettle(); + + // Debug print to check the UI and role text + tester.allWidgets.forEach((widget) { + if (widget is Text) { + debugPrint('Text widget: ${widget.data}'); + } + }); + + // Assuming the role is displayed somewhere we can read + // Adjust the role extraction to how your app displays the role + String role = tester + .widgetList(find.byType(Text)) + .map((e) => e.data!) + .firstWhere( + (text) => + text.contains('Dorfbewohner') || + text.contains('Werwolf') || + text.contains('Joker'), + orElse: () => 'Unknown'); + + if (role == 'Unknown') { + throw StateError('No valid role found for Player $i'); + } + + playerRoles['Player $i'] = role; + await tester.tap(find.text('Nächster Spieler')); await tester.pumpAndSettle(); } @@ -62,15 +98,21 @@ void main() { await tester.pumpAndSettle(); expect(find.byType(PlayerGridView), findsOneWidget); - // Tap to kill a player - await tester.tap(find.text('Player 0')); + // Find a player who is not a Werewolf to kill + String playerToKill = playerRoles.entries + .firstWhere((entry) => entry.value != 'Werwolf') + .key; + + // Tap to kill a non-Werewolf player + await tester.tap(find.text(playerToKill)); await tester.pumpAndSettle(); expect(find.byIcon(Icons.close), findsOneWidget); + expect(find.byIcon(Icons.wb_sunny), findsOneWidget); // Skip phase - await tester.tap(find.text('Tag skippen')); + await tester.tap(find.byType(ElevatedButton).first); await tester.pumpAndSettle(); - expect(find.text('Nacht skippen'), findsOneWidget); + expect(find.byIcon(Icons.nights_stay), findsOneWidget); }); }); }