TF-3493 Override enterText of Patrol Finder
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
@@ -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"
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user