diff --git a/fastlane/metadata/android/de/images/phoneScreenshots/5.png b/fastlane/metadata/android/de/images/phoneScreenshots/5.png index 57c4486a7..988a95b07 100644 Binary files a/fastlane/metadata/android/de/images/phoneScreenshots/5.png and b/fastlane/metadata/android/de/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/de/images/phoneScreenshots/7.png b/fastlane/metadata/android/de/images/phoneScreenshots/7.png new file mode 100644 index 000000000..6d0ff3f96 Binary files /dev/null and b/fastlane/metadata/android/de/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png index f3dab5c44..1d4f88433 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png new file mode 100644 index 000000000..fd97f6418 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/es-MX/images/phoneScreenshots/5.png b/fastlane/metadata/android/es-MX/images/phoneScreenshots/5.png index 1ba1a7dab..98b0f8691 100644 Binary files a/fastlane/metadata/android/es-MX/images/phoneScreenshots/5.png and b/fastlane/metadata/android/es-MX/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/es-MX/images/phoneScreenshots/7.png b/fastlane/metadata/android/es-MX/images/phoneScreenshots/7.png new file mode 100644 index 000000000..59dff9ed5 Binary files /dev/null and b/fastlane/metadata/android/es-MX/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/fr/images/phoneScreenshots/5.png b/fastlane/metadata/android/fr/images/phoneScreenshots/5.png index 4be204f9e..d43e85964 100644 Binary files a/fastlane/metadata/android/fr/images/phoneScreenshots/5.png and b/fastlane/metadata/android/fr/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/fr/images/phoneScreenshots/7.png b/fastlane/metadata/android/fr/images/phoneScreenshots/7.png new file mode 100644 index 000000000..5c1e6cd36 Binary files /dev/null and b/fastlane/metadata/android/fr/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/id/images/phoneScreenshots/5.png b/fastlane/metadata/android/id/images/phoneScreenshots/5.png index 8cd52f414..e65c058db 100644 Binary files a/fastlane/metadata/android/id/images/phoneScreenshots/5.png and b/fastlane/metadata/android/id/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/id/images/phoneScreenshots/7.png b/fastlane/metadata/android/id/images/phoneScreenshots/7.png new file mode 100644 index 000000000..e3af538e6 Binary files /dev/null and b/fastlane/metadata/android/id/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/it/images/phoneScreenshots/5.png b/fastlane/metadata/android/it/images/phoneScreenshots/5.png index d32d10c16..af8bc2c4d 100644 Binary files a/fastlane/metadata/android/it/images/phoneScreenshots/5.png and b/fastlane/metadata/android/it/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/it/images/phoneScreenshots/7.png b/fastlane/metadata/android/it/images/phoneScreenshots/7.png new file mode 100644 index 000000000..fe36b22d3 Binary files /dev/null and b/fastlane/metadata/android/it/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/ja/images/phoneScreenshots/5.png b/fastlane/metadata/android/ja/images/phoneScreenshots/5.png index ddb1b9e31..a893c9401 100644 Binary files a/fastlane/metadata/android/ja/images/phoneScreenshots/5.png and b/fastlane/metadata/android/ja/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/ja/images/phoneScreenshots/7.png b/fastlane/metadata/android/ja/images/phoneScreenshots/7.png new file mode 100644 index 000000000..565e6ebef Binary files /dev/null and b/fastlane/metadata/android/ja/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/ko/images/phoneScreenshots/5.png b/fastlane/metadata/android/ko/images/phoneScreenshots/5.png index fb70394ab..e8ab9c453 100644 Binary files a/fastlane/metadata/android/ko/images/phoneScreenshots/5.png and b/fastlane/metadata/android/ko/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/ko/images/phoneScreenshots/7.png b/fastlane/metadata/android/ko/images/phoneScreenshots/7.png new file mode 100644 index 000000000..514fa72c2 Binary files /dev/null and b/fastlane/metadata/android/ko/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/5.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/5.png index 4dca8e8cd..79190592c 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/5.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/7.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/7.png new file mode 100644 index 000000000..ef878766c Binary files /dev/null and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/ru/images/phoneScreenshots/5.png b/fastlane/metadata/android/ru/images/phoneScreenshots/5.png index 0f8dff12e..94174ea57 100644 Binary files a/fastlane/metadata/android/ru/images/phoneScreenshots/5.png and b/fastlane/metadata/android/ru/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/ru/images/phoneScreenshots/7.png b/fastlane/metadata/android/ru/images/phoneScreenshots/7.png new file mode 100644 index 000000000..4951e7996 Binary files /dev/null and b/fastlane/metadata/android/ru/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/tr/images/phoneScreenshots/5.png b/fastlane/metadata/android/tr/images/phoneScreenshots/5.png index 34e9b3a1f..031655f8e 100644 Binary files a/fastlane/metadata/android/tr/images/phoneScreenshots/5.png and b/fastlane/metadata/android/tr/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/tr/images/phoneScreenshots/7.png b/fastlane/metadata/android/tr/images/phoneScreenshots/7.png new file mode 100644 index 000000000..001da561b Binary files /dev/null and b/fastlane/metadata/android/tr/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/5.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/5.png index a3e39f8a5..815a53272 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/5.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/7.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/7.png new file mode 100644 index 000000000..44b97b4c7 Binary files /dev/null and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/7.png differ diff --git a/lib/widgets/common/expandable_filter_row.dart b/lib/widgets/common/expandable_filter_row.dart index fc3083d93..fdb82904e 100644 --- a/lib/widgets/common/expandable_filter_row.dart +++ b/lib/widgets/common/expandable_filter_row.dart @@ -59,7 +59,7 @@ class ExpandableFilterRow extends StatelessWidget { final filterList = filters.toList(); final wrap = Container( - key: ValueKey('wrap$title'), + key: Key('wrap$title'), padding: const EdgeInsets.symmetric(horizontal: horizontalPadding), // specify transparent as a workaround to prevent // chip border clipping when the floating app bar is fading @@ -71,7 +71,7 @@ class ExpandableFilterRow extends StatelessWidget { ), ); final list = Container( - key: ValueKey('list$title'), + key: Key('list$title'), // specify transparent as a workaround to prevent // chip border clipping when the floating app bar is fading color: Colors.transparent, diff --git a/lib/widgets/common/map/buttons/button.dart b/lib/widgets/common/map/buttons/button.dart index 60aa8c56f..67416d296 100644 --- a/lib/widgets/common/map/buttons/button.dart +++ b/lib/widgets/common/map/buttons/button.dart @@ -7,12 +7,14 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class MapOverlayButton extends StatelessWidget { + final Key? buttonKey; final Widget icon; final String tooltip; final VoidCallback? onPressed; const MapOverlayButton({ super.key, + this.buttonKey, required this.icon, required this.tooltip, required this.onPressed, @@ -40,6 +42,7 @@ class MapOverlayButton extends StatelessWidget { child: Selector( selector: (context, v) => v.visualDensity, builder: (context, visualDensity, child) => IconButton( + key: buttonKey, iconSize: 20, visualDensity: visualDensity, icon: icon, diff --git a/lib/widgets/common/map/buttons/panel.dart b/lib/widgets/common/map/buttons/panel.dart index 62377021b..30e33be5c 100644 --- a/lib/widgets/common/map/buttons/panel.dart +++ b/lib/widgets/common/map/buttons/panel.dart @@ -123,6 +123,8 @@ class MapButtonPanel extends StatelessWidget { Padding( padding: EdgeInsets.only(top: padding), child: MapOverlayButton( + // key is expected by test driver + buttonKey: const Key('map-menu-layers'), icon: const Icon(AIcons.layers), onPressed: () => showSelectionDialog( context: context, diff --git a/lib/widgets/viewer/visual/entry_page_view.dart b/lib/widgets/viewer/visual/entry_page_view.dart index c992df9c3..537ade116 100644 --- a/lib/widgets/viewer/visual/entry_page_view.dart +++ b/lib/widgets/viewer/visual/entry_page_view.dart @@ -376,7 +376,7 @@ class _EntryPageViewState extends State { return Magnifier( // key includes modified date to refresh when the image is modified by metadata (e.g. rotated) - key: ValueKey('${entry.uri}_${entry.pageId}_${entry.dateModifiedSecs}'), + key: Key('${entry.uri}_${entry.pageId}_${entry.dateModifiedSecs}'), controller: controller ?? _magnifierController, childSize: displaySize ?? entry.displaySize, allowOriginalScaleBeyondRange: !isWallpaperMode, diff --git a/test_driver/driver_screenshots.dart b/test_driver/driver_screenshots.dart index b13e1e5bc..f4de8d3f8 100644 --- a/test_driver/driver_screenshots.dart +++ b/test_driver/driver_screenshots.dart @@ -3,7 +3,6 @@ import 'package:aves/model/settings/defaults.dart'; import 'package:aves/model/settings/enums/enums.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/enums.dart'; -import 'package:aves_map/src/style.dart'; import 'package:aves/widgets/filter_grids/countries_page.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -46,7 +45,6 @@ Future configureAndLaunch() async { ..showOverlayThumbnailPreview = false ..viewerUseCutout = true // info - ..infoMapStyle = EntryMapStyle.stamenWatercolor ..infoMapZoom = 13 ..coordinateFormat = CoordinateFormat.dms ..unitSystem = UnitSystem.metric; diff --git a/test_driver/driver_screenshots_test.dart b/test_driver/driver_screenshots_test.dart index 30b61c8a2..3233563ea 100644 --- a/test_driver/driver_screenshots_test.dart +++ b/test_driver/driver_screenshots_test.dart @@ -56,6 +56,7 @@ void main() { info(); stats(); countries(); + map(); }); }, timeout: const Timeout(Duration(seconds: 30))); } @@ -64,10 +65,15 @@ Future _search(String query, String chipKey) async { await driver.tapKeyAndWait('menu-searchCollection'); await driver.tap(find.byType('TextField')); await driver.enterText(query); - final chip = find.byValueKey(chipKey); - await driver.waitFor(chip); - await driver.tap(chip); - await driver.waitUntilNoTransientCallbacks(); + await driver.tapKeyAndWait(chipKey); +} + +Future _selectMapStyle(String style) async { + await driver.tapKeyAndWait('map-menu-layers'); + await driver.tapKeyAndWait('EntryMapStyle.$style'); + + // tiles may take time to load + await Future.delayed(const Duration(seconds: 5)); } Future _takeScreenshot(FlutterDriver driver, String name) async { @@ -152,8 +158,7 @@ void info() { final verticalPageView = find.byValueKey('vertical-pageview'); await driver.scrollY(verticalPageView, -600); - // tiles may take time to load - await Future.delayed(const Duration(seconds: 5)); + await _selectMapStyle('stamenWatercolor'); await _takeScreenshot(driver, '3'); @@ -184,7 +189,7 @@ void stats() { final maxYear = DateTime.now().year + 1; final maxQuery = 'year<$maxYear'; - const minQuery = 'year>2012'; + const minQuery = 'year>2005'; await _search(maxQuery, 'query-$maxQuery'); await _search(minQuery, 'query-$minQuery'); @@ -206,3 +211,23 @@ void countries() { await _takeScreenshot(driver, '6'); }); } + +void map() { + test('7. Map', () async { + await driver.tapKeyAndWait('appbar-leading-button'); + await driver.tapKeyAndWait('drawer-type-null'); + + await _search('animals', 'tag-animals'); + await _search('Singapore', 'location-LocationLevel.country-Singapore'); + + await driver.tapKeyAndWait('appbar-menu-button'); + await driver.tapKeyAndWait('menu-map'); + + await _selectMapStyle('googleTerrain'); + + await _takeScreenshot(driver, '7'); + + await pressDeviceBackButton(); + await driver.waitUntilNoTransientCallbacks(); + }); +} diff --git a/test_driver/driver_shaders_test.dart b/test_driver/driver_shaders_test.dart index ce48c1eed..9abd1fb42 100644 --- a/test_driver/driver_shaders_test.dart +++ b/test_driver/driver_shaders_test.dart @@ -165,10 +165,7 @@ void searchAlbum() { await driver.tap(find.byType('TextField')); await driver.enterText(albumDisplayName); - final albumChip = find.byValueKey('album-$albumPath'); - await driver.waitFor(albumChip); - await driver.tap(albumChip); - await driver.waitUntilNoTransientCallbacks(); + await driver.tapKeyAndWait('album-$albumPath'); }); } diff --git a/test_driver/utils/driver_extension.dart b/test_driver/utils/driver_extension.dart index 88f4ea6a2..dcb2719e9 100644 --- a/test_driver/utils/driver_extension.dart +++ b/test_driver/utils/driver_extension.dart @@ -1,3 +1,4 @@ +// ignore_for_file: avoid_print import 'package:aves/widgets/debug/app_debug_action.dart'; import 'package:flutter_driver/flutter_driver.dart'; @@ -19,7 +20,10 @@ extension ExtraFlutterDriver on FlutterDriver { } Future tapKeyAndWait(String key) async { - await tap(find.byValueKey(key)); + print(' find key=$key'); + final finder = find.byValueKey(key); + await waitFor(finder); + await tap(finder); await waitUntilNoTransientCallbacks(); }