import type { Page } from 'playwright-core'; export const JAV_DETAIL = { ok: true, code: 'EXM-001', title: '示例作品资料与长标题,完整详情保持可读', state: 'ready', release_date: '2026-10-30', duration: 120, score: 4.4, summary: '', director: '', publisher: '示例发行商', performers: '示例人物、第二位人物、待确认出演者', performer_refs: [{ id: null, name: '示例人物', gender: 'female', has_image: false, source_actor_id: 'ExampleActress', source_avatar: true }, { id: null, name: '第二位人物', gender: 'male', has_image: false, source_actor_id: 'ExampleActor', source_avatar: true }, { id: null, name: '待确认出演者', gender: 'unknown', has_image: false }], studio_refs: [{ id: null, name: '示例厂牌', has_logo: true }], series_refs: [{ id: null, name: '示例系列' }], tags: ['荡妇'], tag_refs: [{ name: '痴女', category: 'role', source_name: '荡妇' }], has_cover: false, source_image: true, preview_count: 11, comments_count: 12, source_url: 'https://javdb.com/v/example', wanted: false, want_id: null, }; export async function mockJavDetail(page: Page) { await page.route(/\/api\/jav\/detail\?/, route => route.fulfill({ json: { ...JAV_DETAIL, preview_video_url: `/stream?id=${process.env.PEACH_E2E_ITEM}` } })); await page.route(/\/logo\?/, route => route.fulfill({ contentType: 'image/svg+xml', body: '' })); await page.route(/\/jav-image\?/, route => route.fulfill({ contentType: 'image/svg+xml', body: '' })); await page.route(/\/api\/jav\/reviews\?/, route => { const pageNumber = Number(new URL(route.request().url()).searchParams.get('page')); const count = pageNumber === 1 ? 10 : 2; return route.fulfill({ json: { ok: true, page: pageNumber, more: pageNumber === 1, items: Array.from({ length: count }, (_, index) => ({ id: `${pageNumber}:${index}`, username: '示例评论者', content: index === 0 ? ' 这是来源正文' : '示例评论正文', score: 4.4, created_at: '2026-10-12T03:56:14.000Z' })) } }); }); await page.route(/\/api\/jav\/resources\?/, route => route.fulfill({ json: { state: 'ready', error: '', checked_at: '2026-10-12T00:00:00Z', items: Array.from({ length: 6 }, (_, index) => ({ id: `example:${index}`, protocol: 'magnet', info_hash: String(index).repeat(40), uri: `magnet:?xt=urn:btih:${String(index).repeat(40)}`, name: `EXM-001 示例资源 ${index + 1}` + (index === 0 ? ' · MIDA-361-UC.高清资源.very-long-filename.torrent' : ''), size: '3 GB', files: '2', date: '2026-10-12', attributes: ['高清'], source: 'JavDB', source_url: 'https://javdb.com/v/example', origins: ['JavDB'], })) } })); await page.route(/\/api\/downloads\?/, route => route.fulfill({ json: { available: false, providers: [], tasks: [] } })); await page.route(/\/api\/wants$/, async route => { if (route.request().method() !== 'POST') return route.fallback(); return route.fulfill({ json: { created: true, want: { id: 17, code: 'EXM-001' } } }); }); }