From 3293010a43c05edf8810eca1e4f6aa6cdbf31903 Mon Sep 17 00:00:00 2001 From: Denis Bowen <42016383+DBowen33@users.noreply.github.com> Date: Mon, 5 Aug 2024 18:38:58 -0500 Subject: [PATCH] added functionality to where SR will communicate button clicked (#152185) added functionality to onPressed method to communicate button press action to screen readers. Before: https://screencast.googleplex.com/cast/NjI2NzEyMzY3OTYyNTIxNnw1NjgyNGE3MC0wNQ After: https://screencast.googleplex.com/cast/NjUyODAxNzc0MzQ3ODc4NHwxNjBhZDZjNi1hOA fixes b/347102786 --- .../lib/use_cases/text_button.dart | 45 +++++++++++-------- .../test/text_button_test.dart | 16 ++++++- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/dev/a11y_assessments/lib/use_cases/text_button.dart b/dev/a11y_assessments/lib/use_cases/text_button.dart index ee83bf989f..4932d53d2f 100644 --- a/dev/a11y_assessments/lib/use_cases/text_button.dart +++ b/dev/a11y_assessments/lib/use_cases/text_button.dart @@ -26,7 +26,7 @@ class MainWidget extends StatefulWidget { } class MainWidgetState extends State { - double currentSliderValue = 20; + int _count = 0; @override Widget build(BuildContext context) { @@ -39,25 +39,32 @@ class MainWidgetState extends State { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text('This is a TextButton:'), - TextButton( - onPressed: () { }, - child: const Text('Action'), - ), - ], + MergeSemantics( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text('This is a TextButton:'), + TextButton( + onPressed: () { + setState(() { _count++; }); + }, + child: const Text('Action'), + ), + Text('Clicked $_count time(s).'), + ], + ), ), - const Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text('This is a disabled TextButton:'), - TextButton( - onPressed: null, - child: Text('Action'), - ), - ], + const MergeSemantics( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('This is a disabled TextButton:'), + TextButton( + onPressed: null, + child: Text('Action Disabled'), + ), + ], + ), ), ], ), diff --git a/dev/a11y_assessments/test/text_button_test.dart b/dev/a11y_assessments/test/text_button_test.dart index e3cbd1e9ae..46f0444595 100644 --- a/dev/a11y_assessments/test/text_button_test.dart +++ b/dev/a11y_assessments/test/text_button_test.dart @@ -10,6 +10,20 @@ import 'test_utils.dart'; void main() { testWidgets('text button can run', (WidgetTester tester) async { await pumpsUseCase(tester, TextButtonUseCase()); - expect(find.text('Action'), findsExactly(2)); + expect(find.text('Action'), findsOneWidget); + expect(find.text('Action Disabled'), findsOneWidget); + }); + + testWidgets('text button increments correctly when clicked', (WidgetTester tester) async { + await pumpsUseCase(tester, TextButtonUseCase()); + + expect(find.text('Action'), findsOneWidget); + await tester.tap(find.text('Action')); + await tester.pumpAndSettle(); + expect(find.text('Clicked 1 time(s).'), findsOneWidget); + + await tester.tap(find.text('Action')); + await tester.pumpAndSettle(); + expect(find.text('Clicked 2 time(s).'), findsOneWidget); }); }