diff --git a/test/batch_test.dart b/test/batch_test.dart index 2c39d2a..c339c9e 100644 --- a/test/batch_test.dart +++ b/test/batch_test.dart @@ -371,15 +371,19 @@ void main() { await c.addVideos(files); final [v1, v2, v3] = c.videos; final building = c.buildVideos([v1, v2, v3]); - for (var i = 0; i < 400 && v1.status != JobStatus.running; i++) { - await Future.delayed(const Duration(milliseconds: 10)); + // 관리자 지적 (10/17): 전체 시험 중 PC 가 바쁘면 정해진 횟수 (4초 · 20초) 안에 오지 않아 한 번 실패했다 - 될 때까지 (넉넉히) 기다린다 + Future until(bool Function() ok, {Duration max = const Duration(seconds: 90)}) async { + final end = DateTime.now().add(max); + while (!ok() && DateTime.now().isBefore(end)) { + await Future.delayed(const Duration(milliseconds: 20)); + } } + + await until(() => v1.status == JobStatus.running); final shown = c.runningVideos; // 창을 연 때: v1 expect(shown, [v1]); // 창을 보는 사이 v1 이 끝나고 v2 가 시작 - for (var i = 0; i < 800 && !(v2.status == JobStatus.running && v2.progress > 0.01); i++) { - await Future.delayed(const Duration(milliseconds: 25)); - } + await until(() => v2.status == JobStatus.running && v2.progress > 0.01); expect([v1.status, v2.status], [JobStatus.done, JobStatus.running]); expect(c.cancelVideos(shown), [v1], reason: '이미 끝남 - 알리고 다시 묻는다'); await Future.delayed(const Duration(milliseconds: 500)); @@ -389,7 +393,7 @@ void main() { await building; expect([v1.status, v2.status, v3.status], [JobStatus.done, JobStatus.cancelled, JobStatus.done], reason: '${v1.message} ${v2.message} ${v3.message}'); - }); + }, timeout: const Timeout(Duration(minutes: 4))); testWidgets('198: 원어를 자동 감지한 동영상은 세부 정보에 감지한 언어 · [다른 언어로 다시] (알림을 놓쳐도)', (tester) async { tester.view.physicalSize = const Size(1600, 900);