TF-4373 Add E2E test for test case delete thread to trash on mobile

This commit is contained in:
dab246
2026-03-11 16:13:42 +07:00
committed by Dat H. Pham
parent bb9dca10de
commit e2c158d633
5 changed files with 80 additions and 0 deletions
@@ -42,4 +42,17 @@ mixin SettingScenarioMixin on BaseScenario {
) async {
await expectViewVisible($(find.text(appLocalizations.language)));
}
Future<void> goToSettingToEnableThread({
required ThreadRobot threadRobot,
required SettingRobot settingRobot,
required MailboxMenuRobot mailboxMenuRobot,
}) async {
await threadRobot.openMailbox();
await mailboxMenuRobot.openSetting();
await settingRobot.openPreferencesMenuItem();
await settingRobot.switchOnThreadSetting();
await settingRobot.backToSettingsFromFirstLevel();
await settingRobot.closeSettings();
}
}
+4
View File
@@ -95,4 +95,8 @@ class EmailRobot extends CoreRobot {
.$(InkWell)
.tap();
}
Future<void> tapDeleteThreadButton() async {
await $(#delete_thread_button).tap();
}
}
@@ -0,0 +1,51 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import '../../base/base_test_scenario.dart';
import '../../mixin/generate_email_scenario_mixin.dart';
import '../../mixin/setting_scenario_mixin.dart';
import '../../robots/email_robot.dart';
import '../../robots/mailbox_menu_robot.dart';
import '../../robots/setting_robot.dart';
import '../../robots/thread_robot.dart';
class DeleteThreadToTrashScenario extends BaseTestScenario
with GenerateEmailScenarioMixin, SettingScenarioMixin {
const DeleteThreadToTrashScenario(super.$);
@override
Future<void> runTestLogic() async {
const subject = 'Delete thread to trash';
const emailUser = String.fromEnvironment('BASIC_AUTH_EMAIL');
final threadRobot = ThreadRobot($);
final settingRobot = SettingRobot($);
final mailboxMenuRobot = MailboxMenuRobot($);
final emailRobot = EmailRobot($);
final appLocalizations = AppLocalizations();
await goToSettingToEnableThread(
threadRobot: threadRobot,
settingRobot: settingRobot,
mailboxMenuRobot: mailboxMenuRobot,
);
await generateEmailWithSubject(emailUser: emailUser, subject: subject);
await threadRobot.openEmailWithSubject(subject);
await $.pumpAndSettle();
await emailRobot.tapDeleteThreadButton();
await $.pumpAndSettle();
await _expectDeleteThreadSuccessToast(appLocalizations);
}
Future<void> _expectDeleteThreadSuccessToast(
AppLocalizations appLocalizations,
) async {
await expectViewVisible(
$(find.text(appLocalizations.moved_to_trash)),
);
}
}
@@ -0,0 +1,10 @@
import '../../base/test_base.dart';
import '../../scenarios/email_detailed/delete_thread_to_trash_scenario.dart';
void main() {
TestBase().runPatrolTest(
description:
'Should see toast message success when open detailed email and delete thread successfully',
scenarioBuilder: ($) => DeleteThreadToTrashScenario($),
);
}
@@ -68,6 +68,7 @@ class ThreadDetailAppBar extends StatelessWidget {
onTapActionCallback: (_) => onThreadActionClick?.call(EmailActionType.moveToMailbox),
),
_ThreadDetailAppBarButton(
key: const Key('delete_thread_button'),
icon: imagePaths.icDeleteComposer,
iconColor: threadDetailCanPermanentlyDelete
? AppColor.redFF3347
@@ -183,6 +184,7 @@ class ThreadDetailAppBar extends StatelessWidget {
class _ThreadDetailAppBarButton extends StatelessWidget {
const _ThreadDetailAppBarButton({
super.key,
required this.icon,
required this.tooltipMessage,
required this.onTapActionCallback,