From e5d996eeb309bed06997b29c1ae32848117bc9c6 Mon Sep 17 00:00:00 2001 From: DatDang Date: Fri, 4 Apr 2025 10:55:18 +0700 Subject: [PATCH] TF-3614 E2E Team mailbox receive email --- .../robots/mailbox_menu_robot.dart | 7 +- .../team_mailbox_receive_email_scenario.dart | 73 +++++++++++++++++++ .../team_mailbox_receive_email_test.dart | 9 +++ provisioning/integration_test/provisioning.sh | 7 +- 4 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 integration_test/scenarios/mailbox/team_mailbox_receive_email_scenario.dart create mode 100644 integration_test/tests/mailbox/team_mailbox_receive_email_test.dart diff --git a/integration_test/robots/mailbox_menu_robot.dart b/integration_test/robots/mailbox_menu_robot.dart index 2c2a9f135..8a6d5b3df 100644 --- a/integration_test/robots/mailbox_menu_robot.dart +++ b/integration_test/robots/mailbox_menu_robot.dart @@ -21,10 +21,9 @@ class MailboxMenuRobot extends CoreRobot { } Future openFolderByName(String name) async { - await $(MailboxItemWidget) - .$(LabelMailboxItemWidget) - .$(find.text(name)) - .tap(); + final mailboxItem = $(MailboxItemWidget).$(LabelMailboxItemWidget).$(name); + await $.scrollUntilVisible(finder: mailboxItem); + await mailboxItem.tap(); } Future openSetting() async { diff --git a/integration_test/scenarios/mailbox/team_mailbox_receive_email_scenario.dart b/integration_test/scenarios/mailbox/team_mailbox_receive_email_scenario.dart new file mode 100644 index 000000000..6dabc91af --- /dev/null +++ b/integration_test/scenarios/mailbox/team_mailbox_receive_email_scenario.dart @@ -0,0 +1,73 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:model/email/prefix_email_address.dart'; +import 'package:core/presentation/resources/image_paths.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view.dart'; +import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +import '../../base/base_test_scenario.dart'; +import '../../robots/composer_robot.dart'; +import '../../robots/mailbox_menu_robot.dart'; +import '../../robots/thread_robot.dart'; + +class TeamMailboxReceiveEmailScenario extends BaseTestScenario { + const TeamMailboxReceiveEmailScenario(super.$); + + @override + Future runTestLogic() async { + const teamMailboxName = 'bob-guests'; + const teamMailboxEmail = '$teamMailboxName@example.com'; + const subject = 'email to team mailbox'; + + final threadRobot = ThreadRobot($); + final composerRobot = ComposerRobot($); + final mailboxMenuRobot = MailboxMenuRobot($); + final imagePaths = ImagePaths(); + final appLocalizations = AppLocalizations(); + + await threadRobot.openMailbox(); + await _expectMailboxViewVisible(); + await _expectTeamMailboxVisible(teamMailboxName); + + await mailboxMenuRobot.closeMenu(); + await threadRobot.openComposer(); + await _expectComposerViewVisible(); + await composerRobot.grantContactPermission(); + await composerRobot.addRecipientIntoField( + prefixEmailAddress: PrefixEmailAddress.to, + email: teamMailboxEmail, + ); + await composerRobot.addSubject(subject); + await composerRobot.sendEmail(imagePaths); + await _expectSendEmailSuccessToast(appLocalizations); + await $.pump(const Duration(seconds: 2)); + + await threadRobot.openMailbox(); + await mailboxMenuRobot.expandMailboxWithName(teamMailboxName); + await mailboxMenuRobot.openFolderByName(appLocalizations.inboxMailboxDisplayName.toUpperCase()); + await _expectEmailWithSubjectVisible(subject); + } + + Future _expectMailboxViewVisible() async { + await expectViewVisible($(MailboxView)); + } + + Future _expectTeamMailboxVisible(String name) async { + await $.scrollUntilVisible(finder: $(name)); + await expectViewVisible($(name)); + } + + Future _expectComposerViewVisible() async { + await expectViewVisible($(ComposerView)); + } + + Future _expectSendEmailSuccessToast(AppLocalizations appLocalizations) async { + await expectViewVisible( + $(find.text(appLocalizations.message_has_been_sent_successfully)), + ); + } + + Future _expectEmailWithSubjectVisible(String subject) async { + await expectViewVisible($(subject)); + } +} \ No newline at end of file diff --git a/integration_test/tests/mailbox/team_mailbox_receive_email_test.dart b/integration_test/tests/mailbox/team_mailbox_receive_email_test.dart new file mode 100644 index 000000000..b68c0e140 --- /dev/null +++ b/integration_test/tests/mailbox/team_mailbox_receive_email_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/mailbox/team_mailbox_receive_email_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should see email in team mailbox INBOX after sending to team mailbox address', + scenarioBuilder: ($) => TeamMailboxReceiveEmailScenario($), + ); +} \ No newline at end of file diff --git a/provisioning/integration_test/provisioning.sh b/provisioning/integration_test/provisioning.sh index 162720577..27c4f0cbf 100755 --- a/provisioning/integration_test/provisioning.sh +++ b/provisioning/integration_test/provisioning.sh @@ -84,4 +84,9 @@ replyEmailsEML=("reply-all.eml" "reply-to-list.eml" "with-reply-to.eml" "without for eml in "${replyEmailsEML[@]}"; do echo "Importing $eml into 'Reply Emails' folder for user bob" james-cli ImportEml \#private "bob@example.com" "Reply Emails" "/root/conf/integration_test/eml/reply_email/$eml" -done \ No newline at end of file +done + +# For test team mailbox +curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests +curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests/members/bob@example.com?role=member +curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests/members/alice@example.com?role=member \ No newline at end of file