mirror of
https://github.com/flutter/flutter
synced 2024-10-02 14:34:22 +00:00
5a87890277
Add autofocus=true to first TextButton in dialog so that focus automatically goes to an interactive element when dialog is opened. Before: https://screencast.googleplex.com/cast/NTYxNTczMTk2MDk3MTI2NHxlMjAyOTMzZi1lNw After: https://screencast.googleplex.com/cast/NTk1NzMxNjYxNTYwMjE3NnxlYWNlM2Q1MC1jYw fixes b/338656477 NOTE: This would be a good candidate to update the documentation for Dialogs and TextButtons to encourage the user to add autofocus=true on at least one button so that focus automatically goes to an interactive element instead of the actual Dialog element.
53 lines
1.8 KiB
Dart
53 lines
1.8 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'package:a11y_assessments/use_cases/dialog.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import 'test_utils.dart';
|
|
|
|
void main() {
|
|
testWidgets('dialog can run', (WidgetTester tester) async {
|
|
await pumpsUseCase(tester, DialogUseCase());
|
|
expect(find.text('Show Dialog'), findsOneWidget);
|
|
|
|
Future<void> invokeDialog() async {
|
|
await tester.tap(find.text('Show Dialog'));
|
|
await tester.pumpAndSettle();
|
|
expect(find.text('This is a typical dialog.'), findsOneWidget);
|
|
}
|
|
|
|
await invokeDialog();
|
|
await tester.tap(find.text('OK'));
|
|
await tester.pumpAndSettle();
|
|
expect(find.text('This is a typical dialog.'), findsNothing);
|
|
|
|
await invokeDialog();
|
|
await tester.tap(find.text('Cancel'));
|
|
await tester.pumpAndSettle();
|
|
expect(find.text('This is a typical dialog.'), findsNothing);
|
|
});
|
|
|
|
testWidgets('ok button has autofocus when dialog opens', (WidgetTester tester) async {
|
|
await pumpsUseCase(tester, DialogUseCase());
|
|
|
|
Future<void> invokeDialog() async {
|
|
await tester.tap(find.text('Show Dialog'));
|
|
await tester.pumpAndSettle();
|
|
}
|
|
|
|
await invokeDialog();
|
|
final Finder okButton = find.byKey(const Key('OK Button'));
|
|
expect((okButton.evaluate().single.widget as TextButton).autofocus, true);
|
|
});
|
|
|
|
testWidgets('dialog has one h1 tag', (WidgetTester tester) async {
|
|
await pumpsUseCase(tester, DialogUseCase());
|
|
final Finder findHeadingLevelOnes = find.bySemanticsLabel('Dialog Demo');
|
|
await tester.pumpAndSettle();
|
|
expect(findHeadingLevelOnes, findsOne);
|
|
});
|
|
}
|