From 1a7f9165b95d92c3c2995b6ef9404b37c755afdc Mon Sep 17 00:00:00 2001 From: Vadim <44135514+vodemn@users.noreply.github.com> Date: Mon, 12 May 2025 16:08:37 +0200 Subject: [PATCH] mock camera focal length for integration tests --- integration_test/e2e_test.dart | 4 +-- integration_test/run_all_tests.dart | 10 ++++++++ .../utils/platform_channel_mock.dart | 25 +++++++++++++++++++ screenshots/generate_screenshots.dart | 20 +++++---------- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/integration_test/e2e_test.dart b/integration_test/e2e_test.dart index f57a501..fc2cfc0 100644 --- a/integration_test/e2e_test.dart +++ b/integration_test/e2e_test.dart @@ -64,7 +64,7 @@ void testE2E(String description) { await tester.setApertureValues(mockEquipmentProfiles[0].apertureValues); await tester.setShutterSpeedValues(mockEquipmentProfiles[0].shutterSpeedValues); await tester.setZoomValue(mockEquipmentProfiles[0].lensZoom); - expect(find.text('x1.91'), findsOneWidget); + expect(find.text('50mm'), findsOneWidget); expect(find.text('f/1.7 - f/16'), findsOneWidget); expect(find.text('1/1000 - B'), findsOneWidget); await tester.saveEdits(); @@ -77,7 +77,7 @@ void testE2E(String description) { await tester.enterProfileName(mockEquipmentProfiles[1].name); await tester.setApertureValues(mockEquipmentProfiles[1].apertureValues); await tester.setZoomValue(mockEquipmentProfiles[1].lensZoom); - expect(find.text('x5.02'), findsOneWidget); + expect(find.text('135mm'), findsOneWidget); expect(find.text('f/3.5 - f/22'), findsOneWidget); expect(find.text('1/1000 - B'), findsNWidgets(1)); await tester.saveEdits(); diff --git a/integration_test/run_all_tests.dart b/integration_test/run_all_tests.dart index 112e60e..b0a623d 100644 --- a/integration_test/run_all_tests.dart +++ b/integration_test/run_all_tests.dart @@ -1,12 +1,22 @@ +import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'e2e_test.dart'; import 'metering_screen_layout_test.dart'; import 'purchases_test.dart'; +import 'utils/platform_channel_mock.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + setUpAll(() { + mockCameraFocalLength(); + }); + + tearDownAll(() { + mockCameraFocalLength(); + }); + testPurchases('Purchase & refund premium features'); testToggleLayoutFeatures('Toggle metering screen layout features'); testE2E('e2e'); diff --git a/integration_test/utils/platform_channel_mock.dart b/integration_test/utils/platform_channel_mock.dart index 383f243..a610502 100644 --- a/integration_test/utils/platform_channel_mock.dart +++ b/integration_test/utils/platform_channel_mock.dart @@ -1,8 +1,10 @@ +import 'dart:io'; import 'dart:math'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:light_sensor/light_sensor.dart'; +import 'package:lightmeter/data/camera_info_service.dart'; void setLightSensorAvilability({required bool hasSensor}) { TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler( @@ -57,3 +59,26 @@ void resetLightSensorStreamHandler() { null, ); } + +void mockCameraFocalLength() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler( + CameraInfoService.cameraInfoPlatformChannel, + (methodCall) async { + switch (methodCall.method) { + case "mainCameraEfl": + return Platform.isAndroid + ? 24.0 // Pixel 6 + : 26.0; // iPhone 13 Pro + default: + return null; + } + }, + ); +} + +void resetCameraFocalLength() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler( + CameraInfoService.cameraInfoPlatformChannel, + null, + ); +} diff --git a/screenshots/generate_screenshots.dart b/screenshots/generate_screenshots.dart index 55ac05d..b0ae283 100644 --- a/screenshots/generate_screenshots.dart +++ b/screenshots/generate_screenshots.dart @@ -6,7 +6,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; -import 'package:lightmeter/data/camera_info_service.dart'; import 'package:lightmeter/data/models/camera_feature.dart'; import 'package:lightmeter/data/models/ev_source_type.dart'; import 'package:lightmeter/data/models/exposure_pair.dart'; @@ -29,6 +28,7 @@ import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../integration_test/mocks/paid_features_mock.dart'; +import '../integration_test/utils/platform_channel_mock.dart'; import '../integration_test/utils/widget_tester_actions.dart'; import 'models/screenshot_args.dart'; @@ -96,19 +96,11 @@ void main() { setUpAll(() async { if (Platform.isAndroid) await binding.convertFlutterSurfaceToImage(); - TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler( - CameraInfoService.cameraInfoPlatformChannel, - (methodCall) async { - switch (methodCall.method) { - case "mainCameraEfl": - return Platform.isAndroid - ? 24.0 // Pixel 6 - : 26.0; // iPhone 13 Pro - default: - return null; - } - }, - ); + mockCameraFocalLength(); + }); + + tearDownAll(() { + resetCameraFocalLength(); }); /// Generates several screenshots with the light theme