mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2024-11-21 15:00:40 +00:00
Compare commits
2 commits
d9ce47e0dd
...
ec1f1eeeb4
Author | SHA1 | Date | |
---|---|---|---|
|
ec1f1eeeb4 | ||
|
6dd17961b5 |
4 changed files with 51 additions and 46 deletions
10
.github/workflows/create_release.yml
vendored
10
.github/workflows/create_release.yml
vendored
|
@ -87,11 +87,6 @@ jobs:
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Download apk
|
|
||||||
uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: m3_lightmeter_apk
|
|
||||||
|
|
||||||
- name: Increment build number & replace version number
|
- name: Increment build number & replace version number
|
||||||
run: bash ./.github/scripts/increment_build_number.sh ${{ github.event.inputs.version }}
|
run: bash ./.github/scripts/increment_build_number.sh ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
@ -109,6 +104,11 @@ jobs:
|
||||||
branch: ${{ github.ref_name }}
|
branch: ${{ github.ref_name }}
|
||||||
unprotect_reviews: true
|
unprotect_reviews: true
|
||||||
|
|
||||||
|
- name: Download apk
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: m3_lightmeter_apk
|
||||||
|
|
||||||
- name: Rename apk
|
- name: Rename apk
|
||||||
run: mv app-prod-release.apk m3_lightmeter.apk
|
run: mv app-prod-release.apk m3_lightmeter.apk
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -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,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -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,53 +64,60 @@ 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',
|
mockSharedPrefs(ThemeType.light, lightThemeColor);
|
||||||
(tester) async {
|
await tester.pumpApplication(
|
||||||
mockSharedPrefs(ThemeType.light, lightThemeColor);
|
films: [_mockFilm],
|
||||||
await tester.pumpApplication();
|
selectedFilm: _mockFilm,
|
||||||
|
);
|
||||||
|
|
||||||
await tester.takePhoto();
|
await tester.takePhoto();
|
||||||
await tester.takeScreenshot(binding, 'light-metering_reflected');
|
await tester.takeScreenshot(binding, 'light-metering_reflected');
|
||||||
|
|
||||||
if (Platform.isAndroid) {
|
if (Platform.isAndroid) {
|
||||||
await tester.tap(find.byTooltip(S.current.tooltipUseLightSensor));
|
await tester.tap(find.byTooltip(S.current.tooltipUseLightSensor));
|
||||||
await tester.pumpAndSettle();
|
|
||||||
await tester.toggleIncidentMetering(7.3);
|
|
||||||
await tester.takeScreenshot(binding, 'light-metering_incident');
|
|
||||||
}
|
|
||||||
|
|
||||||
await tester.openAnimatedPicker<IsoValuePicker>();
|
|
||||||
await tester.takeScreenshot(binding, 'light-metering_iso_picker');
|
|
||||||
|
|
||||||
await tester.tapCancelButton();
|
|
||||||
await tester.tap(find.byTooltip(S.current.tooltipOpenSettings));
|
|
||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
await tester.takeScreenshot(binding, 'light-settings');
|
await tester.toggleIncidentMetering(7.3);
|
||||||
|
await tester.takeScreenshot(binding, 'light-metering_incident');
|
||||||
await tester.tapDescendantTextOf<SettingsScreen>(S.current.meteringScreenLayout);
|
|
||||||
await tester.takeScreenshot(binding, 'light-settings_metering_screen_layout');
|
|
||||||
|
|
||||||
await tester.tapCancelButton();
|
|
||||||
await tester.tapDescendantTextOf<SettingsScreen>(S.current.equipmentProfiles);
|
|
||||||
await tester.pumpAndSettle();
|
|
||||||
await tester.tapDescendantTextOf<EquipmentProfilesScreen>(mockEquipmentProfiles.first.name);
|
|
||||||
await tester.pumpAndSettle();
|
|
||||||
await tester.takeScreenshot(binding, 'light-equipment_profiles');
|
|
||||||
|
|
||||||
await tester.tap(find.byIcon(Icons.iso).first);
|
|
||||||
await tester.pumpAndSettle();
|
|
||||||
await tester.takeScreenshot(binding, 'light-equipment_profiles_iso_picker');
|
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
await tester.openAnimatedPicker<IsoValuePicker>();
|
||||||
|
await tester.takeScreenshot(binding, 'light-metering_iso_picker');
|
||||||
|
|
||||||
|
await tester.tapCancelButton();
|
||||||
|
await tester.tap(find.byTooltip(S.current.tooltipOpenSettings));
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
await tester.takeScreenshot(binding, 'light-settings');
|
||||||
|
|
||||||
|
await tester.tapDescendantTextOf<SettingsScreen>(S.current.meteringScreenLayout);
|
||||||
|
await tester.takeScreenshot(binding, 'light-settings_metering_screen_layout');
|
||||||
|
|
||||||
|
await tester.tapCancelButton();
|
||||||
|
await tester.tapDescendantTextOf<SettingsScreen>(S.current.equipmentProfiles);
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
await tester.tapDescendantTextOf<EquipmentProfilesScreen>(mockEquipmentProfiles.first.name);
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
await tester.takeScreenshot(binding, 'light-equipment_profiles');
|
||||||
|
|
||||||
|
await tester.tap(find.byIcon(Icons.iso).first);
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue