// Tests E2E (integration_test). Corren sobre dispositivo/emulador real: // // flutter test integration_test/app_boot_test.dart // // A diferencia de los widget tests de `test/`, estos arrancan la app completa // (router, Riverpod, tema) en un binding de integración, sirviendo de base para // flujos end-to-end (login → POS → venta) en sprints siguientes. import 'package:enter_farma_plus_mobile/src/app/enter_farma_plus_app.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:integration_test/integration_test.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); GoogleFonts.config.allowRuntimeFetching = false; group('Arranque de la app (E2E)', () { testWidgets('arranca y aterriza en la pantalla de login', (tester) async { await tester.pumpWidget(const ProviderScope(child: EnterFarmaPlusApp())); // Deja pasar el splash. await tester.pump(const Duration(milliseconds: 1800)); await tester.pumpAndSettle(const Duration(seconds: 3)); expect(find.byType(EnterFarmaPlusApp), findsOneWidget); // Sin sesión persistida, debe mostrar el formulario de login. expect(find.byKey(const ValueKey('ruc_field')), findsOneWidget); expect(find.byKey(const ValueKey('password_field')), findsOneWidget); }); testWidgets('el campo RUC acepta entrada de texto', (tester) async { await tester.pumpWidget(const ProviderScope(child: EnterFarmaPlusApp())); await tester.pump(const Duration(milliseconds: 1800)); await tester.pumpAndSettle(const Duration(seconds: 3)); final rucField = find.byKey(const ValueKey('ruc_field')); expect(rucField, findsOneWidget); await tester.enterText(rucField, '00000000000'); await tester.pump(); expect(find.text('00000000000'), findsOneWidget); }); }); }