launch.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import 'dart:ui';
  2. import 'package:appflowy/generated/locale_keys.g.dart';
  3. import 'package:appflowy/plugins/document/presentation/banner.dart';
  4. import 'package:appflowy/plugins/document/presentation/share/share_button.dart';
  5. import 'package:appflowy/user/presentation/skip_log_in_screen.dart';
  6. import 'package:appflowy/workspace/presentation/home/home_stack.dart';
  7. import 'package:appflowy/workspace/presentation/home/menu/app/header/add_button.dart';
  8. import 'package:appflowy/workspace/presentation/home/menu/app/section/item.dart';
  9. import 'package:easy_localization/easy_localization.dart';
  10. import 'package:flowy_infra_ui/flowy_infra_ui.dart';
  11. import 'package:flutter_test/flutter_test.dart';
  12. import 'base.dart';
  13. const String readme = 'Read me';
  14. extension AppFlowyLaunch on WidgetTester {
  15. Future<void> tapGoButton() async {
  16. final goButton = find.byType(GoButton);
  17. await tapButton(goButton);
  18. }
  19. Future<void> tapCreateButton() async {
  20. await tapButtonWithName(LocaleKeys.settings_files_create.tr());
  21. }
  22. void expectToSeeWelcomePage() {
  23. expect(find.byType(HomeStack), findsOneWidget);
  24. expect(find.textContaining('Read me'), findsNWidgets(2));
  25. }
  26. Future<void> tapAddButton() async {
  27. final addButton = find.byType(AddButton);
  28. await tapButton(addButton);
  29. }
  30. Future<void> tapCreateDocumentButton() async {
  31. await tapButtonWithName(LocaleKeys.document_menuName.tr());
  32. }
  33. Finder findPageName(String name) {
  34. return find.byWidgetPredicate(
  35. (widget) => widget is ViewSectionItem && widget.view.name == name,
  36. );
  37. }
  38. void expectToSeePageName(String name) {
  39. final pageName = findPageName(name);
  40. expect(pageName, findsOneWidget);
  41. }
  42. void expectNotToSeePageName(String name) {
  43. final pageName = findPageName(name);
  44. expect(pageName, findsNothing);
  45. }
  46. Future<void> hoverOnPageName(String name) async {
  47. final pageName = find.byWidgetPredicate(
  48. (widget) => widget is ViewSectionItem && widget.view.name == name,
  49. );
  50. final gesture = await createGesture(kind: PointerDeviceKind.mouse);
  51. await gesture.addPointer(location: Offset.zero);
  52. addTearDown(gesture.removePointer);
  53. await pump();
  54. await gesture.moveTo(getCenter(pageName));
  55. await pumpAndSettle();
  56. }
  57. Future<void> tapPageOptionButton() async {
  58. final optionButton = find.byType(ViewDisclosureButton);
  59. await tapButton(optionButton);
  60. }
  61. Future<void> tapDeletePageButton() async {
  62. await tapPageOptionButton();
  63. await tapButtonWithName(ViewDisclosureAction.delete.name);
  64. }
  65. void expectToSeeDocumentBanner() {
  66. expect(find.byType(DocumentBanner), findsOneWidget);
  67. }
  68. void expectNotToSeeDocumentBanner() {
  69. expect(find.byType(DocumentBanner), findsNothing);
  70. }
  71. Future<void> tapRestoreButton() async {
  72. final restoreButton = find.textContaining(
  73. LocaleKeys.deletePagePrompt_restore.tr(),
  74. );
  75. await tapButton(restoreButton);
  76. }
  77. Future<void> tapDeletePermanentlyButton() async {
  78. final restoreButton = find.textContaining(
  79. LocaleKeys.deletePagePrompt_deletePermanent.tr(),
  80. );
  81. await tapButton(restoreButton);
  82. }
  83. Future<void> tapShareButton() async {
  84. final shareButton = find.byWidgetPredicate(
  85. (widget) => widget is DocumentShareButton,
  86. );
  87. await tapButton(shareButton);
  88. }
  89. Future<void> tapMarkdownButton() async {
  90. final markdownButton = find.textContaining(
  91. LocaleKeys.shareAction_markdown.tr(),
  92. );
  93. await tapButton(markdownButton);
  94. }
  95. void expectToExportSuccess() {
  96. final exportSuccess = find.byWidgetPredicate(
  97. (widget) =>
  98. widget is FlowyText &&
  99. widget.title == LocaleKeys.settings_files_exportFileSuccess.tr(),
  100. );
  101. expect(exportSuccess, findsOneWidget);
  102. }
  103. }