diff --git a/integration_test/settings/in_app_internet_test.dart b/integration_test/settings/in_app_internet_test.dart new file mode 100644 index 0000000..7c51d76 --- /dev/null +++ b/integration_test/settings/in_app_internet_test.dart @@ -0,0 +1,37 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:vernet/main.dart'; +import 'package:vernet/values/keys.dart'; + +import 'test_utils.dart'; + +void main() { + group('In App Internet Test', () { + testWidgets('test', (tester) async { + await tester.pumpWidget(const MyApp(true)); + await tester.pumpAndSettle(); + + await TestUtils.tapSettingsButton(tester, find); + + await TestUtils.tapByWidgetKey( + WidgetKey.inAppInternetSwitch, + tester, + find, + ); + + await TestUtils.scrollUntilVisibleByWidgetKey( + WidgetKey.checkForUpdatesButton, + tester, + find, + 200.0, + ); + + await TestUtils.tapByWidgetKey( + WidgetKey.checkForUpdatesButton, + tester, + find, + ); + + await tester.pumpAndSettle(const Duration(seconds: 3)); + }); + }); +} diff --git a/integration_test/settings/settings_test.dart b/integration_test/settings/settings_test.dart index 8aef014..a0bcd48 100644 --- a/integration_test/settings/settings_test.dart +++ b/integration_test/settings/settings_test.dart @@ -1,7 +1,9 @@ import 'dark_theme_test.dart' as dark_theme_test; +import 'in_app_internet_test.dart' as in_app_internet_test; import 'subnet_tests.dart' as subnet_test; void main() { dark_theme_test.main(); subnet_test.main(); + in_app_internet_test.main(); } diff --git a/integration_test/settings/test_utils.dart b/integration_test/settings/test_utils.dart index 46d6d23..12a0585 100644 --- a/integration_test/settings/test_utils.dart +++ b/integration_test/settings/test_utils.dart @@ -10,6 +10,13 @@ class TestUtils { await tapByWidgetKey(WidgetKey.settingsButton, tester, find); } + static Future tapHomeButton( + WidgetTester tester, + CommonFinders find, + ) async { + await tapByWidgetKey(WidgetKey.homeButton, tester, find); + } + static Future tapByText( String text, WidgetTester tester, diff --git a/integration_test/wifi_test/run_scan_on_startup_test.dart b/integration_test/wifi_test/run_scan_on_startup_test.dart new file mode 100644 index 0000000..416b2b0 --- /dev/null +++ b/integration_test/wifi_test/run_scan_on_startup_test.dart @@ -0,0 +1,29 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:vernet/main.dart'; +import 'package:vernet/values/keys.dart'; + +import '../settings/test_utils.dart'; + +void main() { + group('Run device scan on startup', () { + testWidgets('if settings for startup is on, then it should run', + (tester) async { + await tester.pumpWidget(const MyApp(true)); + await tester.pumpAndSettle(); + + await TestUtils.tapSettingsButton(tester, find); + + await TestUtils.tapByWidgetKey( + WidgetKey.runOnAppStartupSwitch, + tester, + find, + ); + + await TestUtils.tapHomeButton(tester, find); + + await tester.pumpAndSettle(const Duration(seconds: 5)); + + expect(find.byKey(WidgetKey.runScanOnStartup.key), findsOne); + }); + }); +} diff --git a/integration_test/wifi_test/wifi_test_runner.dart b/integration_test/wifi_test/wifi_test_runner.dart index 596b585..163e93c 100644 --- a/integration_test/wifi_test/wifi_test_runner.dart +++ b/integration_test/wifi_test/wifi_test_runner.dart @@ -1,5 +1,7 @@ import 'host_scan_and_port_scan_test.dart' as host_scan_and_port_scan; +import 'run_scan_on_startup_test.dart' as run_scan_on_startup; void main() { host_scan_and_port_scan.main(); + run_scan_on_startup.main(); } diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index 9aa2329..378c7f5 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -113,6 +113,7 @@ class _WifiDetailState extends State { Widget _getDeviceCountWidget() { if (appSettings.runScanOnStartup) { return Row( + key: WidgetKey.runScanOnStartup.key, children: [ Text( '${devices.length} devices ${scanRunning ? 'found' : 'connected'}', diff --git a/lib/pages/settings_page.dart b/lib/pages/settings_page.dart index 62e1396..aae22c1 100644 --- a/lib/pages/settings_page.dart +++ b/lib/pages/settings_page.dart @@ -51,6 +51,7 @@ class _SettingsPageState extends State { child: AdaptiveListTile( title: const Text('In-App Internet'), trailing: Switch( + key: WidgetKey.inAppInternetSwitch.key, value: appSettings.inAppInternet, onChanged: (bool? value) async { appSettings.setInAppInternet(value ?? false); @@ -64,6 +65,7 @@ class _SettingsPageState extends State { child: AdaptiveListTile( title: const Text('Run scan on app startup'), trailing: Switch( + key: WidgetKey.runOnAppStartupSwitch.key, value: appSettings.runScanOnStartup, onChanged: (bool? value) async { appSettings.setRunScanOnStartup(value ?? false); @@ -187,6 +189,7 @@ class _SettingsPageState extends State { child: AdaptiveListTile( title: const Text('Check for Updates'), trailing: IconButton( + key: WidgetKey.checkForUpdatesButton.key, icon: const Icon(Icons.refresh), onPressed: () { checkForUpdates(context, showIfNoUpdate: true); diff --git a/lib/values/keys.dart b/lib/values/keys.dart index 2e2df71..46a6732 100644 --- a/lib/values/keys.dart +++ b/lib/values/keys.dart @@ -12,13 +12,17 @@ enum WidgetKey implements Comparable { pingSummaryReceived('pingSummaryReceived'), enterPortTextField('enterPortTextField'), veryShortPortChip('veryShortPortChip'), + runScanOnStartup('runScanOnStartup'), rescanIconButton('rescanIconButton'), changeThemeTile('changeThemeTile'), + inAppInternetSwitch('inAppInternetSwitch'), + checkForUpdatesButton('checkForUpdatesButton'), pingSummarySent('pingSummarySent'), dnsLookupButton('dnsLookupButton'), portScanButton('portScanButton'), customSubnetTile('customSubnetTile'), firstSubnetTile('firstSubnetTile'), + runOnAppStartupSwitch('runOnAppStartupSwitch'), lastSubnetTile('lastSubnetTile'), socketTimeoutTile('socketTimeoutTile'), pingCountTile('pingCountTile'),