diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index c27468c3e6..58c8e547a0 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -431,7 +431,6 @@ final Set _knownMissingTests = { 'examples/api/test/widgets/actions/action_listener.0_test.dart', 'examples/api/test/widgets/actions/focusable_action_detector.0_test.dart', 'examples/api/test/widgets/color_filter/color_filtered.0_test.dart', - 'examples/api/test/widgets/focus_scope/focus.2_test.dart', 'examples/api/test/widgets/focus_scope/focus_scope.0_test.dart', 'examples/api/test/widgets/scroll_view/custom_scroll_view.1_test.dart', 'examples/api/test/widgets/inherited_notifier/inherited_notifier.0_test.dart', diff --git a/examples/api/test/widgets/focus_scope/focus.2_test.dart b/examples/api/test/widgets/focus_scope/focus.2_test.dart new file mode 100644 index 0000000000..37c9f50f88 --- /dev/null +++ b/examples/api/test/widgets/focus_scope/focus.2_test.dart @@ -0,0 +1,42 @@ +// 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_api_samples/widgets/focus_scope/focus.2.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Adds children through button', (WidgetTester tester) async { + await tester.pumpWidget(const example.FocusExampleApp()); + expect(find.byIcon(Icons.add), findsOneWidget); + expect(find.text('CHILD 0'), findsOneWidget); + + for (int i = 1; i <= 20; i += 1) { + await tester.tap(find.byIcon(Icons.add)); + await tester.pumpAndSettle(); + expect(find.text('CHILD $i'), findsOneWidget); + expect(find.textContaining('CHILD '), findsNWidgets(i + 1)); + } + }); + + testWidgets('Inserts focus nodes', (WidgetTester tester) async { + await tester.pumpWidget(const example.FocusExampleApp()); + expect(find.byIcon(Icons.add), findsOneWidget); + + for (int i = 0; i <= 10; i += 1) { + expect(find.text('CHILD $i'), findsOneWidget); + final ActionChip chip = tester.widget(find.ancestor( + of: find.text('CHILD $i'), + matching: find.byType(ActionChip) + )); + expect(chip.focusNode, isNotNull); + expect(chip.focusNode!.hasPrimaryFocus, isTrue); + expect(chip.focusNode!.debugLabel, 'Child $i'); + + await tester.tap(find.byIcon(Icons.add)); + await tester.pumpAndSettle(); + } + }); +}