diff --git a/test/explorer_test.dart b/test/explorer_test.dart index bf7874e..86fc3c0 100644 --- a/test/explorer_test.dart +++ b/test/explorer_test.dart @@ -561,13 +561,15 @@ void main() { await settle(tester, () => find.text('doc.txt').evaluate().isEmpty); expect(Directory(left).listSync(), isEmpty); - // 새 폴더 → 이름 변경 + // 새 폴더 → 이름 변경 (지운 뒤 창들이 목록을 다시 읽는 동안은 진행 막대가 돌아 pumpAndSettle 이 끝나지 않는다 - 무거울 때 흔들림) + await idle(tester); await act(tester, () => tester.tap(find.text('새 폴더').first)); await tester.pumpAndSettle(); await act(tester, () => tester.enterText(find.byType(TextField), 'films')); await act(tester, () => tester.tap(find.widgetWithText(FilledButton, '확인'))); await settle(tester, () => find.text('films').evaluate().isNotEmpty); expect(Directory(p.join(left, 'films')).existsSync(), isTrue); + await idle(tester); await act(tester, () => tester.tap(find.text('이름 변경').first)); await tester.pumpAndSettle(); await act(tester, () => tester.enterText(find.byType(TextField), 'movies')); @@ -741,6 +743,11 @@ Future doubleTap(WidgetTester tester, Finder f) async { await tester.pump(); } +/// 창들이 목록을 다시 읽는 중 (맨 위 진행 막대) 이 끝날 때까지 실제 시간으로 기다린다. +/// 그사이 pumpAndSettle 을 하면 막대가 계속 움직여, 디스크 읽기가 늦을 때 (전체 시험이 무거울 때) 시간 초과가 난다 +Future idle(WidgetTester tester) => + settle(tester, () => find.byType(LinearProgressIndicator).evaluate().isEmpty && find.byType(CircularProgressIndicator).evaluate().isEmpty); + /// 실제 파일 작업 (비동기 IO) 이 끝나기를 기다리며 화면을 갱신 // 끝나면 바로 나온다 - 넉넉한 횟수는 전체 시험 중 PC 가 바쁠 때 (실제 파일 입출력이 느려짐) 흔들리지 않게 Future settle(WidgetTester tester, bool Function() done, {int rounds = 300}) async {