TF-4243 Add integration test on mobile for case delete_a_label

This commit is contained in:
dab246
2026-01-12 16:56:08 +07:00
committed by Dat H. Pham
parent 9760b6f077
commit f1feb6225d
3 changed files with 85 additions and 0 deletions
@@ -0,0 +1,12 @@
import 'package:core/presentation/views/dialog/confirm_dialog_button.dart';
import 'package:flutter_test/flutter_test.dart';
import '../base/core_robot.dart';
class ConfirmDialogRobot extends CoreRobot {
ConfirmDialogRobot(super.$);
Future<void> selectActionByName(String name) async {
await $(ConfirmDialogButton).$(name).tap();
}
}
@@ -0,0 +1,63 @@
import 'package:core/utils/platform_info.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/labels/label_list_view.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import '../../base/base_test_scenario.dart';
import '../../mixin/provisioning_label_scenario_mixin.dart';
import '../../robots/confirm_dialog_robot.dart';
import '../../robots/labels/label_action_type_context_menu_robot.dart';
import '../../robots/labels/label_robot.dart';
import '../../robots/thread_robot.dart';
class DeleteATagScenario extends BaseTestScenario
with ProvisioningLabelScenarioMixin {
const DeleteATagScenario(super.$);
@override
Future<void> setupPreLogin() async {
PlatformInfo.isIntegrationTesting = true;
}
@override
Future<void> runTestLogic() async {
final threadRobot = ThreadRobot($);
final labelRobot = LabelRobot($);
final labelActionTypeContextMenuRobot = LabelActionTypeContextMenuRobot($);
final confirmDialogRobot = ConfirmDialogRobot($);
final appLocalizations = AppLocalizations();
await provisionLabelsByDisplayNames(['Delete Tag 1', 'Delete Tag 2']);
await $.pumpAndSettle(duration: const Duration(seconds: 2));
await threadRobot.openMailbox();
await labelRobot.longPressLabelWithName('Delete Tag 1');
await _expectLabelActionTypeContextMenuVisible();
await labelActionTypeContextMenuRobot.selectActionByName(
appLocalizations.delete,
);
await _expectDeleteLabelConfirmDialogVisible();
await confirmDialogRobot.selectActionByName(appLocalizations.delete);
await $.pumpAndSettle(duration: const Duration(seconds: 1));
await _expectLabelDeletedByName('Delete Tag 1');
}
Future<void> _expectLabelActionTypeContextMenuVisible() async {
await expectViewVisible($(#label_action_type_context_menu));
}
Future<void> _expectDeleteLabelConfirmDialogVisible() async {
await expectViewVisible($(#confirm_dialog_delete_label));
}
Future<void> _expectLabelDeletedByName(String name) async {
await expectViewInvisible($(LabelListView).$(name));
}
@override
Future<void> disposeAfterTest() async {
PlatformInfo.isIntegrationTesting = false;
}
}
@@ -0,0 +1,10 @@
import '../../base/test_base.dart';
import '../../scenarios/labels/delete_a_tag_scenario.dart';
void main() {
TestBase().runPatrolTest(
description:
'Should delete label in label list when delete a label successfully',
scenarioBuilder: ($) => DeleteATagScenario($),
);
}