driver: screenshot generation WIP
This commit is contained in:
parent
573e6df1c7
commit
1b08c36429
8 changed files with 36 additions and 20 deletions
|
@ -129,8 +129,6 @@ class _AvesAppState extends State<AvesApp> {
|
|||
locale: settingsLocale,
|
||||
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||
supportedLocales: AppLocalizations.supportedLocales,
|
||||
// checkerboardRasterCacheImages: true,
|
||||
// checkerboardOffscreenLayers: true,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
|
|
@ -2,4 +2,5 @@ enum AppDebugAction {
|
|||
prepScreenshotThumbnails,
|
||||
prepScreenshotStats,
|
||||
mediaStoreScanDir,
|
||||
greenScreen,
|
||||
}
|
||||
|
|
|
@ -184,6 +184,17 @@ class _AppDebugPageState extends State<AppDebugPage> {
|
|||
builder: (context) => const MediaStoreScanDirDialog(),
|
||||
);
|
||||
break;
|
||||
case AppDebugAction.greenScreen:
|
||||
await Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => const Scaffold(
|
||||
backgroundColor: Colors.green,
|
||||
body: SizedBox(),
|
||||
),
|
||||
),
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ class _MediaStoreScanDirDialogState extends State<MediaStoreScanDirDialog> {
|
|||
final dir = _pathController.text;
|
||||
if (dir.isNotEmpty) {
|
||||
setState(() => _processing = true);
|
||||
await Future.forEach<FileSystemEntity>(Directory(dir).listSync(), (file) async {
|
||||
await Future.forEach<FileSystemEntity>(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!);
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -38,7 +38,7 @@ Future<void> configureAndLaunch() async {
|
|||
..viewerUseCutout = true
|
||||
// info
|
||||
..infoMapStyle = EntryMapStyle.stamenWatercolor
|
||||
..infoMapZoom = 11
|
||||
..infoMapZoom = 13
|
||||
..coordinateFormat = CoordinateFormat.dms
|
||||
..unitSystem = UnitSystem.metric;
|
||||
app.main();
|
||||
|
|
|
@ -21,7 +21,7 @@ void main() {
|
|||
setUpAll(() async {
|
||||
await Directory(outputDirectory).create();
|
||||
|
||||
await copyContent(coversSourcePicturesDir, coversTargetPicturesDir);
|
||||
await copyContent(screenshotsSourceDir, screenshotsTargetDirAdb);
|
||||
await Future.forEach<String>(
|
||||
[
|
||||
'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));
|
||||
|
|
|
@ -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<String>(
|
||||
[
|
||||
'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);
|
||||
|
|
Loading…
Reference in a new issue