From b329894b4da09045e06ca7fb4c7cbb56f3f61faa Mon Sep 17 00:00:00 2001 From: Hans Muller Date: Mon, 3 Oct 2016 12:52:06 -0700 Subject: [PATCH] Added byTooltip() to CommonFinders (#6178) --- .../test/example_code_display_test.dart | 8 +------- examples/flutter_gallery/test/pesto_test.dart | 10 ---------- examples/flutter_gallery/test/smoke_test.dart | 15 ++------------- examples/flutter_gallery/test/update_test.dart | 11 +---------- packages/flutter_test/lib/src/finders.dart | 17 ++++++++++++++++- 5 files changed, 20 insertions(+), 41 deletions(-) diff --git a/examples/flutter_gallery/test/example_code_display_test.dart b/examples/flutter_gallery/test/example_code_display_test.dart index b3703c992f5..f5abce713d3 100644 --- a/examples/flutter_gallery/test/example_code_display_test.dart +++ b/examples/flutter_gallery/test/example_code_display_test.dart @@ -6,12 +6,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_gallery/gallery/app.dart'; import 'package:flutter_test/flutter_test.dart'; -Finder byTooltip(WidgetTester tester, String message) { - return find.byWidgetPredicate((Widget widget) { - return widget is Tooltip && widget.message == message; - }); -} - void main() { TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized(); if (binding is LiveTestWidgetsFlutterBinding) @@ -44,7 +38,7 @@ void main() { await tester.pump(); // start animation await tester.pump(const Duration(seconds: 1)); // end animation - await tester.tap(byTooltip(tester, 'Show example code')); + await tester.tap(find.byTooltip('Show example code')); await tester.pump(); // start animation await tester.pump(const Duration(seconds: 1)); // end animation diff --git a/examples/flutter_gallery/test/pesto_test.dart b/examples/flutter_gallery/test/pesto_test.dart index fca24169b22..5c39bd8d9f4 100644 --- a/examples/flutter_gallery/test/pesto_test.dart +++ b/examples/flutter_gallery/test/pesto_test.dart @@ -6,16 +6,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_gallery/gallery/app.dart'; -Finder byTooltip(WidgetTester tester, String message) { - return find.byWidgetPredicate((Widget widget) { - return widget is Tooltip && widget.message == message; - }); -} - -Finder findNavigationMenuButton(WidgetTester tester) { - return byTooltip(tester, 'Open navigation menu'); -} - void main() { TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized(); if (binding is LiveTestWidgetsFlutterBinding) diff --git a/examples/flutter_gallery/test/smoke_test.dart b/examples/flutter_gallery/test/smoke_test.dart index 077cde3b0b3..64f1e86c677 100644 --- a/examples/flutter_gallery/test/smoke_test.dart +++ b/examples/flutter_gallery/test/smoke_test.dart @@ -24,17 +24,6 @@ Finder findGalleryItemByRouteName(WidgetTester tester, String routeName) { }); } -Finder byTooltip(WidgetTester tester, String message) { - return find.byWidgetPredicate((Widget widget) { - return widget is Tooltip && widget.message == message; - }); -} - -Finder findNavigationMenuButton(WidgetTester tester) => - byTooltip(tester, 'Open navigation menu'); - -Finder findBackButton(WidgetTester tester) => byTooltip(tester, 'Back'); - // Start a gallery demo and then go back. This function assumes that the // we're starting on the home route and that the submenu that contains // the item for a demo that pushes route 'routeName' is already open. @@ -50,7 +39,7 @@ Future smokeDemo(WidgetTester tester, String routeName) async { expect(find.text(kCaption), findsNothing); // Go back - Finder backButton = findBackButton(tester); + Finder backButton = find.byTooltip('Back'); expect(backButton, findsOneWidget); await tester.tap(backButton); await tester.pump(); // Start the pop "back" operation. @@ -86,7 +75,7 @@ void main() { tester.binding.debugAssertNoTransientCallbacks('A transient callback was still active after leaving route $routeName'); } - Finder navigationMenuButton = findNavigationMenuButton(tester); + Finder navigationMenuButton = find.byTooltip('Open navigation menu'); expect(navigationMenuButton, findsOneWidget); await tester.tap(navigationMenuButton); await tester.pump(); // Start opening drawer. diff --git a/examples/flutter_gallery/test/update_test.dart b/examples/flutter_gallery/test/update_test.dart index 5f98c4f74a3..184a3d8e938 100644 --- a/examples/flutter_gallery/test/update_test.dart +++ b/examples/flutter_gallery/test/update_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_gallery/gallery/app.dart'; @@ -11,14 +10,6 @@ Future mockUpdateUrlFetcher() { return new Future.value('http://www.example.com/'); } -Finder byTooltip(WidgetTester tester, String message) { - return find.byWidgetPredicate((Widget widget) { - return widget is Tooltip && widget.message == message; - }); -} - -Finder findBackButton(WidgetTester tester) => byTooltip(tester, 'Back'); - void main() { TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized(); if (binding is LiveTestWidgetsFlutterBinding) binding.allowAllFrames = true; @@ -38,7 +29,7 @@ void main() { await tester.pump(); // Launch shrine await tester.pump(const Duration(seconds: 1)); // transition is complete - Finder backButton = findBackButton(tester); + Finder backButton = find.byTooltip('Back'); expect(backButton, findsOneWidget); await tester.tap(backButton); await tester.pump(); // Start the pop "back" operation. diff --git a/packages/flutter_test/lib/src/finders.dart b/packages/flutter_test/lib/src/finders.dart index aa80002020a..02534089937 100644 --- a/packages/flutter_test/lib/src/finders.dart +++ b/packages/flutter_test/lib/src/finders.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:flutter/widgets.dart'; +import 'package:flutter/material.dart'; import 'all_elements.dart'; @@ -124,6 +124,21 @@ class CommonFinders { return new _WidgetPredicateFinder(predicate, skipOffstage: skipOffstage); } + /// Finds Tooltip widgets with the given message. + /// + /// Example: + /// + /// expect(tester, hasWidget(find.byTooltip('Back'))); + /// + /// If the `skipOffstage` argument is true (the default), then this skips + /// nodes that are [Offstage] or that are from inactive [Route]s. + Finder byTooltip(String message, { bool skipOffstage: true }) { + return byWidgetPredicate( + (Widget widget) => widget is Tooltip && widget.message == message, + skipOffstage: skipOffstage, + ); + } + /// Finds widgets using an element predicate. /// /// Example: