Add test for focus_traversal_group.0.dart (#151591)

Contributes to https://github.com/flutter/flutter/issues/130459

It adds a test for
- `examples/api/lib/widgets/focus_traversal/focus_traversal_group.0.dart`
This commit is contained in:
Valentin Vignal
2024-07-23 15:01:09 +08:00
committed by GitHub
parent 3a4d51f118
commit 43da705701
2 changed files with 45 additions and 1 deletions

View File

@@ -0,0 +1,45 @@
// 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:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_api_samples/widgets/focus_traversal/focus_traversal_group.0.dart' as example;
import 'package:flutter_test/flutter_test.dart';
void main() {
bool hasFocus(WidgetTester tester, String text) {
return Focus.of(tester.element(find.text(text))).hasPrimaryFocus;
}
testWidgets('The focus updates should follow the focus traversal groups policy', (WidgetTester tester) async {
await tester.pumpWidget(
const example.FocusTraversalGroupExampleApp(),
);
// Set the focus to the first button.
Focus.of(tester.element(find.text('num: 0'))).requestFocus();
await tester.pump();
expect(hasFocus(tester, 'num: 0'), isTrue);
const List<String> focusOrder = <String>[
'num: 1',
'num: 2',
'String: A',
'String: B',
'String: C',
'ignored num: 3',
'ignored num: 2',
'ignored num: 1',
'num: 0',
];
for (final String text in focusOrder) {
await tester.sendKeyEvent(LogicalKeyboardKey.tab);
await tester.pump();
expect(hasFocus(tester, text), isTrue);
}
});
}