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'; import '../extensions/patrol_finder_extension.dart'; class SearchRobot extends CoreRobot { SearchRobot(super.$); Future enterQueryString(String queryString) async { final finder = $(#search_email_text_field).$(TextField); final isTextFieldFocused = finder .which((view) => view.focusNode?.hasFocus ?? false) .exists; if (!isTextFieldFocused) { await finder.tap(); } await finder.enterTextWithoutTapAction(queryString); } Future scrollToEndListSearchFilter() async { await $.scrollUntilVisible( finder: $(#mobile_sortBy_search_filter_button), view: $(#search_filter_list_view), scrollDirection: AxisDirection.right, delta: 300, ); } Future openSortOrderBottomDialog() async { await $(#mobile_sortBy_search_filter_button).tap(); } Future selectSortOrder(String sortOrderName) async { await $(find.text(sortOrderName)).tap(); await $.pump(const Duration(seconds: 2)); } Future enterKeyword(String keyword) async { final finder = $(SearchEmailView).$(TextFieldBuilder); final isTextFieldFocused = finder .which((view) => view.focusNode?.hasFocus ?? false) .exists; if (!isTextFieldFocused) { await finder.tap(); } await finder.enterTextWithoutTapAction(keyword); } Future tapOnShowAllResultsText() async { await $.waitUntilVisible($(AppLocalizations().showingResultsFor)); await $(AppLocalizations().showingResultsFor).tap(); } Future scrollToDateTimeButtonFilter() async { await $.scrollUntilVisible( finder: $(#mobile_dateTime_search_filter_button), view: $(#search_filter_list_view), scrollDirection: AxisDirection.right, delta: 100, ); } Future openDateTimeBottomDialog() async { await $(#mobile_dateTime_search_filter_button).tap(); } Future selectDateTime(String dateTimeType) async { await $(find.text(dateTimeType)).tap(); await $.pump(const Duration(seconds: 2)); } Future openEmailWithSubject(String subject) async { final email = $(EmailTileBuilder) .which((view) => view.presentationEmail.subject == subject); await $.waitUntilVisible(email); await email.tap(); await $.pump(const Duration(seconds: 2)); } Future tapBackButton() async { await $(#search_email_back_button).tap(); } Future selectAttachmentFilter() async { await $.scrollUntilVisible( finder: $(#mobile_hasAttachment_search_filter_button), view: $(#search_filter_list_view), scrollDirection: AxisDirection.right, delta: 50, ); await $(#mobile_hasAttachment_search_filter_button).tap(); } Future openLabelListModal() async { await $(#mobile_labels_search_filter_button).tap(); } }