translate 시험 2개: 좁은 도구 막대에서는 [더 보기] 메뉴로 누른다 (예전부터의 실패, rc2 에서도)
- 시험 창의 브라우저 화면이 804 너비라 도구 막대가 좁은 꼴 (640 미만) - 번역 · 작업 현황 단추가 [더 보기] 메뉴 안에 있어 툴팁으로 찾던 시험이 실패했다. 앱 쪽 문제 아님 (관리자 10/24: 시험 쪽이면 기대값 그대로, 메뉴를 열어 누름) - tapToolbar: 넓으면 그 단추, 좁으면 도구 막대 안의 [더 보기] → 같은 항목. 고른 결과는 메뉴가 닫힌 뒤 들어오므로 (번역이 도는 동안 그리기가 느림) 메뉴가 닫힐 때까지 기다림 확인: analyze 0 · translate_split 1 ×2 · web_translate 1 ×2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>modular
parent
b9b23e9122
commit
093cf3252e
|
|
@ -10,6 +10,7 @@ import 'package:jj_mkvmaker/core/languages.dart';
|
|||
import 'package:jj_mkvmaker/core/models.dart';
|
||||
import 'package:jj_mkvmaker/core/output_paths.dart';
|
||||
import 'package:jj_mkvmaker/services/platform_services.dart';
|
||||
import 'package:jj_mkvmaker/ui/browser/browser_toolbar.dart';
|
||||
import 'package:jj_mkvmaker/ui/browser_page.dart';
|
||||
import 'support/temp_dir.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
|
|
@ -65,7 +66,7 @@ void main() {
|
|||
expect(c.pendingJobs, ['MKV 만들기']);
|
||||
|
||||
// 화면 분할 열기 → 진행 표시
|
||||
await tester.tap(find.byTooltip('작업 현황 보기 · 화면 분할 (Ctrl+Shift+J)'));
|
||||
await tapToolbar(tester, '작업 현황 보기 · 화면 분할 (Ctrl+Shift+J)', '작업 현황');
|
||||
await tester.pump(const Duration(milliseconds: 300));
|
||||
expect(find.text('작업 현황'), findsOneWidget);
|
||||
expect(find.textContaining('▶ 자막 번역'), findsOneWidget);
|
||||
|
|
@ -103,3 +104,23 @@ void main() {
|
|||
await server.close(force: true);
|
||||
}, timeout: const Timeout(Duration(minutes: 15)));
|
||||
}
|
||||
|
||||
/// 도구 막대 단추 누르기: 넓으면 [tip] 단추, 좁으면 (640 미만 - 시험 창 804 너비에 패널) [더 보기] 메뉴의 [item]
|
||||
Future<void> tapToolbar(WidgetTester tester, String tip, String item) async {
|
||||
if (find.byTooltip(tip).evaluate().isNotEmpty) {
|
||||
await tester.tap(find.byTooltip(tip));
|
||||
return;
|
||||
}
|
||||
// 도구 막대 안의 [더 보기] (앱 맨 위 줄에도 [더 보기] 가 있다)
|
||||
await tester.tap(find.descendant(of: find.byType(BrowserToolbar), matching: find.byTooltip('더 보기')));
|
||||
for (var i = 0; i < 5; i++) {
|
||||
await tester.pump(const Duration(milliseconds: 100));
|
||||
}
|
||||
await tester.tap(find.text(item).last);
|
||||
// 고른 결과는 메뉴가 닫힌 뒤에 들어온다 - 번역이 도는 동안은 그리기가 느려 정한 시간이 아니라 닫힐 때까지
|
||||
for (var i = 0; i < 50 && find.byType(PopupMenuItem<String>).evaluate().isNotEmpty; i++) {
|
||||
await tester.runAsync(() => Future<void>.delayed(const Duration(milliseconds: 50)));
|
||||
await tester.pump(const Duration(milliseconds: 100));
|
||||
}
|
||||
await tester.pump(const Duration(milliseconds: 100));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:jj_mkvmaker/app/bookmarks_controller.dart';
|
|||
import 'package:jj_mkvmaker/platform/windows/desktop_storage_service.dart';
|
||||
import 'package:jj_mkvmaker/platform/windows/process_media_tool.dart';
|
||||
import 'package:jj_mkvmaker/services/platform_services.dart';
|
||||
import 'package:jj_mkvmaker/ui/browser/browser_toolbar.dart';
|
||||
import 'package:jj_mkvmaker/ui/browser_page.dart';
|
||||
import 'support/temp_dir.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
|
|
@ -100,7 +101,7 @@ void main() {
|
|||
expect(d['js'], isNot('no script')); // 페이지 스크립트가 돌았다 (그 글도 번역됨)
|
||||
|
||||
// 2. 번역 버튼 → 원문
|
||||
await tester.tap(find.byTooltip('원문 보기 (번역 끄기)'));
|
||||
await tapToolbar(tester, '원문 보기 (번역 끄기)', '원문 보기 (번역 끄기)');
|
||||
d = await waitFor((d) => d['h'] == 'Hello world', '원문 보기');
|
||||
expect(d['h'], 'Hello world');
|
||||
expect(d['p'], ' Download the video ');
|
||||
|
|
@ -129,7 +130,7 @@ void main() {
|
|||
if (Platform.isAndroid) {
|
||||
// 4. Android 웹뷰는 JavaScript 를 끄면 앱이 넣는 스크립트도 막는다 → 번역 · 페이지 읽기가 안 됨 (설정 설명대로)
|
||||
expect(await dom(), isEmpty);
|
||||
await tester.tap(find.byTooltip('이 페이지를 한국어(으)로 번역'));
|
||||
await tapToolbar(tester, '이 페이지를 한국어(으)로 번역', '이 페이지 번역');
|
||||
await tester.runAsync(() => Future<void>.delayed(const Duration(seconds: 3)));
|
||||
await tester.pump();
|
||||
// ignore: avoid_print
|
||||
|
|
@ -140,7 +141,7 @@ void main() {
|
|||
expect(d['late'], ''); // setTimeout 도 돌지 않음
|
||||
|
||||
// 4. Edge 는 JavaScript 를 꺼도 번역 버튼으로 번역된다 (앱이 넣는 스크립트는 실행)
|
||||
await tester.tap(find.byTooltip('이 페이지를 한국어(으)로 번역'));
|
||||
await tapToolbar(tester, '이 페이지를 한국어(으)로 번역', '이 페이지 번역');
|
||||
d = await waitFor((d) => hangul.hasMatch(d['h']!), 'JavaScript 끈 채 번역');
|
||||
expect(d['h'], matches(hangul));
|
||||
expect(d['js'], matches(hangul)); // "no script" 도 번역
|
||||
|
|
@ -159,3 +160,23 @@ void main() {
|
|||
await server.close(force: true);
|
||||
}, timeout: const Timeout(Duration(minutes: 3)));
|
||||
}
|
||||
|
||||
/// 도구 막대 단추 누르기: 넓으면 [tip] 단추, 좁으면 (640 미만 - 시험 창 804 너비에 패널) [더 보기] 메뉴의 [item]
|
||||
Future<void> tapToolbar(WidgetTester tester, String tip, String item) async {
|
||||
if (find.byTooltip(tip).evaluate().isNotEmpty) {
|
||||
await tester.tap(find.byTooltip(tip));
|
||||
return;
|
||||
}
|
||||
// 도구 막대 안의 [더 보기] (앱 맨 위 줄에도 [더 보기] 가 있다)
|
||||
await tester.tap(find.descendant(of: find.byType(BrowserToolbar), matching: find.byTooltip('더 보기')));
|
||||
for (var i = 0; i < 5; i++) {
|
||||
await tester.pump(const Duration(milliseconds: 100));
|
||||
}
|
||||
await tester.tap(find.text(item).last);
|
||||
// 고른 결과는 메뉴가 닫힌 뒤에 들어온다 - 번역이 도는 동안은 그리기가 느려 정한 시간이 아니라 닫힐 때까지
|
||||
for (var i = 0; i < 50 && find.byType(PopupMenuItem<String>).evaluate().isNotEmpty; i++) {
|
||||
await tester.runAsync(() => Future<void>.delayed(const Duration(milliseconds: 50)));
|
||||
await tester.pump(const Duration(milliseconds: 100));
|
||||
}
|
||||
await tester.pump(const Duration(milliseconds: 100));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue