34 lines
2.2 KiB
JavaScript
34 lines
2.2 KiB
JavaScript
const {chromium}=require('playwright-core');
|
|
const assert=require('node:assert/strict');
|
|
const fs=require('node:fs');
|
|
(async()=>{
|
|
const browser=await chromium.launch({channel:'chrome',headless:true});
|
|
try {
|
|
const page=await browser.newPage({viewport:{width:1440,height:1000}});
|
|
const errors=[];page.on('pageerror',e=>errors.push(e.message));
|
|
await page.goto('http://127.0.0.1:18879/',{waitUntil:'networkidle'});
|
|
await page.getByText('高清功能验证(隔离测试)',{exact:true}).click();
|
|
await page.getByRole('button',{name:/进入制作/}).click();
|
|
await page.getByRole('navigation').getByRole('button',{name:/^高清制作/}).click();
|
|
await page.getByRole('heading',{name:'高清制作 MiniMax H3-VDN-H3'}).waitFor();
|
|
await page.getByText('原版',{exact:true}).waitFor();
|
|
const selector=page.getByLabel(/目标分辨率/);
|
|
await selector.selectOption('4K');
|
|
assert.equal(await selector.inputValue(),'4K');
|
|
await page.waitForFunction(()=>document.querySelectorAll('.hd-compare video').length===2 && [...document.querySelectorAll('.hd-compare video')].every(v=>v.videoWidth>0));
|
|
const videos=await page.locator('.hd-compare video').evaluateAll(es=>es.map(e=>({src:e.getAttribute('src'),width:e.videoWidth,height:e.videoHeight})));
|
|
assert.equal(videos[0].width,512);assert.equal(videos[0].height,288);
|
|
assert.equal(videos[1].width,3840);assert.equal(videos[1].height,2160);
|
|
assert.equal(await page.getByRole('button',{name:'生成 4K 高清版'}).isEnabled(),true);
|
|
const playback=await page.locator('.hd-compare video').nth(1).evaluate(async v=>{
|
|
v.muted=true;await v.play();await new Promise(r=>setTimeout(r,700));v.pause();
|
|
return {time:v.currentTime,error:v.error?.message||null};
|
|
});
|
|
assert.ok(playback.time>0);assert.equal(playback.error,null);
|
|
assert.deepEqual(errors,[]);
|
|
await page.screenshot({path:'D:/web/dj/integration-work/hd-page-verified.png',fullPage:true});
|
|
fs.writeFileSync('D:/web/dj/integration-work/hd-ui-result.json',JSON.stringify({passed:true,url:page.url(),videos,playback,errors},null,2));
|
|
console.log('PASS: HD navigation, 2K/4K selection, original + real 4K playback; no page errors');
|
|
}finally{await browser.close()}
|
|
})().catch(e=>{console.error(e.stack);process.exit(1)});
|