diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index 3678d1873d..1ea32a71a1 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -330,7 +330,6 @@ final Set _knownMissingTests = { 'examples/api/test/widgets/navigator/navigator_state.restorable_push.0_test.dart', 'examples/api/test/widgets/focus_manager/focus_node.unfocus.0_test.dart', 'examples/api/test/widgets/framework/build_owner.0_test.dart', - 'examples/api/test/widgets/autofill/autofill_group.0_test.dart', 'examples/api/test/widgets/nested_scroll_view/nested_scroll_view_state.0_test.dart', 'examples/api/test/widgets/scroll_position/scroll_metrics_notification.0_test.dart', 'examples/api/test/widgets/media_query/media_query_data.system_gesture_insets.0_test.dart', diff --git a/examples/api/test/widgets/autofill/autofill_group.0_test.dart b/examples/api/test/widgets/autofill/autofill_group.0_test.dart new file mode 100644 index 0000000000..581cbca2b0 --- /dev/null +++ b/examples/api/test/widgets/autofill/autofill_group.0_test.dart @@ -0,0 +1,102 @@ +// 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/autofill/autofill_group.0.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('AutofillGroupExample renders and updates correctly', (WidgetTester tester) async { + await tester.pumpWidget(const example.AutofillGroupExampleApp()); + + expect(find.text('Shipping address'), findsOneWidget); + expect(find.text('Billing address'), findsOneWidget); + expect(find.byType(TextField), findsNWidgets(5)); + expect(find.byType(Checkbox), findsOneWidget); + expect(find.text('Contact Phone Number'), findsOneWidget); + + final Checkbox checkbox = tester.widget(find.byType(Checkbox)); + expect(checkbox.value, isTrue); + + // Tap to uncheck the checkbox (to show billing address fields). + await tester.tap(find.byType(Checkbox)); + await tester.pump(); + + expect( + find.byType(AutofillGroup), + findsNWidgets(3), // 3 AutofillGroup widgets created + ); + + expect( + find.byType(TextField), + findsNWidgets(7), // 5 initial + 2 billing address fields + ); + + final TextField shippingAddress1 = tester.widget( + find.byType(TextField).at(0), + ); + expect( + shippingAddress1.autofillHints, + contains(AutofillHints.streetAddressLine1), + ); + + final TextField shippingAddress2 = tester.widget( + find.byType(TextField).at(1), + ); + expect( + shippingAddress2.autofillHints, + contains(AutofillHints.streetAddressLine2), + ); + + final TextField billingAddress1 = tester.widget( + find.byType(TextField).at(2), + ); + expect( + billingAddress1.autofillHints, + contains(AutofillHints.streetAddressLine1), + ); + + final TextField billingAddress2 = tester.widget( + find.byType(TextField).at(3), + ); + expect( + billingAddress2.autofillHints, + contains(AutofillHints.streetAddressLine2), + ); + + // Credit card information fields. + final TextField creditCardNumber = tester.widget( + find.byType(TextField).at(4), + ); + expect( + creditCardNumber.autofillHints, + contains(AutofillHints.creditCardNumber), + ); + + final TextField creditCardSecurityCode = tester.widget( + find.byType(TextField).at(5), + ); + expect( + creditCardSecurityCode.autofillHints, + contains(AutofillHints.creditCardSecurityCode), + ); + + // Contact phone number field. + final TextField phoneNumber = tester.widget( + find.byType(TextField).at(6), + ); + expect( + phoneNumber.autofillHints, + contains(AutofillHints.telephoneNumber), + ); + + await tester.tap(find.byType(Checkbox)); + await tester.pump(); + + expect( + find.byType(TextField), + findsNWidgets(5), + ); + }); +}