Skip to content

[cupertino_ui] Migrate picker_test.dart to SemanticsHandle#12008

Open
Renzo-Olivares wants to merge 2 commits into
flutter:mainfrom
Renzo-Olivares:cupertino_ui_picker_test_migration
Open

[cupertino_ui] Migrate picker_test.dart to SemanticsHandle#12008
Renzo-Olivares wants to merge 2 commits into
flutter:mainfrom
Renzo-Olivares:cupertino_ui_picker_test_migration

Conversation

@Renzo-Olivares

Copy link
Copy Markdown
Contributor

Part of flutter/flutter#182636 and flutter/flutter#188395

This PR:

  • Removed the cross-import of widgets/semantics_tester.dart. Replaced SemanticsTester with SemanticsHandle.
  • Removed @Skip annotation, all tests in this file has passed. semantics_tester.dart has existed in cupertino_ui, so we can directly import semantics_tester.dart;
  • Moved the file to test/ folder.

Pre-Review Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools.
  • I read the [Tree Hygiene] page, which explains my responsibilities.
  • I read and followed the [relevant style guides] and ran [the auto-formatter].
  • I signed the [CLA].
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • I [linked to at least one issue that this PR fixes] in the description above.
  • I followed [the version and CHANGELOG instructions], using [semantic versioning] and the [repository CHANGELOG style], or I have commented below to indicate which documented exception this PR falls under[^1].
  • I updated/added any relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or I have commented below to indicate which [test exemption] this PR falls under[^1].
  • All existing and new tests are passing.

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Jun 25, 2026
@github-actions github-actions Bot added triage-framework Should be looked at in framework triage p: cupertino_ui labels Jun 25, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request removes the skip annotation from picker_test.dart and refactors the semantics tests to use SemanticsHandle and tester.getSemantics instead of SemanticsTester. The review feedback suggests replacing the use of private class name strings (_CupertinoPickerSemantics) in widget predicates with a cleaner search for the public ListWheelScrollView widget.

Comment on lines +88 to +92
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tried the suggestion but it does not work, tester.getSemantics(find.byType(ListWheelScrollView) does not return the node of _CupertinoPickerSemantics (ancestor).

Comment on lines +108 to +112
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Comment on lines +156 to +160
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Comment on lines +171 to +175
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Comment on lines +186 to +190
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD p: cupertino_ui triage-framework Should be looked at in framework triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant