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