TF-3260 Add integration test for app grid

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-12-23 08:56:55 +07:00
committed by Dat H. Pham
parent dce74b43e9
commit bbb98a2a49
10 changed files with 161 additions and 8 deletions
+4
View File
@@ -12,4 +12,8 @@ abstract class BaseScenario {
await $.waitUntilVisible(patrolFinder);
expect(patrolFinder, findsWidgets);
}
Future<void> expectViewInVisible(PatrolFinder patrolFinder) async {
expect(patrolFinder, findsNothing);
}
}
@@ -0,0 +1,12 @@
import 'package:flutter_test/flutter_test.dart';
import '../base/core_robot.dart';
class AppGridRobot extends CoreRobot {
AppGridRobot(super.$);
Future<void> openAppInAppGridByAppName(String appName) async {
await $(find.text(appName)).tap();
}
}
@@ -0,0 +1,10 @@
import '../base/core_robot.dart';
class MailboxMenuRobot extends CoreRobot {
MailboxMenuRobot(super.$);
Future<void> openAppGrid() async {
await $(#toggle_app_grid_button).tap();
}
}
+4 -6
View File
@@ -20,14 +20,12 @@ class ThreadRobot extends CoreRobot {
await $(ThreadView).$(SearchBarView).tap();
}
Future<void> openMailbox(String mailboxName) async {
await $(#mobile_mailbox_menu_button).tap();
await $.scrollUntilVisible(finder: $(mailboxName));
await $(mailboxName).tap();
}
Future<void> openEmailWithSubject(String subject) async {
await $.scrollUntilVisible(finder: $(subject));
await $(subject).tap();
}
Future<void> openMailbox() async {
await $(#mobile_mailbox_menu_button).tap();
}
}
@@ -0,0 +1,88 @@
import 'package:core/utils/platform_info.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/app_grid_view.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart';
import '../base/base_scenario.dart';
import '../robots/app_grid_robot.dart';
import '../robots/mailbox_menu_robot.dart';
import '../robots/thread_robot.dart';
import 'login_with_basic_auth_scenario.dart';
class AppGridScenario extends BaseScenario {
final LoginWithBasicAuthScenario loginWithBasicAuthScenario;
AppGridScenario(
super.$,
{
required this.loginWithBasicAuthScenario
}
);
@override
Future<void> execute() async {
final threadRobot = ThreadRobot($);
final mailboxMenuRobot = MailboxMenuRobot($);
final appGridRobot = AppGridRobot($);
await loginWithBasicAuthScenario.execute();
await threadRobot.openMailbox();
await _expectMailboxViewVisible();
await _expectAppGridViewVisible();
await Future.delayed(const Duration(seconds: 2));
await mailboxMenuRobot.openAppGrid();
await _expectListViewAppGridVisible();
await _expectAllAppInAppGridDisplayedIsFull();
await appGridRobot.openAppInAppGridByAppName('Twake Drive');
await Future.delayed(const Duration(seconds: 2));
if (PlatformInfo.isAndroid) {
await $.native.pressBack();
await appGridRobot.openAppInAppGridByAppName('Twake Sync');
await Future.delayed(const Duration(seconds: 2));
await $.native.pressBack();
await appGridRobot.openAppInAppGridByAppName('Twake Chat');
await Future.delayed(const Duration(seconds: 2));
await $.native.pressBack();
await _expectMailboxViewVisible();
} else if (PlatformInfo.isIOS) {
await _expectMailboxViewInVisible();
}
}
Future<void> _expectMailboxViewVisible() => expectViewVisible($(MailboxView));
Future<void> _expectAppGridViewVisible() => expectViewVisible($(AppGridView));
Future<void> _expectListViewAppGridVisible() => expectViewVisible($(#list_view_app_grid));
Future<void> _expectAllAppInAppGridDisplayedIsFull() async {
int totalApp = PlatformInfo.isIOS ? 2 : 3;
expect(find.byType(AppListDashboardItem), findsNWidgets(totalApp));
final listAppItem = $.tester
.widgetList<AppListDashboardItem>(find.byType(AppListDashboardItem));
final listAppNames = listAppItem.map((item) => item.app.appName).toList();
if (PlatformInfo.isIOS) {
expect(listAppNames, equals(['Twake Drive', 'Twake Chat']));
} else {
expect(listAppNames, equals(['Twake Drive', 'Twake Chat', 'Twake Sync']));
}
}
Future<void> _expectMailboxViewInVisible() => expectViewInVisible($(MailboxView));
}
@@ -0,0 +1,24 @@
import '../../base/test_base.dart';
import '../../scenarios/app_grid_scenario.dart';
import '../../scenarios/login_with_basic_auth_scenario.dart';
void main() {
TestBase().runPatrolTest(
description: 'Should display and navigate app grid correctly when clicked',
test: ($) async {
final loginWithBasicAuthScenario = LoginWithBasicAuthScenario($,
username: const String.fromEnvironment('USERNAME'),
hostUrl: const String.fromEnvironment('BASIC_AUTH_URL'),
email: const String.fromEnvironment('BASIC_AUTH_EMAIL'),
password: const String.fromEnvironment('PASSWORD'),
);
final appGridScenario = AppGridScenario(
$,
loginWithBasicAuthScenario: loginWithBasicAuthScenario,
);
await appGridScenario.execute();
}
);
}