흔들리는 시험 2개: 정해 둔 시간 대신 될 때까지 기다리기 (decisions_test 126 · drop_test)
- 전체 시험 중 PC 가 바쁘면 실패하던 것 (따로 돌리면 통과). 흔들리는 시험이 실제 실패를 가리지 않게 - decisions_test 126: 설정 파일을 다시 읽어 migrated 가 빌 때까지 (최대 10초) - drop_test: 안내 글이 뜰 때까지 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>묶음3
parent
1c919ce8c6
commit
8f5d2204f0
|
|
@ -128,8 +128,16 @@ void main() {
|
||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
expect(find.text('이번 업데이트로 바뀐 기본 설정'), findsOneWidget);
|
expect(find.text('이번 업데이트로 바뀐 기본 설정'), findsOneWidget);
|
||||||
await tester.tap(find.text('확인'));
|
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<void>.delayed(const Duration(milliseconds: 50)));
|
await tester.runAsync(() => Future<void>.delayed(const Duration(milliseconds: 50)));
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,9 +81,12 @@ void main() {
|
||||||
for (var i = 0; i < 250 && c.videos.isEmpty; i++) {
|
for (var i = 0; i < 250 && c.videos.isEmpty; i++) {
|
||||||
await Future<void>.delayed(const Duration(milliseconds: 20));
|
await Future<void>.delayed(const Duration(milliseconds: 20));
|
||||||
}
|
}
|
||||||
await Future<void>.delayed(const Duration(milliseconds: 100));
|
|
||||||
});
|
});
|
||||||
await tester.pump();
|
// 안내가 뜰 때까지 (정해 둔 시간이 아니라 - 전체 시험 중 느려도 흔들리지 않게)
|
||||||
|
for (var i = 0; i < 100 && find.textContaining('동영상 목록에 1개를 추가했습니다').evaluate().isEmpty; i++) {
|
||||||
|
await tester.runAsync(() => Future<void>.delayed(const Duration(milliseconds: 50)));
|
||||||
|
await tester.pump();
|
||||||
|
}
|
||||||
expect([for (final v in c.videos) v.fileName], ['끌어온 영상.mp4']);
|
expect([for (final v in c.videos) v.fileName], ['끌어온 영상.mp4']);
|
||||||
expect(c.selected, c.videos.single);
|
expect(c.selected, c.videos.single);
|
||||||
expect(find.textContaining('여기에 놓으면'), findsNothing);
|
expect(find.textContaining('여기에 놓으면'), findsNothing);
|
||||||
|
|
@ -92,12 +95,10 @@ void main() {
|
||||||
// 같은 것을 다시 놓으면 "이미 있음"
|
// 같은 것을 다시 놓으면 "이미 있음"
|
||||||
await _native(tester, 'entered', [400.0, 300.0]);
|
await _native(tester, 'entered', [400.0, 300.0]);
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
await tester.runAsync(() async {
|
await tester.runAsync(() => _native(tester, 'performOperation', [file]));
|
||||||
await _native(tester, 'performOperation', [file]);
|
// 앞의 안내가 사라지고 새 안내가 나올 때까지 (될 때까지 기다림, 최대 10초)
|
||||||
await Future<void>.delayed(const Duration(milliseconds: 1000));
|
for (var i = 0; i < 50 && find.textContaining('이미 동영상 목록에 있습니다').evaluate().isEmpty; i++) {
|
||||||
});
|
await tester.runAsync(() => Future<void>.delayed(const Duration(milliseconds: 50)));
|
||||||
// 앞의 안내가 사라지고 새 안내가 나올 때까지
|
|
||||||
for (var i = 0; i < 10; i++) {
|
|
||||||
await tester.pump(const Duration(milliseconds: 200));
|
await tester.pump(const Duration(milliseconds: 200));
|
||||||
}
|
}
|
||||||
expect(c.videos, hasLength(1));
|
expect(c.videos, hasLength(1));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue