@@ -301,6 +301,98 @@ void main() {
301
301
});
302
302
});
303
303
304
+ group ('byTooltip' , () {
305
+ testWidgets ('finds widgets by tooltip' , (WidgetTester tester) async {
306
+ await tester.pumpWidget (_boilerplate (
307
+ const Tooltip (
308
+ message: 'Tooltip Message' ,
309
+ child: Text ('+' ),
310
+ ),
311
+ ));
312
+ expect (find.byTooltip ('Tooltip Message' ), findsOneWidget);
313
+ });
314
+
315
+ testWidgets ('finds widgets with tooltip by RegExp' , (WidgetTester tester) async {
316
+ await tester.pumpWidget (_boilerplate (
317
+ const Tooltip (
318
+ message: 'Tooltip Message' ,
319
+ child: Text ('+' ),
320
+ ),
321
+ ));
322
+ expect (find.byTooltip ('Tooltip' ), findsNothing);
323
+ expect (find.byTooltip (RegExp (r'^Tooltip' )), findsOneWidget);
324
+ });
325
+
326
+ testWidgets ('finds widgets by rich text tooltip' , (WidgetTester tester) async {
327
+ await tester.pumpWidget (_boilerplate (
328
+ const Tooltip (
329
+ richMessage: TextSpan (
330
+ children: < InlineSpan > [
331
+ TextSpan (text: 'Tooltip ' ),
332
+ TextSpan (text: 'Message' ),
333
+ ]),
334
+ child: Text ('+' ),
335
+ ),
336
+ ));
337
+ expect (find.byTooltip ('Tooltip Message' ), findsOneWidget);
338
+ });
339
+
340
+ testWidgets ('finds widgets with rich text tooltip by RegExp' , (WidgetTester tester) async {
341
+ await tester.pumpWidget (_boilerplate (
342
+ const Tooltip (
343
+ richMessage: TextSpan (
344
+ children: < InlineSpan > [
345
+ TextSpan (text: 'Tooltip ' ),
346
+ TextSpan (text: 'Message' ),
347
+ ]),
348
+ child: Text ('+' ),
349
+ ),
350
+ ));
351
+ expect (find.byTooltip ('Tooltip M' ), findsNothing);
352
+ expect (find.byTooltip (RegExp (r'^Tooltip M' )), findsOneWidget);
353
+ });
354
+
355
+ testWidgets ('finds empty string with tooltip' , (WidgetTester tester) async {
356
+ await tester.pumpWidget (_boilerplate (
357
+ const Tooltip (
358
+ message: '' ,
359
+ child: Text ('+' ),
360
+ ),
361
+ ));
362
+ expect (find.byTooltip ('' ), findsOneWidget);
363
+
364
+ await tester.pumpWidget (_boilerplate (
365
+ const Tooltip (
366
+ richMessage: TextSpan (
367
+ children: < InlineSpan > [
368
+ TextSpan (text: '' ),
369
+ ]),
370
+ child: Text ('+' ),
371
+ ),
372
+ ));
373
+ expect (find.byTooltip ('' ), findsOneWidget);
374
+
375
+ await tester.pumpWidget (_boilerplate (
376
+ const Tooltip (
377
+ message: '' ,
378
+ child: Text ('+' ),
379
+ ),
380
+ ));
381
+ expect (find.byTooltip (RegExp (r'^$' )), findsOneWidget);
382
+
383
+ await tester.pumpWidget (_boilerplate (
384
+ const Tooltip (
385
+ richMessage: TextSpan (
386
+ children: < InlineSpan > [
387
+ TextSpan (text: '' ),
388
+ ]),
389
+ child: Text ('+' ),
390
+ ),
391
+ ));
392
+ expect (find.byTooltip (RegExp (r'^$' )), findsOneWidget);
393
+ });
394
+ });
395
+
304
396
group ('hitTestable' , () {
305
397
testWidgets ('excludes non-hit-testable widgets' ,
306
398
(WidgetTester tester) async {
@@ -1356,10 +1448,17 @@ void main() {
1356
1448
Widget _boilerplate (Widget child) {
1357
1449
return Directionality (
1358
1450
textDirection: TextDirection .ltr,
1359
- child: child,
1451
+ child: Navigator (
1452
+ onGenerateRoute: (RouteSettings settings) {
1453
+ return MaterialPageRoute <void >(
1454
+ builder: (BuildContext context) => child,
1455
+ );
1456
+ },
1457
+ ),
1360
1458
);
1361
1459
}
1362
1460
1461
+
1363
1462
class SimpleCustomSemanticsWidget extends LeafRenderObjectWidget {
1364
1463
const SimpleCustomSemanticsWidget (this .label, {super .key});
1365
1464
0 commit comments