Testing taking screenshots in GitHub Actions.
See Notion > Integration Testing
Following these articles
- Take screenshot during Flutter integration tests - DEV Community
- Flutter automated screenshot testing using the integration_test package | Codemagic Blog
And running flutter drive --driver=integration_test/screenshot_test_driver.dart --target=integration_test/screenshot_test.dart -d <iphone_emulator_id>
gives:
flutter: 'package:flutter/src/foundation/binding.dart':
Failed assertion: line 55 pos 12:
flutter: '!_debugInitialized': is not true.
Importing flutter_driver
flutter_driver:
sdk: flutter
And adding enableFlutterDriverExtension();
as the first line of main()
in screenshot_test_driver.dart
gives:
../../SDKs/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show ImageFilter;
^
../../SDKs/flutter/packages/flutter/lib/src/cupertino/colors.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show Color, Brightness;
^
...
Updating code to match the latest instructions at: https://github.com/flutter/flutter/tree/master/packages/integration_test
Gives the error described in: flutter/flutter#91668
Using the workaround described in the issue, ie.
updating flutter/packages/integration_test/ios/Classes/IntegrationTestPlugin.m
by adding a body to:
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
to make it:
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
[[IntegrationTestPlugin instance] setupChannels:registrar.messenger];
}
And screenshots now work.
flutter drive \
--driver=test_driver/integration_test.dart \
--target=integration_test/screenshot_test.dart
Saving the image data in the integration test allows us to use:
flutter test integration_test/screenshot_test.dart
And remove the driver code.