Files

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)});