@@ -101,6 +101,11 @@ void main() {
101101 });
102102
103103 group ('ConnectionsPanel expanded folder (tree)' , () {
104+ setUp (() async {
105+ PathProviderPlatform .instance = _FakePathProvider (tempDir.path);
106+ await FoldersStorage .instance.reload ();
107+ });
108+
104109 tearDown (() async {
105110 final conns = await LocalDb .instance.getConnections ();
106111 for (final c in conns) {
@@ -152,26 +157,41 @@ void main() {
152157 );
153158 await FoldersStorage .instance.reload ();
154159
155- await expectNoLayoutOverflow (() async {
156- await tester.binding.setSurfaceSize (const material.Size (320 , 720 ));
157- addTearDown (() => tester.binding.setSurfaceSize (null ));
158- await tester.pumpWidget (
159- ShadcnApp (
160- theme: AppTheme .dark,
161- darkTheme: AppTheme .dark,
162- themeMode: ThemeMode .dark,
163- home: material.SizedBox .expand (
164- child: ConnectionsPanel (
165- onPostgresOpenSqlWorkspace: (_) {},
166- ),
160+ await tester.binding.setSurfaceSize (const material.Size (320 , 720 ));
161+ addTearDown (() => tester.binding.setSurfaceSize (null ));
162+ await tester.pumpWidget (
163+ ShadcnApp (
164+ theme: AppTheme .dark,
165+ darkTheme: AppTheme .dark,
166+ themeMode: ThemeMode .dark,
167+ home: material.SizedBox .expand (
168+ child: ConnectionsPanel (
169+ onPostgresOpenSqlWorkspace: (_) {},
167170 ),
168171 ),
169- );
170- // ConnectionsPanel loads folders async; do not use pumpAndSettle (chevron animation).
171- for (var i = 0 ; i < 120 ; i++ ) {
172- await tester.pump (const Duration (milliseconds: 50 ));
173- if (find.text ('LayoutTestFolder' ).evaluate ().isNotEmpty) break ;
172+ ),
173+ );
174+ // ConnectionsPanel loads folders async; do not use pumpAndSettle (chevron animation).
175+ // Do not wrap the whole pump loop in expectNoLayoutOverflow: transient frames during
176+ // async load / chevron animation can report overflow-like errors on CI while the
177+ // settled layout is fine — only assert overflow on the final frame.
178+ var folderVisible = false ;
179+ for (var i = 0 ; i < 200 ; i++ ) {
180+ await tester.pump (const Duration (milliseconds: 50 ));
181+ if (find.text ('LayoutTestFolder' ).evaluate ().isNotEmpty) {
182+ folderVisible = true ;
183+ break ;
174184 }
185+ }
186+ expect (
187+ folderVisible,
188+ isTrue,
189+ reason:
190+ 'LayoutTestFolder did not appear after async load (FoldersStorage / LocalDb)' ,
191+ );
192+
193+ await expectNoLayoutOverflow (() async {
194+ await tester.pump ();
175195 });
176196
177197 _expectTextCount ('LayoutTestFolder' , 1 );
0 commit comments