Skip to content

[cupertino_ui] Migrate route_test.dart to SemanticsHandle#11993

Open
Renzo-Olivares wants to merge 5 commits into
flutter:mainfrom
Renzo-Olivares:cupertino_ui_route_test_migration
Open

[cupertino_ui] Migrate route_test.dart to SemanticsHandle#11993
Renzo-Olivares wants to merge 5 commits into
flutter:mainfrom
Renzo-Olivares:cupertino_ui_route_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.

@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 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.

@Renzo-Olivares Renzo-Olivares marked this pull request as draft June 25, 2026 18:02
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 25, 2026
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Jun 25, 2026
@Renzo-Olivares Renzo-Olivares marked this pull request as ready for review June 25, 2026 18:23

@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 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.

Comment on lines 2043 to +2044
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
final semantics = SemanticsTester(tester);
final SemanticsHandle handle = tester.ensureSemantics();

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

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);

Comment on lines +2072 to +2075
expect(find.semantics.byLabel('Dismiss'), findsNothing);

debugDefaultTargetPlatformOverride = null;
semantics.dispose();
handle.dispose();

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

Since debugDefaultTargetPlatformOverride and handle are now cleaned up automatically via addTearDown, these manual cleanup lines can be removed.

    expect(find.semantics.byLabel('Dismiss'), findsNothing);

Comment on lines 2081 to +2082
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
final semantics = SemanticsTester(tester);
final SemanticsHandle handle = tester.ensureSemantics();

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

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);

Comment on lines 2111 to +2117
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();

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

Since debugDefaultTargetPlatformOverride and handle are now cleaned up automatically via addTearDown, these manual cleanup lines can be removed.

    expect(
      find.semantics.byLabel('Dismiss'),
      isSemantics(label: 'Dismiss', hasTapAction: true, hasDismissAction: true),
    );

@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 25, 2026
@Renzo-Olivares Renzo-Olivares added the CICD Run CI/CD label Jun 25, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 25, 2026
@Renzo-Olivares Renzo-Olivares added the CICD Run CI/CD label Jun 25, 2026
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