Add more 0x0 size tests part 4#185187
Conversation
…ox.shrink() in the zero area test
There was a problem hiding this comment.
Code Review
This pull request introduces regression tests across several widget test files to ensure that layout and scrollable widgets, such as CustomScrollView, ListView, and SelectableRegion, do not crash when rendered with zero area. Feedback includes addressing a missing required focusNode in the SelectableRegion test to prevent compilation errors, using SizedBox.shrink in the SensitiveContent test for consistency and better resource management, and standardizing test descriptions to include "area" for naming consistency across the suite.
| testWidgets('SelectableRegion does not crash at zero area', (WidgetTester tester) async { | ||
| await tester.pumpWidget( | ||
| TestWidgetsApp( | ||
| home: Center( | ||
| child: SizedBox.shrink( | ||
| child: SelectableRegion( | ||
| selectionControls: materialTextSelectionControls, | ||
| child: const SelectionSpy(), | ||
| ), | ||
| ), | ||
| ), | ||
| ), | ||
| ); | ||
| expect(tester.getSize(find.byType(SelectableRegion)), Size.zero); | ||
| }); |
There was a problem hiding this comment.
The SelectableRegion widget requires a focusNode parameter which is missing in this test. This will cause a compilation error. Additionally, for proper resource management in tests, the FocusNode should be disposed using addTearDown.
| testWidgets('SelectableRegion does not crash at zero area', (WidgetTester tester) async { | |
| await tester.pumpWidget( | |
| TestWidgetsApp( | |
| home: Center( | |
| child: SizedBox.shrink( | |
| child: SelectableRegion( | |
| selectionControls: materialTextSelectionControls, | |
| child: const SelectionSpy(), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ); | |
| expect(tester.getSize(find.byType(SelectableRegion)), Size.zero); | |
| }); | |
| testWidgets('SelectableRegion does not crash at zero area', (WidgetTester tester) async { | |
| final FocusNode focusNode = FocusNode(); | |
| addTearDown(focusNode.dispose); | |
| await tester.pumpWidget( | |
| TestWidgetsApp( | |
| home: Center( | |
| child: SizedBox.shrink( | |
| child: SelectableRegion( | |
| focusNode: focusNode, | |
| selectionControls: materialTextSelectionControls, | |
| child: const SelectionSpy(), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ); | |
| expect(tester.getSize(find.byType(SelectableRegion)), Size.zero); | |
| }); |
| testWidgets('SensitiveContent does not crash at zero area', (WidgetTester tester) async { | ||
| tester.view.physicalSize = Size.zero; | ||
| addTearDown(tester.view.reset); | ||
| await tester.pumpWidget( | ||
| const TestWidgetsApp( | ||
| home: Center( | ||
| child: SensitiveContent(sensitivity: ContentSensitivity.sensitive, child: Placeholder()), | ||
| ), | ||
| ), | ||
| ); | ||
| expect(tester.getSize(find.byType(SensitiveContent)), Size.zero); | ||
| }); |
There was a problem hiding this comment.
For consistency with the other tests added in this pull request, it is better to use SizedBox.shrink to constrain the widget to a zero area rather than modifying the global tester.view.physicalSize. This approach is more idiomatic for widget-level size testing and avoids the need for manual view reset.
| testWidgets('SensitiveContent does not crash at zero area', (WidgetTester tester) async { | |
| tester.view.physicalSize = Size.zero; | |
| addTearDown(tester.view.reset); | |
| await tester.pumpWidget( | |
| const TestWidgetsApp( | |
| home: Center( | |
| child: SensitiveContent(sensitivity: ContentSensitivity.sensitive, child: Placeholder()), | |
| ), | |
| ), | |
| ); | |
| expect(tester.getSize(find.byType(SensitiveContent)), Size.zero); | |
| }); | |
| testWidgets('SensitiveContent does not crash at zero area', (WidgetTester tester) async { | |
| await tester.pumpWidget( | |
| const TestWidgetsApp( | |
| home: Center( | |
| child: SizedBox.shrink( | |
| child: SensitiveContent(sensitivity: ContentSensitivity.sensitive, child: Placeholder()), | |
| ), | |
| ), | |
| ), | |
| ); | |
| expect(tester.getSize(find.byType(SensitiveContent)), Size.zero); | |
| }); |
| expect(tester.binding.semanticsEnabled, isTrue); | ||
| }, semanticsEnabled: false); | ||
|
|
||
| testWidgets('SemanticsDebugger does not crash at zero', (WidgetTester tester) async { |
There was a problem hiding this comment.
For consistency with the other test names in this PR (e.g., in custom_scroll_view_test.dart, list_view_test.dart, etc.), please update the test description to include 'area'.
| testWidgets('SemanticsDebugger does not crash at zero', (WidgetTester tester) async { | |
| testWidgets('SemanticsDebugger does not crash at zero area', (WidgetTester tester) async { |
| }); | ||
| }); | ||
|
|
||
| testWidgets('TwoDimensionalScrollable does not crash at zero', (WidgetTester tester) async { |
There was a problem hiding this comment.
For consistency with the other test names in this PR, please update the test description to include 'area'.
| testWidgets('TwoDimensionalScrollable does not crash at zero', (WidgetTester tester) async { | |
| testWidgets('TwoDimensionalScrollable does not crash at zero area', (WidgetTester tester) async { |
|
looks like there is some gemini suggestion, can you take a look and resolve them? @ahmedsameha1 |
86f2710 to
4f39bc1
Compare
I ran this command, and 0 files changed |
Hmm, sounds like it might be a cache issue, run |
|
Will probably need to run |
|
Hi @ahmedsameha1 ! looks like there are some tests failing, can you run to fix the formatting issues? |
94875ab to
c10f735
Compare
|
code LGTM but CI is still not happy because there're some lint errors info • Sort directive sections alphabetically. Try sorting the directives • packages/flutter/test/widgets/semantics_debugger_test.dart:10:1 • directives_ordering |
flutter/flutter@cf9e8af...846664b 2026-07-14 [email protected] Roll Skia from dfcff99566c3 to 88954ef8f36d (1 revision) (flutter/flutter#189440) 2026-07-14 [email protected] refactor: remove material import from scrollable_semantics_test and selectable_region_context_menu_test (flutter/flutter#186611) 2026-07-14 [email protected] Roll Skia from 3d1fc554f1a2 to dfcff99566c3 (17 revisions) (flutter/flutter#189428) 2026-07-14 [email protected] Roll Dart SDK from 2c587df8f05a to 05bf153370c4 (5 revisions) (flutter/flutter#189426) 2026-07-14 [email protected] [flutter_tools] Remove web hot reload flag (flutter/flutter#185994) 2026-07-14 [email protected] [iOS] Fix flaky keyboard animation test (flutter/flutter#189353) 2026-07-14 [email protected] [Impeller] Playground expanded role (flutter/flutter#188889) 2026-07-14 [email protected] Roll pub packages (flutter/flutter#189409) 2026-07-13 [email protected] Update lock-threads dependency to 6.0.2 (flutter/flutter#189053) 2026-07-13 49699333+dependabot[bot]@users.noreply.github.com Bump actions/labeler from 6.1.0 to 6.2.0 in the all-github-actions group (flutter/flutter#189396) 2026-07-13 [email protected] Remove outdated todo about `analysis bug on Windows` and update condition to also perform `analysis on windows` (flutter/flutter#189283) 2026-07-13 [email protected] Add more 0x0 size tests part 4 (flutter/flutter#185187) 2026-07-13 [email protected] Roll Packages from 20928d5 to ad2eab1 (18 revisions) (flutter/flutter#189387) 2026-07-13 [email protected] [flutter_tools] Fix ADB device listing output parsing regression (flutter/flutter#189369) 2026-07-13 [email protected] Stop running most Mac x64 builders that have Mac ARM equivalents on master (flutter/flutter#189301) 2026-07-13 [email protected] Move a few benchmarks from x64 Intel Macs to ARM (flutter/flutter#189377) 2026-07-13 [email protected] Add note that `hcpp` needs impeller (flutter/flutter#189382) 2026-07-13 [email protected] Roll Fuchsia Linux SDK from vhIlDkWIy21IrlB9E... to oOETA0ISPouDt2xBo... (flutter/flutter#189349) 2026-07-13 [email protected] [flutter_tools] Respect mustMatchAppBuild on Windows native assets (flutter/flutter#186788) 2026-07-13 [email protected] Roll Skia from 8bf65996caba to 3d1fc554f1a2 (2 revisions) (flutter/flutter#189350) 2026-07-13 [email protected] Roll Dart SDK from 0fc1668c4af4 to 2c587df8f05a (9 revisions) (flutter/flutter#189351) 2026-07-13 [email protected] [web] Fall back to full CJK fonts for characters not covered by split slices (flutter/flutter#188890) 2026-07-13 [email protected] Take Mac tool_integration_tests_* out of bringup (flutter/flutter#189368) 2026-07-13 [email protected] [hooks] Roll record_use to 1.0 and unpin (flutter/flutter#189366) 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 Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: 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
This is my attempt to handle #6537 for the following widgets:
SafeArea
CustomScrollView
ListView
GridView
Scrollable
TwoDimensionalScrollable
SelectableRegion
SelectionContainer
SemanticsDebugger
SensitiveContent