diff --git a/lib/main.dart b/lib/main.dart index bf915ed7f..3d4165dd2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -91,6 +91,7 @@ class _AvesAppState extends State { : 'debug'); }); await settings.init(); + await settings.initCrashlytics(); } void _onNewIntent() { diff --git a/lib/model/settings/settings.dart b/lib/model/settings/settings.dart index 8c5e1c808..b4fd396da 100644 --- a/lib/model/settings/settings.dart +++ b/lib/model/settings/settings.dart @@ -53,10 +53,11 @@ class Settings extends ChangeNotifier { Future init() async { _prefs = await SharedPreferences.getInstance(); - await _setupCrashlytics(); } - Future _setupCrashlytics() async { + // Crashlytics initialization is separated from the main settings initialization + // to allow settings customization without Firebase context (e.g. before a Flutter Driver test) + Future initCrashlytics() async { await Firebase.app().setAutomaticDataCollectionEnabled(isCrashlyticsEnabled); await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(isCrashlyticsEnabled); } @@ -75,7 +76,7 @@ class Settings extends ChangeNotifier { set isCrashlyticsEnabled(bool newValue) { setAndNotify(isCrashlyticsEnabledKey, newValue); - unawaited(_setupCrashlytics()); + unawaited(initCrashlytics()); } bool get mustBackTwiceToExit => getBoolOrDefault(mustBackTwiceToExitKey, true); diff --git a/test_driver/app.dart b/test_driver/app.dart index bdcefcfd7..75f37bf9c 100644 --- a/test_driver/app.dart +++ b/test_driver/app.dart @@ -1,4 +1,6 @@ import 'package:aves/main.dart' as app; +import 'package:aves/model/settings/screen_on.dart'; +import 'package:aves/model/settings/settings.dart'; import 'package:aves/services/android_file_service.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:path/path.dart' as path; @@ -14,5 +16,12 @@ void main() { // because `MEDIA_SCANNER_SCAN_FILE` intent got deprecated in API 29 unawaited(AndroidFileService.scanFile(path.join(targetPicturesDir, 'ipse.jpg'), 'image/jpeg')); + configureAndLaunch(); +} + +Future configureAndLaunch() async { + await settings.init(); + settings.keepScreenOn = KeepScreenOn.always; + app.main(); } diff --git a/test_driver/app_test.dart b/test_driver/app_test.dart index d096e431a..2501488e4 100644 --- a/test_driver/app_test.dart +++ b/test_driver/app_test.dart @@ -11,7 +11,7 @@ import 'utils/driver_extension.dart'; FlutterDriver driver; void main() { - group('Aves app', () { + group('[Aves app]', () { print('adb=${[adb, ...adbDeviceParam].join(' ')}'); setUpAll(() async { @@ -60,19 +60,6 @@ void agreeToTerms() { }); } -void groupCollection() { - test('[collection] group', () async { - await driver.tap(find.byValueKey('appbar-menu-button')); - await driver.waitUntilNoTransientCallbacks(); - - await driver.tap(find.byValueKey('menu-group')); - await driver.waitUntilNoTransientCallbacks(); - - await driver.tap(find.byValueKey(EntryGroupFactor.album.toString())); - await driver.tap(find.byValueKey('apply-button')); - }); -} - void sortCollection() { test('[collection] sort', () async { await driver.tap(find.byValueKey('appbar-menu-button')); @@ -82,7 +69,18 @@ void sortCollection() { await driver.waitUntilNoTransientCallbacks(); await driver.tap(find.byValueKey(EntrySortFactor.date.toString())); - await driver.tap(find.byValueKey('apply-button')); + }); +} + +void groupCollection() { + test('[collection] group', () async { + await driver.tap(find.byValueKey('appbar-menu-button')); + await driver.waitUntilNoTransientCallbacks(); + + await driver.tap(find.byValueKey('menu-group')); + await driver.waitUntilNoTransientCallbacks(); + + await driver.tap(find.byValueKey(EntryGroupFactor.album.toString())); }); }