From 8f5d2204f0e6db1253b845d5fbef2c87c8f8c081 Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Fri, 9 Oct 2026 19:18:27 +0900 Subject: [PATCH] =?UTF-8?q?=ED=9D=94=EB=93=A4=EB=A6=AC=EB=8A=94=20?= =?UTF-8?q?=EC=8B=9C=ED=97=98=202=EA=B0=9C:=20=EC=A0=95=ED=95=B4=20?= =?UTF-8?q?=EB=91=94=20=EC=8B=9C=EA=B0=84=20=EB=8C=80=EC=8B=A0=20=EB=90=A0?= =?UTF-8?q?=20=EB=95=8C=EA=B9=8C=EC=A7=80=20=EA=B8=B0=EB=8B=A4=EB=A6=AC?= =?UTF-8?q?=EA=B8=B0=20(decisions=5Ftest=20126=20=C2=B7=20drop=5Ftest)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 전체 시험 중 PC 가 바쁘면 실패하던 것 (따로 돌리면 통과). 흔들리는 시험이 실제 실패를 가리지 않게 - decisions_test 126: 설정 파일을 다시 읽어 migrated 가 빌 때까지 (최대 10초) - drop_test: 안내 글이 뜰 때까지 Co-Authored-By: Claude Opus 5.5 --- test/decisions_test.dart | 12 ++++++++++-- test/drop_test.dart | 17 +++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/test/decisions_test.dart b/test/decisions_test.dart index 9b38cc6..a3a7226 100644 --- a/test/decisions_test.dart +++ b/test/decisions_test.dart @@ -128,8 +128,16 @@ void main() { await tester.pumpAndSettle(); expect(find.text('이번 업데이트로 바뀐 기본 설정'), findsOneWidget); await tester.tap(find.text('확인')); - // 파일 쓰기 (진짜 입출력) 가 끝나게 몇 번 돌려 준다 - for (var i = 0; i < 20; i++) { + // 파일 쓰기 (진짜 입출력) 가 끝날 때까지 (정해 둔 시간이 아니라 파일에 실제로 쓰일 때까지 - 전체 시험 중 느려도 흔들리지 않게) + for (var i = 0; i < 200; i++) { + final now = await tester.runAsync(() async { + try { + return (await SettingsStore(file, MemorySecretStore()).load()).migrated; + } catch (_) { + return null; // 쓰는 도중 + } + }); + if (now != null && now.isEmpty) break; await tester.runAsync(() => Future.delayed(const Duration(milliseconds: 50))); await tester.pump(); } diff --git a/test/drop_test.dart b/test/drop_test.dart index 9f5b2ac..63eaa64 100644 --- a/test/drop_test.dart +++ b/test/drop_test.dart @@ -81,9 +81,12 @@ void main() { for (var i = 0; i < 250 && c.videos.isEmpty; i++) { await Future.delayed(const Duration(milliseconds: 20)); } - await Future.delayed(const Duration(milliseconds: 100)); }); - await tester.pump(); + // 안내가 뜰 때까지 (정해 둔 시간이 아니라 - 전체 시험 중 느려도 흔들리지 않게) + for (var i = 0; i < 100 && find.textContaining('동영상 목록에 1개를 추가했습니다').evaluate().isEmpty; i++) { + await tester.runAsync(() => Future.delayed(const Duration(milliseconds: 50))); + await tester.pump(); + } expect([for (final v in c.videos) v.fileName], ['끌어온 영상.mp4']); expect(c.selected, c.videos.single); expect(find.textContaining('여기에 놓으면'), findsNothing); @@ -92,12 +95,10 @@ void main() { // 같은 것을 다시 놓으면 "이미 있음" await _native(tester, 'entered', [400.0, 300.0]); await tester.pump(); - await tester.runAsync(() async { - await _native(tester, 'performOperation', [file]); - await Future.delayed(const Duration(milliseconds: 1000)); - }); - // 앞의 안내가 사라지고 새 안내가 나올 때까지 - for (var i = 0; i < 10; i++) { + await tester.runAsync(() => _native(tester, 'performOperation', [file])); + // 앞의 안내가 사라지고 새 안내가 나올 때까지 (될 때까지 기다림, 최대 10초) + for (var i = 0; i < 50 && find.textContaining('이미 동영상 목록에 있습니다').evaluate().isEmpty; i++) { + await tester.runAsync(() => Future.delayed(const Duration(milliseconds: 50))); await tester.pump(const Duration(milliseconds: 200)); } expect(c.videos, hasLength(1));