diff --git a/core/lib/utils/platform_info.dart b/core/lib/utils/platform_info.dart index 7a5ff5c91..b9eaec8ea 100644 --- a/core/lib/utils/platform_info.dart +++ b/core/lib/utils/platform_info.dart @@ -8,12 +8,18 @@ abstract class PlatformInfo { static bool isIntegrationTesting = false; static bool get isWeb => kIsWeb || isTestingForWeb; - static bool get isLinux => !isWeb && defaultTargetPlatform == TargetPlatform.linux; - static bool get isWindows => !isWeb && defaultTargetPlatform == TargetPlatform.windows; - static bool get isMacOS => !isWeb && defaultTargetPlatform == TargetPlatform.macOS; - static bool get isFuchsia => !isWeb && defaultTargetPlatform == TargetPlatform.fuchsia; - static bool get isIOS => !isWeb && defaultTargetPlatform == TargetPlatform.iOS; - static bool get isAndroid => !isWeb && defaultTargetPlatform == TargetPlatform.android; + static bool get isLinux => + !isWeb && defaultTargetPlatform == TargetPlatform.linux; + static bool get isWindows => + !isWeb && defaultTargetPlatform == TargetPlatform.windows; + static bool get isMacOS => + !isWeb && defaultTargetPlatform == TargetPlatform.macOS; + static bool get isFuchsia => + !isWeb && defaultTargetPlatform == TargetPlatform.fuchsia; + static bool get isIOS => + !isWeb && defaultTargetPlatform == TargetPlatform.iOS; + static bool get isAndroid => + !isWeb && defaultTargetPlatform == TargetPlatform.android; static bool get isMobile => isAndroid || isIOS; static bool get isDesktop => isLinux || isWindows || isMacOS; static bool get isCanvasKit => isRendererCanvasKit; @@ -38,4 +44,4 @@ abstract class PlatformInfo { log('PlatformInfo::platformNameOS(): $platformName'); return platformName; } -} \ No newline at end of file +} diff --git a/integration_test/scenarios/email_detailed/display_and_scroll_email_with_long_content_scenario.dart b/integration_test/scenarios/email_detailed/display_and_scroll_email_with_long_content_scenario.dart index 52951a39f..228f1788c 100644 --- a/integration_test/scenarios/email_detailed/display_and_scroll_email_with_long_content_scenario.dart +++ b/integration_test/scenarios/email_detailed/display_and_scroll_email_with_long_content_scenario.dart @@ -1,6 +1,9 @@ import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.dart'; +import 'package:core/utils/platform_info.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:tmail_ui_user/features/email/presentation/widgets/email_subject_widget.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'; import '../../base/base_test_scenario.dart'; @@ -18,6 +21,8 @@ class DisplayAndScrollEmailWithLongContentScenario extends BaseTestScenario { @override Future runTestLogic() async { + PlatformInfo.isIntegrationTesting = true; + const emailUser = String.fromEnvironment('BASIC_AUTH_EMAIL'); final provisioningEmail = ProvisioningEmail( toEmail: emailUser, @@ -35,6 +40,9 @@ class DisplayAndScrollEmailWithLongContentScenario extends BaseTestScenario { await $.pumpAndSettle(duration: const Duration(seconds: 3)); await _expectEmailViewWithLongContent(); + await _expectEmailViewScrollableWithLongContent(); + + PlatformInfo.isIntegrationTesting = false; } Future _expectDisplayedEmailWithSubject() async { @@ -54,4 +62,18 @@ class DisplayAndScrollEmailWithLongContentScenario extends BaseTestScenario { findsOneWidget, ); } + + Future _expectEmailViewScrollableWithLongContent() async { + expect($(EmailSubjectWidget).visible, isTrue); + + await $.scrollUntilVisible( + finder: $(#integration_testing_email_detailed_divider), + scrollDirection: AxisDirection.down, + delta: 150, + maxScrolls: 100, + ); + await $.pumpAndSettle(); + + expect($(EmailSubjectWidget).visible, isFalse); + } } \ No newline at end of file diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index 52d9037f4..1583b3532 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -427,6 +427,12 @@ class EmailView extends GetWidget { return const SizedBox.shrink(); } }), + if (PlatformInfo.isIntegrationTesting) + const Divider( + key: Key('integration_testing_email_detailed_divider'), + height: 5, + color: Colors.transparent, + ), Obx(() { if (controller.attachments.isNotEmpty) { return EmailAttachmentsWidget(