Sitelet https://github.com/flutter/packages/pull/12711
Skip to content

[material_ui] port drawer tests over from flutter/widgets - #12711

Merged
auto-submit[bot] merged 2 commits into
flutter:mainfrom
navaronbracke:move_drawer_tests_from_flutterwidgets
Sep 4, 2026
Merged

auto-submit[bot] merged 2 commits into
flutter:mainfrom
navaronbracke:move_drawer_tests_from_flutterwidgets

Conversation

@navaronbracke

@navaronbracke navaronbracke commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

This PR moves tests from packages/flutter under widgets/drawer_test.dart into material_ui.

Most tests were moved verbatim, except for a few tests that I renamed, because the test name was not very clear.
The drawer control tests for Material 2/3 that already existed were updated to test some additional behavior.

Part of flutter/flutter#177028

See flutter/flutter#192106 which removes the tests in flutter/flutter

Pre-Review Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Sep 1, 2026
@github-actions github-actions Bot added p: material_ui triage-design Should be looked at in design triage labels Sep 1, 2026
state.openDrawer();

await tester.pump();
expect(find.text('Archive'), findsOneWidget);

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.


expect(find.text('header'), findsOneWidget);

Navigator.pop(savedContext);

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.

@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 ports drawer tests from flutter/widgets into material_ui, updating existing tests to verify drawer dismissal animations and adding several new tests covering tap, hover, gesture cancellation, and semantics behaviors. The review feedback suggests replacing hardcoded strings in the semantics tests (such as 'Dismiss' and 'Navigation menu') with localized values from DefaultMaterialLocalizations to make the tests robust against localization changes.

await tester.pump(const Duration(milliseconds: 100));

expect(semantics, includesNodeWith(actions: <SemanticsAction>[SemanticsAction.tap]));
expect(semantics, includesNodeWith(label: 'Dismiss'));

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

Avoid using the hardcoded string 'Dismiss' for the semantics label. Instead, use const DefaultMaterialLocalizations().modalBarrierDismissLabel to ensure the test is robust against localization changes and matches the implementation's localized values.

Suggested change
expect(semantics, includesNodeWith(label: 'Dismiss'));
expect(semantics, includesNodeWith(label: const DefaultMaterialLocalizations().modalBarrierDismissLabel));

includesNodeWith(actions: <SemanticsAction>[SemanticsAction.tap, SemanticsAction.focus]),
),
);
expect(semantics, isNot(includesNodeWith(label: 'Dismiss')));

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

Avoid using the hardcoded string 'Dismiss' for the semantics label. Instead, use const DefaultMaterialLocalizations().modalBarrierDismissLabel to ensure the test is robust against localization changes and matches the implementation's localized values.

Suggested change
expect(semantics, isNot(includesNodeWith(label: 'Dismiss')));
expect(semantics, isNot(includesNodeWith(label: const DefaultMaterialLocalizations().modalBarrierDismissLabel)));

Comment on lines +1398 to +1404
expect(
semantics,
includesNodeWith(
label: 'Navigation menu',
flags: <SemanticsFlag>[SemanticsFlag.scopesRoute, SemanticsFlag.namesRoute],
),
);

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

Avoid using the hardcoded string 'Navigation menu' for the semantics label. Instead, use const DefaultMaterialLocalizations().drawerLabel to ensure the test is robust against localization changes and matches the implementation's localized values.

Suggested change
expect(
semantics,
includesNodeWith(
label: 'Navigation menu',
flags: <SemanticsFlag>[SemanticsFlag.scopesRoute, SemanticsFlag.namesRoute],
),
);
expect(
semantics,
includesNodeWith(
label: const DefaultMaterialLocalizations().drawerLabel,
flags: <SemanticsFlag>[SemanticsFlag.scopesRoute, SemanticsFlag.namesRoute],
),
);

testWidgets('Material3 - Drawer control test', (WidgetTester tester) async {
const containerKey = Key('container');

late BuildContext savedContext;

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.

The same changes as the test above were applied here, since we have the M2/M3 split

semantics.dispose();
}, variant: TargetPlatformVariant.only(TargetPlatform.android));

testWidgets('Drawer tap test', (WidgetTester tester) async {

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.

Moved over verbatim

expect(find.text('drawer'), findsNothing);
});

testWidgets('Drawer hover test', (WidgetTester tester) async {

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.

Moved over verbatim

expect(finder, findsNothing);
});

testWidgets('Close drawer with navigator pop', (WidgetTester tester) async {

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.

expect(buttonPressed, equals(true));
});

testWidgets('Drawer closing can be canceled by gesture (LTR)', (WidgetTester tester) async {

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.

await gesture.up();
});

testWidgets('Drawer closing can be canceled by gesture (RTL)', (WidgetTester tester) async {

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.

Same for this test

});

testWidgets(
'Dismissible Drawer includes button in semantic tree',

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.

}),
);

testWidgets('Dismissible Drawer is hidden on Android (back button is used to dismiss)', (

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.

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.

The description sounds still a bit inaccurate because we are not really testing whether the drawer is hidden but the a11y label. How about

Suggested change
testWidgets('Dismissible Drawer is hidden on Android (back button is used to dismiss)', (
testWidgets('Dismissible Drawer barrier is hidden from semantics on Android (back button is used to dismiss)', (

await pumpDrawerWithTheme(TargetPlatform.iOS);
}, variant: TargetPlatformVariant.all());

testWidgets('Drawer contains route semantics flags', (WidgetTester tester) async {

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.

Moved over verbatim

@elliette elliette added the override: no changelog needed Override the check requiring CHANGELOG updates for most changes label Sep 2, 2026

@elliette elliette left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think the changelog entry should be removed, otherwise LGTM! Thanks for porting these tests over.

Comment thread packages/material_ui/pending_changelogs/change_2026_09_01_1788252909308.yaml Outdated

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

Overall looks good to me. Just left a few comments:)! Thanks a lot for your contribution!

Comment thread packages/material_ui/pending_changelogs/change_2026_09_01_1788252909308.yaml Outdated
}),
);

testWidgets('Dismissible Drawer is hidden on Android (back button is used to dismiss)', (

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.

The description sounds still a bit inaccurate because we are not really testing whether the drawer is hidden but the a11y label. How about

Suggested change
testWidgets('Dismissible Drawer is hidden on Android (back button is used to dismiss)', (
testWidgets('Dismissible Drawer barrier is hidden from semantics on Android (back button is used to dismiss)', (

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

LGTM. Thank you for the contribution!

@elliette elliette added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 3, 2026
@auto-submit
auto-submit Bot merged commit e9e34ec into flutter:main Sep 4, 2026
13 checks passed
@navaronbracke
navaronbracke deleted the move_drawer_tests_from_flutterwidgets branch September 4, 2026 21:24
pull Bot pushed a commit to Mattlk13/flutter that referenced this pull request Sep 9, 2026
…er#192485)

flutter/packages@9af9c60...36e088a

2026-09-09 daniel.leon@cloudsufi.com [quick_actions] Adopt code-excerpts
for README (flutter/packages#12643)
2026-09-08 65155920+0xharkirat@users.noreply.github.com [camera_web] Fix
TypeError when reading the torch capability (flutter/packages#12647)
2026-09-08 gibbonsj97@gmail.com [google_maps_flutter_web] Avoid
replacing advanced marker content on move (flutter/packages#11952)
2026-09-08 mit@google.com [material_ui][cupertino_ui] Change issue
tracker label in pubspec.yaml (flutter/packages#12792)
2026-09-08 saurabhmirajkar000@gmail.com [material_ui] Fix FilledButton
Material 3 default style docs (flutter/packages#12620)
2026-09-08 21270878+elliette@users.noreply.github.com [infra] Use a
modified no-response workflow in flutter/packages
(flutter/packages#12745)
2026-09-08 21270878+elliette@users.noreply.github.com [material_ui]
Migrate M3 Banner template to use new gen_defaults
(flutter/packages#12734)
2026-09-08 engine-flutter-autoroll@skia.org Roll Flutter from
63170e9 to b444e78 (13 revisions) (flutter/packages#12791)
2026-09-08 fluttergithubbot@gmail.com Sync release-go_router-18.0.1 to
main (flutter/packages#12725)
2026-09-08 fluttergithubbot@gmail.com Sync release-material_ui-1.1.1 to
main (flutter/packages#12726)
2026-09-08 stuartmorgan@google.com [tool] Adopt `platform` 3.2.0
(flutter/packages#12789)
2026-09-07 50643541+Mairramer@users.noreply.github.com [material_ui] Fix
SliverGeometry maxPaintExtent assertion in CarouselView.weighted
(flutter/packages#12563)
2026-09-05 engine-flutter-autoroll@skia.org Roll Flutter from
5a6cfa7 to 63170e9 (15 revisions) (flutter/packages#12767)
2026-09-04 engine-flutter-autoroll@skia.org Manual roll Flutter from
70797e1 to 5a6cfa7 (52 revisions) (flutter/packages#12760)
2026-09-04 brackenavaron@gmail.com [material_ui] port drawer tests over
from flutter/widgets (flutter/packages#12711)
2026-09-04 tarrinneal@gmail.com add cooldown (flutter/packages#12708)
2026-09-04 joeldumasbg@gmail.com [in_app_purchase] Support StoreKit 2
introductory offer eligibility JWS (flutter/packages#12584)
2026-09-04 21270878+elliette@users.noreply.github.com [material_ui]
Migrate M3 Badge template to use new gen_defaults
(flutter/packages#12733)
2026-09-04 stuartmorgan@google.com [google_maps_flutter] Convert heatmap
controller to Swift (flutter/packages#12713)
2026-09-04 97480502+b-luk@users.noreply.github.com [material_ui] Remove
unused `maintainState` constructor parameter in `scaffold_test.dart`
(flutter/packages#12754)
2026-09-04 a1rwulf@users.noreply.github.com [video_player_avfoundation]
Route video over AirPlay (flutter/packages#12490)
2026-09-04 jerome.dellamaria@proton.me [google_fonts] Add
google_fonts_lite file to allow tree-shaking of the other huge files
(flutter/packages#11433)
2026-09-04 engine-flutter-autoroll@skia.org Roll Flutter from
0cbd1a4 to 70797e1 (27 revisions) (flutter/packages#12727)
2026-09-04 stuartmorgan@google.com Update Chrome for stable tests
(flutter/packages#12747)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode 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
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
)

This PR moves tests from `packages/flutter` under `widgets/drawer_test.dart` into material_ui.

Most tests were moved verbatim, except for a few tests that I renamed, because the test name was not very clear.
The drawer control tests for Material 2/3 that already existed were updated to test some additional behavior.

Part of flutter/flutter#177028

See flutter/flutter#192106 which removes the tests in flutter/flutter

## Pre-Review Checklist

**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
)

This PR moves tests from `packages/flutter` under `widgets/drawer_test.dart` into material_ui.

Most tests were moved verbatim, except for a few tests that I renamed, because the test name was not very clear.
The drawer control tests for Material 2/3 that already existed were updated to test some additional behavior.

Part of flutter/flutter#177028

See flutter/flutter#192106 which removes the tests in flutter/flutter

## Pre-Review Checklist

**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD override: no changelog needed Override the check requiring CHANGELOG updates for most changes p: material_ui triage-design Should be looked at in design triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants