From 55849822942d1b86a3b461270820078db0994a32 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 25 Sep 2025 09:15:30 +0700 Subject: [PATCH] TF-4056 Add E2E for persist filter when change search input text --- integration_test/robots/search_robot.dart | 10 +++ ...hen_change_search_input_text_scenario.dart | 63 +++++++++++++++++++ ...er_when_change_search_input_text_test.dart | 9 +++ 3 files changed, 82 insertions(+) create mode 100644 integration_test/scenarios/search/persist_filter_when_change_search_input_text_scenario.dart create mode 100644 integration_test/tests/search/persist_filter_when_change_search_input_text_test.dart diff --git a/integration_test/robots/search_robot.dart b/integration_test/robots/search_robot.dart index 73be1d563..645d99c0b 100644 --- a/integration_test/robots/search_robot.dart +++ b/integration_test/robots/search_robot.dart @@ -85,4 +85,14 @@ class SearchRobot extends CoreRobot { Future tapBackButton() async { await $(#search_email_back_button).tap(); } + + Future selectAttachmentFilter() async { + await $.scrollUntilVisible( + finder: $(#mobile_hasAttachment_search_filter_button), + view: $(#search_filter_list_view), + scrollDirection: AxisDirection.right, + delta: 50, + ); + await $(#mobile_hasAttachment_search_filter_button).tap(); + } } \ No newline at end of file diff --git a/integration_test/scenarios/search/persist_filter_when_change_search_input_text_scenario.dart b/integration_test/scenarios/search/persist_filter_when_change_search_input_text_scenario.dart new file mode 100644 index 000000000..59baed91f --- /dev/null +++ b/integration_test/scenarios/search/persist_filter_when_change_search_input_text_scenario.dart @@ -0,0 +1,63 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_filters/search_filter_button.dart'; + +import '../../base/base_test_scenario.dart'; +import '../../models/provisioning_email.dart'; +import '../../robots/search_robot.dart'; +import '../../robots/thread_robot.dart'; + +class PersistFilterWhenChangeSearchInputTextScenario + extends BaseTestScenario { + const PersistFilterWhenChangeSearchInputTextScenario(super.$); + + @override + Future runTestLogic() async { + const email = String.fromEnvironment('BASIC_AUTH_EMAIL'); + const subject = 'Persist search filter'; + const queryStringFirst = 'Persist'; + const queryStringSecond = 'Persist search'; + + final threadRobot = ThreadRobot($); + final searchRobot = SearchRobot($); + + final file = await preparingTxtFile('attachment'); + await provisionEmail( + [ + ProvisioningEmail( + toEmail: email, + subject: subject, + content: subject, + attachmentPaths: [file.path], + ), + ], + requestReadReceipt: false, + ); + await $.pumpAndSettle(); + + await threadRobot.tapOnSearchField(); + await searchRobot.enterKeyword(queryStringFirst); + await searchRobot.tapOnShowAllResultsText(); + await _expectEmailWithSubjectVisible(subject); + + await searchRobot.selectAttachmentFilter(); + await _expectEmailWithSubjectVisible(subject); + _expectAttachmentFilterSelected(); + + await searchRobot.enterKeyword(queryStringSecond); + await _expectEmailWithSubjectVisible(subject); + _expectAttachmentFilterSelected(); + } + + Future _expectEmailWithSubjectVisible(String subject) async { + await expectViewVisible($(find.text(subject))); + } + + void _expectAttachmentFilterSelected() { + expect( + $(#mobile_hasAttachment_search_filter_button) + .which((widget) => widget.isSelected) + .visible, + true, + ); + } +} diff --git a/integration_test/tests/search/persist_filter_when_change_search_input_text_test.dart b/integration_test/tests/search/persist_filter_when_change_search_input_text_test.dart new file mode 100644 index 000000000..c0e7a2f12 --- /dev/null +++ b/integration_test/tests/search/persist_filter_when_change_search_input_text_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/search/persist_filter_when_change_search_input_text_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should see the same email when selecting filter and changing search input text', + scenarioBuilder: ($) => PersistFilterWhenChangeSearchInputTextScenario($), + ); +}