TF-3493 Override enterText of Patrol Finder

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-02-21 03:37:39 +07:00
committed by Dat H. Pham
parent abdcb614ce
commit 83ec6016af
9 changed files with 97 additions and 15 deletions
@@ -0,0 +1,19 @@
import 'package:patrol_log/patrol_log.dart';
import 'package:patrol_finders/patrol_finders.dart';
import 'patrol_tester_extension.dart';
extension PatrolFinderExtension on PatrolFinder {
Future<void> enterTextWithoutTapAction(String text) async =>
wrapWithPatrolLog(
action: 'enterText',
color: AnsiCodes.magenta,
function: () => tester.enterTextWithoutTapAction(
this,
text,
enablePatrolLog: false,
),
);
}
@@ -0,0 +1,49 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:patrol_log/patrol_log.dart';
import 'package:patrol_finders/patrol_finders.dart';
extension PatrolFinderExtension on PatrolTester {
Future<void> enterTextWithoutTapAction(
Finder finder,
String text,
{
bool enablePatrolLog = true,
}
) {
return TestAsyncUtils.guard(
() => wrapWithPatrolLog(
action: 'enterText',
value: text,
finder: finder,
color: AnsiCodes.magenta,
enablePatrolLog: enablePatrolLog,
function: () async {
final resolvedFinder = await waitUntilVisible(
finder,
enablePatrolLog: false,
);
await tester.enterText(resolvedFinder.first, text);
await _performPump();
},
),
);
}
Future<void> _performPump() async {
final settle = config.settlePolicy;
final timeout = config.settleTimeout;
if (settle == SettlePolicy.trySettle) {
await pumpAndTrySettle(
timeout: timeout,
);
} else if (settle == SettlePolicy.settle) {
await pumpAndSettle(
timeout: timeout,
);
} else {
await tester.pump();
}
}
}
+3 -2
View File
@@ -12,6 +12,7 @@ import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_s
import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart'; import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart';
import '../base/core_robot.dart'; import '../base/core_robot.dart';
import '../extensions/patrol_finder_extension.dart';
class ComposerRobot extends CoreRobot { class ComposerRobot extends CoreRobot {
ComposerRobot(super.$); ComposerRobot(super.$);
@@ -25,7 +26,7 @@ class ComposerRobot extends CoreRobot {
if (!isTextFieldFocused) { if (!isTextFieldFocused) {
await finder.tap(); await finder.tap();
} }
await finder.enterText(email); await finder.enterTextWithoutTapAction(email);
await $(RecipientSuggestionItemWidget) await $(RecipientSuggestionItemWidget)
.which<RecipientSuggestionItemWidget>((widget) => widget.emailAddress.email?.contains(email) ?? false) .which<RecipientSuggestionItemWidget>((widget) => widget.emailAddress.email?.contains(email) ?? false)
@@ -40,7 +41,7 @@ class ComposerRobot extends CoreRobot {
if (!isTextFieldFocused) { if (!isTextFieldFocused) {
await finder.tap(); await finder.tap();
} }
await finder.enterText(subject); await finder.enterTextWithoutTapAction(subject);
} }
Future<void> addContent(String content) async { Future<void> addContent(String content) async {
+5 -4
View File
@@ -3,6 +3,7 @@ import 'package:patrol/patrol.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import '../base/core_robot.dart'; import '../base/core_robot.dart';
import '../extensions/patrol_finder_extension.dart';
class LoginRobot extends CoreRobot { class LoginRobot extends CoreRobot {
final appLocalizations = AppLocalizations(); final appLocalizations = AppLocalizations();
@@ -27,7 +28,7 @@ class LoginRobot extends CoreRobot {
if (!isTextFieldFocused) { if (!isTextFieldFocused) {
await finder.tap(); await finder.tap();
} }
await finder.enterText(email); await finder.enterTextWithoutTapAction(email);
} }
Future<void> enterHostUrl(String url) async { Future<void> enterHostUrl(String url) async {
@@ -38,7 +39,7 @@ class LoginRobot extends CoreRobot {
if (!isTextFieldFocused) { if (!isTextFieldFocused) {
await finder.tap(); await finder.tap();
} }
await finder.enterText(url); await finder.enterTextWithoutTapAction(url);
} }
Future<void> tapOnNextButton() async { Future<void> tapOnNextButton() async {
@@ -53,7 +54,7 @@ class LoginRobot extends CoreRobot {
if (!isTextFieldFocused) { if (!isTextFieldFocused) {
await finder.tap(); await finder.tap();
} }
await finder.enterText(email); await finder.enterTextWithoutTapAction(email);
} }
Future<void> enterBasicAuthPassword(String password) async { Future<void> enterBasicAuthPassword(String password) async {
@@ -64,7 +65,7 @@ class LoginRobot extends CoreRobot {
if (!isTextFieldFocused) { if (!isTextFieldFocused) {
await finder.tap(); await finder.tap();
} }
await finder.enterText(password); await finder.enterTextWithoutTapAction(password);
} }
Future<void> loginBasicAuth() async { Future<void> loginBasicAuth() async {
+3 -2
View File
@@ -6,6 +6,7 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_bu
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import '../base/core_robot.dart'; import '../base/core_robot.dart';
import '../extensions/patrol_finder_extension.dart';
class SearchRobot extends CoreRobot { class SearchRobot extends CoreRobot {
SearchRobot(super.$); SearchRobot(super.$);
@@ -18,7 +19,7 @@ class SearchRobot extends CoreRobot {
if (!isTextFieldFocused) { if (!isTextFieldFocused) {
await finder.tap(); await finder.tap();
} }
await finder.enterText(queryString); await finder.enterTextWithoutTapAction(queryString);
} }
Future<void> scrollToEndListSearchFilter() async { Future<void> scrollToEndListSearchFilter() async {
@@ -47,7 +48,7 @@ class SearchRobot extends CoreRobot {
if (!isTextFieldFocused) { if (!isTextFieldFocused) {
await finder.tap(); await finder.tap();
} }
await finder.enterText(keyword); await finder.enterTextWithoutTapAction(keyword);
} }
Future<void> tapOnShowAllResultsText() async { Future<void> tapOnShowAllResultsText() async {
File diff suppressed because one or more lines are too long
@@ -1,5 +1,6 @@
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_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 '../base/base_test_scenario.dart';
import '../robots/composer_robot.dart'; import '../robots/composer_robot.dart';
@@ -35,6 +36,8 @@ class SendEmailScenario extends BaseTestScenario {
Future<void> _expectComposerViewVisible() => expectViewVisible($(ComposerView)); Future<void> _expectComposerViewVisible() => expectViewVisible($(ComposerView));
Future<void> _expectSendEmailSuccessToast() async { Future<void> _expectSendEmailSuccessToast() async {
expect($('Message has been sent successfully'), findsOneWidget); await expectViewVisible(
$(find.text(AppLocalizations().message_has_been_sent_successfully)),
);
} }
} }
+2 -2
View File
@@ -1585,7 +1585,7 @@ packages:
source: hosted source: hosted
version: "3.14.0" version: "3.14.0"
patrol_finders: patrol_finders:
dependency: transitive dependency: "direct dev"
description: description:
name: patrol_finders name: patrol_finders
sha256: "4c6d78e00362fd15d7c21cfac110e501d08ada7d77000bad139b0c3c2e27ccaf" sha256: "4c6d78e00362fd15d7c21cfac110e501d08ada7d77000bad139b0c3c2e27ccaf"
@@ -1593,7 +1593,7 @@ packages:
source: hosted source: hosted
version: "2.7.0" version: "2.7.0"
patrol_log: patrol_log:
dependency: transitive dependency: "direct dev"
description: description:
name: patrol_log name: patrol_log
sha256: "98b2701400c7a00b11533ab942bdeb44c3c714746e7cdb12e6cb93b6d06361da" sha256: "98b2701400c7a00b11533ab942bdeb44c3c714746e7cdb12e6cb93b6d06361da"
+4
View File
@@ -290,6 +290,10 @@ dev_dependencies:
patrol: 3.14.0 patrol: 3.14.0
patrol_log: 0.3.0
patrol_finders: 2.7.0
plugin_platform_interface: 2.1.8 plugin_platform_interface: 2.1.8
dependency_overrides: dependency_overrides: