[cupertino_ui] Migrate route_test.dart to SemanticsHandle#11993
Conversation
There was a problem hiding this comment.
Code Review
This pull request unskips the tests in packages/cupertino_ui/test/route_test.dart and refactors them to use tester.ensureSemantics() and standard semantics matchers instead of SemanticsTester. There are no review comments, and I have no feedback to provide.
There was a problem hiding this comment.
Code Review
This pull request removes a test skip annotation, replaces SemanticsTester with SemanticsHandle and standard semantics matchers, wraps dialog and popup presentation calls in unawaited, and replaces manual throw statements with fail(). The review feedback suggests utilizing addTearDown to guarantee that debugDefaultTargetPlatformOverride and SemanticsHandle are cleaned up if a test fails, allowing the removal of manual cleanup lines.
| debugDefaultTargetPlatformOverride = TargetPlatform.iOS; | ||
| final semantics = SemanticsTester(tester); | ||
| final SemanticsHandle handle = tester.ensureSemantics(); |
There was a problem hiding this comment.
Overriding debugDefaultTargetPlatformOverride without ensuring it is reset in an addTearDown block can leak the iOS platform override to subsequent tests if this test fails. Using addTearDown ensures that both the platform override and the SemanticsHandle are properly cleaned up regardless of test success or failure.
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
addTearDown(() {
debugDefaultTargetPlatformOverride = null;
});
final SemanticsHandle handle = tester.ensureSemantics();
addTearDown(handle.dispose);There was a problem hiding this comment.
ensureSemantics is no longer needed per @chunhtai.
| expect(find.semantics.byLabel('Dismiss'), findsNothing); | ||
|
|
||
| debugDefaultTargetPlatformOverride = null; | ||
| semantics.dispose(); | ||
| handle.dispose(); |
| debugDefaultTargetPlatformOverride = TargetPlatform.iOS; | ||
| final semantics = SemanticsTester(tester); | ||
| final SemanticsHandle handle = tester.ensureSemantics(); |
There was a problem hiding this comment.
Overriding debugDefaultTargetPlatformOverride without ensuring it is reset in an addTearDown block can leak the iOS platform override to subsequent tests if this test fails. Using addTearDown ensures that both the platform override and the SemanticsHandle are properly cleaned up regardless of test success or failure.
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
addTearDown(() {
debugDefaultTargetPlatformOverride = null;
});
final SemanticsHandle handle = tester.ensureSemantics();
addTearDown(handle.dispose);| expect( | ||
| semantics, | ||
| includesNodeWith( | ||
| actions: <SemanticsAction>[SemanticsAction.tap, SemanticsAction.dismiss], | ||
| label: 'Dismiss', | ||
| ), | ||
| find.semantics.byLabel('Dismiss'), | ||
| isSemantics(label: 'Dismiss', hasTapAction: true, hasDismissAction: true), | ||
| ); | ||
|
|
||
| debugDefaultTargetPlatformOverride = null; | ||
| semantics.dispose(); | ||
| handle.dispose(); |
There was a problem hiding this comment.
justinmc
left a comment
There was a problem hiding this comment.
LGTM minus ensureSemantics 👍
| child: Placeholder(), | ||
| ); | ||
| }, | ||
| unawaited( |
There was a problem hiding this comment.
I migrated all of these in the main tests but missed the ones in temporarily_disabled_tests, thanks for fixing.
| debugDefaultTargetPlatformOverride = TargetPlatform.iOS; | ||
| final semantics = SemanticsTester(tester); | ||
| final SemanticsHandle handle = tester.ensureSemantics(); |
There was a problem hiding this comment.
ensureSemantics is no longer needed per @chunhtai.
…er#188863) flutter/packages@274ed3e...e742106 2026-07-01 rmolivares@renzo-olivares.dev [cupertino_ui] Re-enable `tab_scaffold_test.dart` (flutter/packages#12064) 2026-07-01 jmccandless@google.com [material_ui] Port flutter/flutter flutter#184808 "Remove semantics_tester import from card_test.dart" (flutter/packages#11965) 2026-07-01 rmolivares@renzo-olivares.dev [cupertino_ui] Migrate `sliding_segmented_control_test.dart` to `SemanticsHandle` (flutter/packages#11979) 2026-07-01 rmolivares@renzo-olivares.dev [cupertino_ui] Migrate `route_test.dart` to `SemanticsHandle` (flutter/packages#11993) 2026-07-01 rmolivares@renzo-olivares.dev [cupertino_ui] Migrate `nav_bar_test.dart` to `SemanticsHandle` (flutter/packages#11980) 2026-07-01 rmolivares@renzo-olivares.dev [cupertino_ui] Migrate `segmented_control_test.dart` to `SemanticsHandle` (flutter/packages#11982) 2026-07-01 rmolivares@renzo-olivares.dev [cupertino_ui] Re-enable `text_field_test.dart` (flutter/packages#12067) 2026-06-30 r.anantheswar@gmail.com [camera_android_camerax] Pass targetVideoEncodingBitRate to Recorder (flutter/packages#11960) 2026-06-30 1063596+reidbaker@users.noreply.github.com [camera_android_camerax] Migrate check-readiness skill from bash to Dart (flutter/packages#11943) 2026-06-30 21270878+elliette@users.noreply.github.com [material_ui] Enable `time_picker_test` (flutter/packages#12061) 2026-06-30 36861262+QuncCccccc@users.noreply.github.com [cupertino_ui] Migrate checkbox_test.dart to SemanticsHandle (flutter/packages#12065) 2026-06-30 64674824+yashas-hm@users.noreply.github.com [image_picker] Handle limit: 1 in pickMultiImage and pickMultipleMedia gracefully (flutter/packages#11825) 2026-06-30 faheemabbas766@gmail.com [cross_file] Document native mimeType behavior (flutter/packages#11662) 2026-06-30 36861262+QuncCccccc@users.noreply.github.com [material_ui] Remove `image_data.dart` imports from `circle_avatar_test.dart`, `color_scheme_test.dart` (flutter/packages#12059) 2026-06-30 36861262+QuncCccccc@users.noreply.github.com [cupertino_ui] Remove `image_data.dart` import from `scaffold_test.dart` (flutter/packages#12060) 2026-06-30 36861262+QuncCccccc@users.noreply.github.com [cupertino_ui] Remove widgets import from menu_anchor_test.dart (flutter/packages#12068) 2026-06-30 21270878+elliette@users.noreply.github.com [material_ui] Enable `checkbox_list_tile_test` (flutter/packages#12007) 2026-06-30 louisehsu@google.com [in_app_purchase_storekit] Expose quantity in Transactions (flutter/packages#11879) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC flutter-ecosystem@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Part of flutter/flutter#182636 and flutter/flutter#188395
This PR:
widgets/semantics_tester.dart. ReplacedSemanticsTesterwithSemanticsHandle.@Skipannotation, all tests in this file has passed.semantics_tester.darthas existed incupertino_ui, so we can directly importsemantics_tester.dart;test/folder.Pre-Review Checklist
[shared_preferences]///).