Fixed Android screenshots generator

This commit is contained in:
Vadim 2024-04-19 16:59:00 +02:00
parent d9ce47e0dd
commit 6dd17961b5
2 changed files with 46 additions and 41 deletions

View file

@ -46,7 +46,7 @@ class _MockIAPProvidersState extends State<MockIAPProviders> {
storageService: mockIAPStorageService, storageService: mockIAPStorageService,
child: FilmsProvider( child: FilmsProvider(
storageService: mockIAPStorageService, storageService: mockIAPStorageService,
availableFilms: mockFilms, availableFilms: widget.films ?? mockFilms,
child: widget.child, child: widget.child,
), ),
); );

View file

@ -22,6 +22,8 @@ import '../integration_test/utils/widget_tester_actions.dart';
//https://stackoverflow.com/a/67186625/13167574 //https://stackoverflow.com/a/67186625/13167574
const _mockFilm = Film('Ilford HP5+', 400);
/// Just a screenshot generator. No expectations here. /// Just a screenshot generator. No expectations here.
void main() { void main() {
final binding = IntegrationTestWidgetsFlutterBinding(); final binding = IntegrationTestWidgetsFlutterBinding();
@ -62,12 +64,17 @@ void main() {
}); });
} }
setUpAll(() async {
if (Platform.isAndroid) await binding.convertFlutterSurfaceToImage();
});
/// Generates several screenshots with the light theme /// Generates several screenshots with the light theme
testWidgets( testWidgets('Generate light theme screenshots', (tester) async {
'Generate light theme screenshots',
(tester) async {
mockSharedPrefs(ThemeType.light, lightThemeColor); mockSharedPrefs(ThemeType.light, lightThemeColor);
await tester.pumpApplication(); await tester.pumpApplication(
films: [_mockFilm],
selectedFilm: _mockFilm,
);
await tester.takePhoto(); await tester.takePhoto();
await tester.takeScreenshot(binding, 'light-metering_reflected'); await tester.takeScreenshot(binding, 'light-metering_reflected');
@ -100,15 +107,17 @@ void main() {
await tester.tap(find.byIcon(Icons.iso).first); await tester.tap(find.byIcon(Icons.iso).first);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.takeScreenshot(binding, 'light-equipment_profiles_iso_picker'); await tester.takeScreenshot(binding, 'light-equipment_profiles_iso_picker');
} });
);
/// and the additionally the first one with the dark theme /// and the additionally the first one with the dark theme
testWidgets( testWidgets(
'Generate dark theme screenshots', 'Generate dark theme screenshots',
(tester) async { (tester) async {
mockSharedPrefs(ThemeType.dark, darkThemeColor); mockSharedPrefs(ThemeType.dark, darkThemeColor);
await tester.pumpApplication(); await tester.pumpApplication(
films: [_mockFilm],
selectedFilm: _mockFilm,
);
await tester.takePhoto(); await tester.takePhoto();
await tester.takeScreenshot(binding, 'dark-metering_reflected'); await tester.takeScreenshot(binding, 'dark-metering_reflected');
@ -127,10 +136,6 @@ final String _platformFolder = Platform.isAndroid ? 'android' : 'ios';
extension on WidgetTester { extension on WidgetTester {
Future<void> takeScreenshot(IntegrationTestWidgetsFlutterBinding binding, String name) async { Future<void> takeScreenshot(IntegrationTestWidgetsFlutterBinding binding, String name) async {
if (Platform.isAndroid) {
await binding.convertFlutterSurfaceToImage();
await pumpAndSettle();
}
await binding.takeScreenshot("$_platformFolder/${const String.fromEnvironment('deviceName')}/$name"); await binding.takeScreenshot("$_platformFolder/${const String.fromEnvironment('deviceName')}/$name");
await pumpAndSettle(); await pumpAndSettle();
} }