diff --git a/lib/widgets/aves_app.dart b/lib/widgets/aves_app.dart index ef35eb8fb..995ad2040 100644 --- a/lib/widgets/aves_app.dart +++ b/lib/widgets/aves_app.dart @@ -129,8 +129,6 @@ class _AvesAppState extends State { locale: settingsLocale, localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: AppLocalizations.supportedLocales, - // checkerboardRasterCacheImages: true, - // checkerboardOffscreenLayers: true, ); }, ); diff --git a/lib/widgets/debug/app_debug_action.dart b/lib/widgets/debug/app_debug_action.dart index ffb0c8f1c..53583901d 100644 --- a/lib/widgets/debug/app_debug_action.dart +++ b/lib/widgets/debug/app_debug_action.dart @@ -2,4 +2,5 @@ enum AppDebugAction { prepScreenshotThumbnails, prepScreenshotStats, mediaStoreScanDir, + greenScreen, } diff --git a/lib/widgets/debug/app_debug_page.dart b/lib/widgets/debug/app_debug_page.dart index 40c475603..05beb7b64 100644 --- a/lib/widgets/debug/app_debug_page.dart +++ b/lib/widgets/debug/app_debug_page.dart @@ -184,6 +184,17 @@ class _AppDebugPageState extends State { builder: (context) => const MediaStoreScanDirDialog(), ); break; + case AppDebugAction.greenScreen: + await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const Scaffold( + backgroundColor: Colors.green, + body: SizedBox(), + ), + ), + ); + break; } } } diff --git a/lib/widgets/debug/media_store_scan_dialog.dart b/lib/widgets/debug/media_store_scan_dialog.dart index 056734252..6c07e3c86 100644 --- a/lib/widgets/debug/media_store_scan_dialog.dart +++ b/lib/widgets/debug/media_store_scan_dialog.dart @@ -35,7 +35,7 @@ class _MediaStoreScanDirDialogState extends State { final dir = _pathController.text; if (dir.isNotEmpty) { setState(() => _processing = true); - await Future.forEach(Directory(dir).listSync(), (file) async { + await Future.forEach(Directory(dir).listSync(recursive: true), (file) async { if (file is File) { final mimeType = MimeTypes.forExtension(p.extension(file.path)); await mediaStoreService.scanFile(file.path, mimeType!); diff --git a/test_driver/common_test.dart b/test_driver/common_test.dart index 17723a98f..704c0b3fd 100644 --- a/test_driver/common_test.dart +++ b/test_driver/common_test.dart @@ -4,13 +4,20 @@ `dart:ui`, `flutter/widgets.dart', etc. */ -const shadersSourcePicturesDir = 'test_driver/assets/shaders/'; -const shadersTargetPicturesDir = '/sdcard/Pictures/Aves Test Driver/'; -const shadersTargetPicturesDirEmulated = '/storage/emulated/0/Pictures/Aves Test Driver'; +const adbRoot = '/sdcard'; +const androidRoot = '/storage/emulated/0'; + +const shadersSourceDir = 'test_driver/assets/shaders/'; +const shadersTargetDirAdb = '$adbRoot/Pictures/Aves Test Driver/'; +const shadersTargetDirAndroid = '$androidRoot/Pictures/Aves Test Driver'; // Cover items should be: // - dated in the future, // - geotagged for each country to cover. -const coversSourcePicturesDir = 'test_driver/assets/screenshots/covers'; -const coversTargetPicturesDir = '/sdcard/Pictures/TD/Aves/'; -const coversTargetPicturesDirEmulated = '/storage/emulated/0/Pictures/TD/Aves'; +// Viewer items should be: +// - larger than screen, +// - located, +// - tagged (one tag only, so filter chips fit on one line). +const screenshotsSourceDir = 'test_driver/assets/screenshots/'; +const screenshotsTargetDirAdb = '$adbRoot/Pictures/TD/Aves/'; +const screenshotsTargetDirAndroid = '$androidRoot/Pictures/TD/Aves'; diff --git a/test_driver/driver_screenshots.dart b/test_driver/driver_screenshots.dart index 29eacaeb6..652746749 100644 --- a/test_driver/driver_screenshots.dart +++ b/test_driver/driver_screenshots.dart @@ -38,7 +38,7 @@ Future configureAndLaunch() async { ..viewerUseCutout = true // info ..infoMapStyle = EntryMapStyle.stamenWatercolor - ..infoMapZoom = 11 + ..infoMapZoom = 13 ..coordinateFormat = CoordinateFormat.dms ..unitSystem = UnitSystem.metric; app.main(); diff --git a/test_driver/driver_screenshots_test.dart b/test_driver/driver_screenshots_test.dart index 135693c99..fafa54f18 100644 --- a/test_driver/driver_screenshots_test.dart +++ b/test_driver/driver_screenshots_test.dart @@ -21,7 +21,7 @@ void main() { setUpAll(() async { await Directory(outputDirectory).create(); - await copyContent(coversSourcePicturesDir, coversTargetPicturesDir); + await copyContent(screenshotsSourceDir, screenshotsTargetDirAdb); await Future.forEach( [ 'deckers.thibault.aves.debug', @@ -35,11 +35,11 @@ void main() { }); tearDownAll(() async { - await removeDirectory(coversTargetPicturesDir); + await removeDirectory(screenshotsTargetDirAdb); unawaited(driver.close()); }); - test('scan media dir', () => driver.scanMediaDir(coversTargetPicturesDirEmulated)); + test('scan media dir', () => driver.scanMediaDir(screenshotsTargetDirAndroid)); SupportedLocales.languagesByLanguageCode.keys.forEach((languageCode) { setLanguage(languageCode); configureCollectionVisibility(AppDebugAction.prepScreenshotThumbnails); @@ -110,11 +110,10 @@ void collection() { void viewer() { test('2. Viewer', () async { - const query = 'Singapore 087 Zoo - Douc langur'; - await driver.tapKeyAndWait('appbar-leading-button'); await driver.tapKeyAndWait('drawer-type-null'); - await _search(query, 'query-$query'); + + await _search('viewer', 'album-$screenshotsTargetDirAndroid/viewer'); // delay to avoid flaky descendant resolution await Future.delayed(const Duration(seconds: 2)); diff --git a/test_driver/driver_shaders_test.dart b/test_driver/driver_shaders_test.dart index 92d3cfb7d..710221e1c 100644 --- a/test_driver/driver_shaders_test.dart +++ b/test_driver/driver_shaders_test.dart @@ -15,7 +15,7 @@ late FlutterDriver driver; void main() { group('[Aves app]', () { setUpAll(() async { - await copyContent(shadersSourcePicturesDir, shadersTargetPicturesDir); + await copyContent(shadersSourceDir, shadersTargetDirAdb); await Future.forEach( [ 'deckers.thibault.aves.debug', @@ -29,11 +29,11 @@ void main() { }); tearDownAll(() async { - await removeDirectory(shadersTargetPicturesDir); + await removeDirectory(shadersTargetDirAdb); unawaited(driver.close()); }); - test('scan media dir', () => driver.scanMediaDir(shadersTargetPicturesDirEmulated)); + test('scan media dir', () => driver.scanMediaDir(shadersTargetDirAndroid)); agreeToTerms(); visitAbout(); visitSettings(); @@ -160,7 +160,7 @@ void searchAlbum() { test('[collection] search album', () async { await driver.tapKeyAndWait('menu-searchCollection'); - const albumPath = shadersTargetPicturesDirEmulated; + const albumPath = shadersTargetDirAndroid; final albumDisplayName = p.split(albumPath).last; await driver.tap(find.byType('TextField')); await driver.enterText(albumDisplayName);