import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:twp_softphone/app.dart'; import 'package:twp_softphone/screens/login_screen.dart'; void main() { group('TwpSoftphoneApp', () { testWidgets('shows loading indicator on startup', (tester) async { await tester.pumpWidget(const TwpSoftphoneApp()); expect(find.byType(TwpSoftphoneApp), findsOneWidget); expect(find.bySubtype(), findsOneWidget); }); }); group('LoginScreen', () { testWidgets('renders server URL field and connect button', (tester) async { await tester.pumpWidget( MaterialApp( home: LoginScreen(onLoginSuccess: (_) {}), ), ); await tester.pump(const Duration(milliseconds: 100)); expect(find.text('Server URL'), findsOneWidget); expect(find.text('Connect'), findsOneWidget); expect(find.text('TWP Softphone'), findsOneWidget); }); testWidgets('validates empty server URL on submit', (tester) async { await tester.pumpWidget( MaterialApp( home: LoginScreen(onLoginSuccess: (_) {}), ), ); await tester.pump(const Duration(milliseconds: 100)); await tester.tap(find.text('Connect')); await tester.pump(); expect(find.text('Required'), findsOneWidget); }); }); }