Skip to content

Remove Material from Live Text test in editable_text_test#185242

Closed
momshaddinury wants to merge 2 commits into
flutter:masterfrom
momshaddinury:cleanup/editable-text-test-import
Closed

Remove Material from Live Text test in editable_text_test#185242
momshaddinury wants to merge 2 commits into
flutter:masterfrom
momshaddinury:cleanup/editable-text-test-import

Conversation

@momshaddinury
Copy link
Copy Markdown
Contributor

The test Tapping the Live Text button calls onLiveTextInput in packages/flutter/test/widgets/editable_text_test.dart was flagged with an in-code TODO:

// TODO(justinmc): Widgets tests should not import Material.
// https://github.com/flutter/flutter/issues/177028

This test lives in the Widgets layer but was using MaterialApp, Typography.material2018(), Colors.blue, Colors.grey, and materialTextSelectionHandleControls — none of which are actually required for what it exercises (the Live Text button inside CupertinoAdaptiveTextSelectionToolbar).

Changes:

  • Replace MaterialApp with TestWidgetsApp (from widgets_app_tester.dart, already imported in this file).
  • Replace Typography.material2018().black.titleMedium! with const TextStyle(fontSize: 14.0).
  • Replace Colors.blue / Colors.grey with raw Color values, matching the pattern already used by the adjacent test in the same file.
  • Replace materialTextSelectionHandleControls with emptyTextSelectionControls.
  • Remove the TODO.

The file-level package:flutter/material.dart import remains because many other tests in this 19k-line file still legitimately depend on it. This PR resolves the one flagged test block.

Related Issues

Part of #177028
Related: #177412

Tests

No behavior change; the same assertions are preserved. Verified locally with:

flutter test --name "Tapping the Live Text button calls onLiveTextInput" packages/flutter/test/widgets/editable_text_test.dart

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide].
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • All existing and new tests are passing.

@github-actions github-actions Bot added a: text input Entering text in a text field or keyboard related problems framework flutter/packages/flutter repository. See also f: labels. labels Apr 18, 2026
@momshaddinury
Copy link
Copy Markdown
Contributor Author

@justinmc I just realized that after submitting a couple of similar pull requests, I probably shouldn't have since the todo had your name on it. I'm trying to make my first contribution and found this task to be the simplest one to tackle. Please feel free to close this if you prefer.

Copy link
Copy Markdown
Contributor

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

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 refactors editable_text_test.dart by replacing MaterialApp with TestWidgetsApp and removing Material-specific dependencies. The review feedback suggests reverting the font size to 16.0 to maintain consistency with the original test configuration and using uppercase hex digits for color literals to comply with style conventions.

Comment thread packages/flutter/test/widgets/editable_text_test.dart Outdated
Comment thread packages/flutter/test/widgets/editable_text_test.dart Outdated
@momshaddinury momshaddinury force-pushed the cleanup/editable-text-test-import branch from 64b915c to 1f7e08a Compare April 18, 2026 09:43
Copy link
Copy Markdown
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

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

LGTM 👍

I probably shouldn't have since the todo had your name on it.

No worries at all, you are saving time for me and others and I'm grateful for your contributions! Typically if the issue linked in the TODO has no assignee, then you are free to work on it regardless of whose name is on the TODO.

@justinmc justinmc added the CICD Run CI/CD label Apr 29, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Apr 29, 2026
@justinmc justinmc moved this from Todo to In Progress in Test cross-imports Review Queue Apr 29, 2026
@justinmc justinmc added the CICD Run CI/CD label Apr 29, 2026
@momshaddinury
Copy link
Copy Markdown
Contributor Author

@justinmc we should close this. Because it is incorrect from recent findings here #185271.

@justinmc justinmc closed this Apr 29, 2026
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Test cross-imports Review Queue Apr 29, 2026
pull Bot pushed a commit to NOUIY/flutter that referenced this pull request May 21, 2026
…r package (flutter#185271)

Several tests under `packages/flutter/test/` were importing
`package:flutter/material.dart` even though they only exercise APIs from
`package:flutter/widgets.dart` (or lower layers like `painting`,
`animation`, `gestures`). Pulling in Material unnecessarily increases
cross-package coupling between these tests and the Material library and
works against the cross-import hygiene enforced by
`dev/bots/check_tests_cross_imports.dart`.

This PR:

- Switches the import from `package:flutter/material.dart` to
`package:flutter/widgets.dart` in tests that do not reference any
Material symbols.
- Where tests referenced `Colors.*` only, replaces those with the
equivalent raw `const Color(0x…)` values.
- Where tests wrapped widgets in `MaterialApp` purely as a
`Directionality`/`MediaQuery`/localization host, swaps `MaterialApp` for
`TestWidgetsApp` from `widgets_app_tester.dart`, and replaces
`materialTextSelectionControls` with `emptyTextSelectionControls`.
- Removes the corresponding entry from the
`check_tests_cross_imports.dart` allowlist where applicable.

No production code is modified and no test semantics change — the tests
exercise the same widget/painting/gesture/animation behavior, just
without dragging in Material.

## Files changed

Tests updated:

- `packages/flutter/test/gestures/force_press_test.dart`
- `packages/flutter/test/gestures/transformed_scale_test.dart`
-
`packages/flutter/test/widgets/default_text_editing_shortcuts_test.dart`
- `packages/flutter/test/widgets/semantics_owner_test.dart`
- `packages/flutter/test/animation/animation_sheet_test.dart`
- `packages/flutter/test/painting/star_border_test.dart`
- `packages/flutter/test/painting/paint_image_test.dart`

Allowlist updated:

- `dev/bots/check_tests_cross_imports.dart`

## Scope note — two files intentionally left out

Two test files originally staged in this cleanup were dropped after
local test runs showed they aren't a clean Material → widgets swap.
Details and a request for guidance are in a separate PR comment below:

- `packages/flutter/test/widgets/editable_text_scribe_test.dart` — the
handle-tap tests rely on `CustomPaint` widgets painted by
`materialTextSelectionControls`; `emptyTextSelectionControls` paints
nothing, so the handle finders return 0 widgets.
- `packages/flutter/test/widgets/editable_text_test.dart` (Live Text
test only) — swapping `MaterialApp` → `TestWidgetsApp` triggers `A
FocusManager was used after being disposed` in the shared `tearDown`,
cascading into five downstream a11y/semantics tests.

Both files remain on the `check_tests_cross_imports.dart` allowlist and
can be picked up in follow-up PRs once we agree on the approach.

## Related issues

- Part of umbrella issue flutter#177028 (Framework unit tests
shouldn't cross-import libraries).
- Also addresses flutter#177412 (No legacy Material imports in
tests).

## Context — why one PR

Per reviewer guidance from @navaronbracke on flutter#185238
([comment](flutter#185238 (comment))),
similar Material-import cleanups are being consolidated into a single PR
that lands closer to the ~300–500-line "sweet spot" rather than as many
tiny per-file PRs.

## Superseded PRs (please close once this lands)

The following open PRs are subsumed by this one and can be closed if
this PR is approved (see [this
comment](flutter#185238 (comment))):

- flutter#185236 — Remove unused material.dart import from
force_press_test.dart
- flutter#185241 — Remove unnecessary Material import from
default_text_editing_shortcuts_test

Not superseded (corresponding files were dropped from this PR — see the
scope note above):

- flutter#185238 — editable_text_scribe_test
- flutter#185242 — editable_text_test Live Text

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt]. <!-- test-only cleanup: no production code or
test-behavior changes; existing coverage is preserved. -->
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
matthewhendrix pushed a commit to matthewhendrix/flutter that referenced this pull request May 23, 2026
…r package (flutter#185271)

Several tests under `packages/flutter/test/` were importing
`package:flutter/material.dart` even though they only exercise APIs from
`package:flutter/widgets.dart` (or lower layers like `painting`,
`animation`, `gestures`). Pulling in Material unnecessarily increases
cross-package coupling between these tests and the Material library and
works against the cross-import hygiene enforced by
`dev/bots/check_tests_cross_imports.dart`.

This PR:

- Switches the import from `package:flutter/material.dart` to
`package:flutter/widgets.dart` in tests that do not reference any
Material symbols.
- Where tests referenced `Colors.*` only, replaces those with the
equivalent raw `const Color(0x…)` values.
- Where tests wrapped widgets in `MaterialApp` purely as a
`Directionality`/`MediaQuery`/localization host, swaps `MaterialApp` for
`TestWidgetsApp` from `widgets_app_tester.dart`, and replaces
`materialTextSelectionControls` with `emptyTextSelectionControls`.
- Removes the corresponding entry from the
`check_tests_cross_imports.dart` allowlist where applicable.

No production code is modified and no test semantics change — the tests
exercise the same widget/painting/gesture/animation behavior, just
without dragging in Material.

## Files changed

Tests updated:

- `packages/flutter/test/gestures/force_press_test.dart`
- `packages/flutter/test/gestures/transformed_scale_test.dart`
-
`packages/flutter/test/widgets/default_text_editing_shortcuts_test.dart`
- `packages/flutter/test/widgets/semantics_owner_test.dart`
- `packages/flutter/test/animation/animation_sheet_test.dart`
- `packages/flutter/test/painting/star_border_test.dart`
- `packages/flutter/test/painting/paint_image_test.dart`

Allowlist updated:

- `dev/bots/check_tests_cross_imports.dart`

## Scope note — two files intentionally left out

Two test files originally staged in this cleanup were dropped after
local test runs showed they aren't a clean Material → widgets swap.
Details and a request for guidance are in a separate PR comment below:

- `packages/flutter/test/widgets/editable_text_scribe_test.dart` — the
handle-tap tests rely on `CustomPaint` widgets painted by
`materialTextSelectionControls`; `emptyTextSelectionControls` paints
nothing, so the handle finders return 0 widgets.
- `packages/flutter/test/widgets/editable_text_test.dart` (Live Text
test only) — swapping `MaterialApp` → `TestWidgetsApp` triggers `A
FocusManager was used after being disposed` in the shared `tearDown`,
cascading into five downstream a11y/semantics tests.

Both files remain on the `check_tests_cross_imports.dart` allowlist and
can be picked up in follow-up PRs once we agree on the approach.

## Related issues

- Part of umbrella issue flutter#177028 (Framework unit tests
shouldn't cross-import libraries).
- Also addresses flutter#177412 (No legacy Material imports in
tests).

## Context — why one PR

Per reviewer guidance from @navaronbracke on flutter#185238
([comment](flutter#185238 (comment))),
similar Material-import cleanups are being consolidated into a single PR
that lands closer to the ~300–500-line "sweet spot" rather than as many
tiny per-file PRs.

## Superseded PRs (please close once this lands)

The following open PRs are subsumed by this one and can be closed if
this PR is approved (see [this
comment](flutter#185238 (comment))):

- flutter#185236 — Remove unused material.dart import from
force_press_test.dart
- flutter#185241 — Remove unnecessary Material import from
default_text_editing_shortcuts_test

Not superseded (corresponding files were dropped from this PR — see the
scope note above):

- flutter#185238 — editable_text_scribe_test
- flutter#185242 — editable_text_test Live Text

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt]. <!-- test-only cleanup: no production code or
test-behavior changes; existing coverage is preserved. -->
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: text input Entering text in a text field or keyboard related problems CICD Run CI/CD framework flutter/packages/flutter repository. See also f: labels.

Projects

Development

Successfully merging this pull request may close these issues.

2 participants