import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:frontend/home/home_screen.dart'; import 'package:http_mock_adapter/http_mock_adapter.dart'; import '../helpers/backend_test_harness.dart'; import '../helpers/fixtures.dart'; import '../helpers/pump_app.dart'; void main() { late DioAdapter adapter; setUp(() async { adapter = await setUpBackendForTest(); }); void stubHomeEndpoints() { adapter.onGet( '/notifications', (server) => server.reply( 200, pagedListJson([notificationJson(id: 1, title: 'New device found')]), ), ); adapter.onGet( '/devices/summary', (server) => server.reply(200, deviceSummaryJson(totalRegistered: 5)), ); adapter.onGet( '/arp_scanner/status', (server) => server.reply(200, intervalScannerJson(isRunning: true)), ); adapter.onGet( '/mdns_scanner/status', (server) => server.reply(200, listenerScannerJson(isListening: true)), ); adapter.onGet( '/ssdp_scanner/status', (server) => server.reply(200, listenerScannerJson()), ); adapter.onGet( '/dhcp_scanner/status', (server) => server.reply(200, listenerScannerJson()), ); adapter.onGet( '/snmp_scanner/status', (server) => server.reply(200, intervalScannerJson()), ); } testWidgets('shows notifications, the device summary and scanner statuses', ( tester, ) async { stubHomeEndpoints(); // Below the 700px breakpoint the home screen uses its single-column layout, // giving the cards full width and avoiding the cramped fixed-width side // column (whose rows overflow under the test font metrics). await pumpScreen(tester, const HomeScreen(), size: const Size(690, 2000)); await pumpUntilFound(tester, find.textContaining('New device found')); expect(find.textContaining('New device found'), findsOneWidget); expect(find.text('Registered in the system'), findsOneWidget); expect(find.text('5'), findsOneWidget); await tearDownTree(tester); }); }