TF-3349 Add integration test for forward email
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
import '../base/core_robot.dart';
|
||||
|
||||
class EmailRobot extends CoreRobot {
|
||||
EmailRobot(super.$);
|
||||
|
||||
Future<void> onTapForwardEmail() async {
|
||||
await $(#forward_email_button).tap();
|
||||
await $.pump(const Duration(seconds: 2));
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:core/presentation/views/text/text_field_builder.dart';
|
||||
import 'package:tmail_ui_user/features/search/email/presentation/search_email_view.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
import '../base/core_robot.dart';
|
||||
@@ -39,4 +40,27 @@ class SearchRobot extends CoreRobot {
|
||||
await $.waitUntilVisible($(AppLocalizations().showingResultsFor));
|
||||
await $(AppLocalizations().showingResultsFor).tap();
|
||||
}
|
||||
|
||||
Future<void> scrollToDateTimeButtonFilter() async {
|
||||
await $.scrollUntilVisible(
|
||||
finder: $(#mobile_dateTime_search_filter_button),
|
||||
view: $(#search_filter_list_view),
|
||||
scrollDirection: AxisDirection.right,
|
||||
delta: 300,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> openDateTimeBottomDialog() async {
|
||||
await $(#mobile_dateTime_search_filter_button).tap();
|
||||
}
|
||||
|
||||
Future<void> selectDateTime(String dateTimeType) async {
|
||||
await $(find.text(dateTimeType)).tap();
|
||||
await $.pump(const Duration(seconds: 2));
|
||||
}
|
||||
|
||||
Future<void> openEmail(String subject) async {
|
||||
await $(find.byType(EmailTileBuilder)).first.tap();
|
||||
await $.pump(const Duration(seconds: 2));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:rich_text_composer/rich_text_composer.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/view/mobile/mobile_editor_view.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
||||
import 'package:tmail_ui_user/features/search/email/presentation/search_email_view.dart';
|
||||
|
||||
import '../base/base_scenario.dart';
|
||||
import '../robots/composer_robot.dart';
|
||||
import '../robots/email_robot.dart';
|
||||
import '../robots/search_robot.dart';
|
||||
import '../robots/thread_robot.dart';
|
||||
import 'login_with_basic_auth_scenario.dart';
|
||||
|
||||
class ForwardEmailScenario extends BaseScenario {
|
||||
const ForwardEmailScenario(
|
||||
super.$,
|
||||
{
|
||||
required this.loginWithBasicAuthScenario,
|
||||
}
|
||||
);
|
||||
|
||||
final LoginWithBasicAuthScenario loginWithBasicAuthScenario;
|
||||
|
||||
@override
|
||||
Future<void> execute() async {
|
||||
await loginWithBasicAuthScenario.execute();
|
||||
|
||||
final threadRobot = ThreadRobot($);
|
||||
await threadRobot.openSearchView();
|
||||
await _expectSearchViewVisible();
|
||||
|
||||
final searchRobot = SearchRobot($);
|
||||
await searchRobot.enterQueryString('Forward email');
|
||||
await _expectSuggestionSearchListViewVisible();
|
||||
await searchRobot.tapOnShowAllResultsText();
|
||||
await _expectSearchResultEmailListVisible();
|
||||
|
||||
await searchRobot.openEmail('Fwd: Forward email');
|
||||
await _expectEmailViewVisible();
|
||||
await _expectForwardEmailButtonVisible();
|
||||
|
||||
final emailRobot = EmailRobot($);
|
||||
await emailRobot.onTapForwardEmail();
|
||||
await _expectComposerViewVisible();
|
||||
|
||||
final composerRobot = ComposerRobot($);
|
||||
await composerRobot.grantContactPermission();
|
||||
await _expectMobileEditorViewVisible();
|
||||
|
||||
await _expectForwardEmailContentDisplayedCorrectly();
|
||||
}
|
||||
|
||||
Future<void> _expectSearchViewVisible() async {
|
||||
await expectViewVisible($(SearchEmailView));
|
||||
}
|
||||
|
||||
Future<void> _expectSuggestionSearchListViewVisible() async {
|
||||
await expectViewVisible($(#suggestion_search_list_view));
|
||||
}
|
||||
|
||||
Future<void> _expectSearchResultEmailListVisible() async {
|
||||
await expectViewVisible($(#search_email_list_notification_listener));
|
||||
await $.pump(const Duration(seconds: 3));
|
||||
}
|
||||
|
||||
Future<void> _expectEmailViewVisible() async {
|
||||
await expectViewVisible($(EmailView));
|
||||
}
|
||||
|
||||
Future<void> _expectForwardEmailButtonVisible() async {
|
||||
await expectViewVisible($(#forward_email_button));
|
||||
await $.pump(const Duration(seconds: 3));
|
||||
}
|
||||
|
||||
Future<void> _expectComposerViewVisible() async {
|
||||
await expectViewVisible($(ComposerView));
|
||||
}
|
||||
|
||||
Future<void> _expectMobileEditorViewVisible() async {
|
||||
await expectViewVisible($(#mobile_editor));
|
||||
}
|
||||
|
||||
Future<void> _expectForwardEmailContentDisplayedCorrectly() async {
|
||||
ComposerController? composerController;
|
||||
await $(ComposerView)
|
||||
.which<ComposerView>((widget) {
|
||||
composerController = widget.controller;
|
||||
return true;
|
||||
})
|
||||
.$(MobileEditorView)
|
||||
.$(HtmlEditor)
|
||||
.$(InAppWebView).tap();
|
||||
|
||||
await composerController?.htmlEditorApi?.requestFocusLastChild();
|
||||
|
||||
final contentHtml = await composerController?.htmlEditorApi?.getText();
|
||||
|
||||
expect(contentHtml, contains('Subject'));
|
||||
expect(contentHtml, contains('From'));
|
||||
expect(contentHtml, contains('To'));
|
||||
expect(contentHtml, contains('Cc'));
|
||||
expect(contentHtml, contains('Bcc'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import '../../base/test_base.dart';
|
||||
import '../../scenarios/forward_email_scenario.dart';
|
||||
import '../../scenarios/login_with_basic_auth_scenario.dart';
|
||||
|
||||
void main() {
|
||||
TestBase().runPatrolTest(
|
||||
description: 'Should see HTML content contain enough: Subject, From, To, Cc, Bcc, Reply to',
|
||||
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 forwardEmailScenario = ForwardEmailScenario(
|
||||
$,
|
||||
loginWithBasicAuthScenario: loginWithBasicAuthScenario,
|
||||
);
|
||||
|
||||
await forwardEmailScenario.execute();
|
||||
},
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user