diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index f880684a6..7a68d1b86 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -3,4 +3,12 @@ to allow setting breakpoints, to provide hot reload, etc. --> + + + + + diff --git a/core/lib/presentation/views/html_viewer/html_content_viewer_widget.dart b/core/lib/presentation/views/html_viewer/html_content_viewer_widget.dart index 181f0c3f5..4a5773cdd 100644 --- a/core/lib/presentation/views/html_viewer/html_content_viewer_widget.dart +++ b/core/lib/presentation/views/html_viewer/html_content_viewer_widget.dart @@ -404,7 +404,15 @@ class HtmlContentViewState extends State with AutomaticKeepAl void dispose() { _loadingBarNotifier.dispose(); _htmlData = null; - _webViewController.dispose(); + if (kDebugMode) { + try { + _webViewController.dispose(); + } catch (e) { + logError('_HtmlContentViewState:dispose:_webViewController.dispose: $e'); + } + } else { + _webViewController.dispose(); + } super.dispose(); } diff --git a/integration_test/base/base_scenario.dart b/integration_test/base/base_scenario.dart index 8376d8df5..1784fd6b7 100644 --- a/integration_test/base/base_scenario.dart +++ b/integration_test/base/base_scenario.dart @@ -1,3 +1,4 @@ +import 'package:flutter/painting.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:patrol/patrol.dart'; @@ -8,8 +9,11 @@ abstract class BaseScenario { Future execute(); - Future expectViewVisible(PatrolFinder patrolFinder) async { - await $.waitUntilVisible(patrolFinder); + Future expectViewVisible( + PatrolFinder patrolFinder, { + Alignment alignment = Alignment.center, + }) async { + await $.waitUntilVisible(patrolFinder, alignment: alignment); expect(patrolFinder, findsWidgets); } diff --git a/integration_test/robots/email_robot.dart b/integration_test/robots/email_robot.dart index 6e3981b14..7d33a9fc5 100644 --- a/integration_test/robots/email_robot.dart +++ b/integration_test/robots/email_robot.dart @@ -13,7 +13,7 @@ class EmailRobot extends CoreRobot { } Future tapDownloadAllButton() async { - await $(AppLocalizations().downloadAll).tap(); + await $(AppLocalizations().archiveAndDownload).tap(); await $.pumpAndSettle(); } diff --git a/integration_test/robots/search_robot.dart b/integration_test/robots/search_robot.dart index 0e0d16a21..73be1d563 100644 --- a/integration_test/robots/search_robot.dart +++ b/integration_test/robots/search_robot.dart @@ -81,4 +81,8 @@ class SearchRobot extends CoreRobot { await email.tap(); await $.pump(const Duration(seconds: 2)); } + + Future tapBackButton() async { + await $(#search_email_back_button).tap(); + } } \ No newline at end of file diff --git a/integration_test/scenarios/calendar/calendar_event_counter_scenario.dart b/integration_test/scenarios/calendar/calendar_event_counter_scenario.dart index 10ab3afd3..73c485c54 100644 --- a/integration_test/scenarios/calendar/calendar_event_counter_scenario.dart +++ b/integration_test/scenarios/calendar/calendar_event_counter_scenario.dart @@ -45,7 +45,7 @@ class CalendarEventCounterScenario extends BaseTestScenario { } Future _expectEmailViewVisible() async { - await expectViewVisible($(EmailView)); + await expectViewVisible($(EmailView), alignment: Alignment.topCenter); } Future _expectYesButtonVisible( diff --git a/integration_test/scenarios/reply_email_with_content_contain_image_base64_data_scenario.dart b/integration_test/scenarios/reply_email_with_content_contain_image_base64_data_scenario.dart index a462d8953..b0fc701a2 100644 --- a/integration_test/scenarios/reply_email_with_content_contain_image_base64_data_scenario.dart +++ b/integration_test/scenarios/reply_email_with_content_contain_image_base64_data_scenario.dart @@ -57,6 +57,7 @@ class ReplyEmailWithContentContainImageBase64DataScenario extends BaseTestScenar await emailRobot.onTapBackButton(); await $.pumpAndSettle(duration: const Duration(seconds: 3)); + await searchRobot.tapBackButton(); await _expectEmailCidWithSubject(emailSubject); await threadRobot.openEmailWithSubject( @@ -77,7 +78,7 @@ class ReplyEmailWithContentContainImageBase64DataScenario extends BaseTestScenar } Future _expectEmailViewVisible() async { - await expectViewVisible($(EmailView)); + await expectViewVisible($(EmailView), alignment: Alignment.topCenter); } Future _expectReplyEmailButtonVisible() async { diff --git a/lib/features/search/email/presentation/search_email_controller.dart b/lib/features/search/email/presentation/search_email_controller.dart index ea9ef1e5e..e36492e20 100644 --- a/lib/features/search/email/presentation/search_email_controller.dart +++ b/lib/features/search/email/presentation/search_email_controller.dart @@ -209,7 +209,7 @@ class SearchEmailController extends BaseController void _setUpDefaultSortOrder(EmailSortOrderType sortOrderType) { emailSortOrderType.value = sortOrderType; - searchEmailFilter.value = SearchEmailFilter.withSortOrder(sortOrderType); + _updateSimpleSearchFilter(sortOrderTypeOption: Some(sortOrderType)); } void _initializeDebounceTimeTextSearchChange() { diff --git a/lib/features/search/email/presentation/search_email_view.dart b/lib/features/search/email/presentation/search_email_view.dart index 3427bafa4..39c5e1ac6 100644 --- a/lib/features/search/email/presentation/search_email_view.dart +++ b/lib/features/search/email/presentation/search_email_view.dart @@ -181,6 +181,7 @@ class SearchEmailView extends GetWidget children: [ buildIconWeb( icon: SvgPicture.asset( + key: const ValueKey('search_email_back_button'), DirectionUtils.isDirectionRTLByLanguage(context) ? controller.imagePaths.icCollapseFolder : controller.imagePaths.icBack, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill diff --git a/scripts/patrol-integration-test-with-docker.sh b/scripts/patrol-integration-test-with-docker.sh index 9d74bc3cf..589e2e085 100755 --- a/scripts/patrol-integration-test-with-docker.sh +++ b/scripts/patrol-integration-test-with-docker.sh @@ -60,6 +60,5 @@ gcloud firebase test android run \ --app build/app/outputs/apk/debug/app-debug.apk \ --test build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk \ --device 'model=MediumPhone.arm,version=33,locale=en,orientation=portrait' \ - --timeout 10m \ --use-orchestrator \ --environment-variables clearPackageData=true