Files
dj/integration-work/browser-test/verify_task_tracking_live.cjs

22 lines
1.7 KiB
JavaScript

const {chromium}=require('playwright-core'),fs=require('node:fs'),assert=require('node:assert/strict');
(async()=>{
const base=JSON.parse(fs.readFileSync('D:/web/dj/huobao-data/last-launch.json')).api.replace('/api/v1','');
const browser=await chromium.launch({channel:'chrome',headless:true});
try{
const page=await browser.newPage({viewport:{width:1550,height:1050}}),errors=[];
page.on('pageerror',e=>errors.push(e.message));
await page.route('**/api/**',r=>['GET','HEAD'].includes(r.request().method())?r.continue():r.abort());
await page.goto(base+'/drama/5/episode/1',{waitUntil:'networkidle'});await page.locator('.task-drawer-trigger').click();
const row=id=>page.locator('.task-drawer .gen-task-row').filter({has:page.locator('.video-task-meta-line',{hasText:new RegExp('#'+id+'$')})});
await row(205).waitFor();assert.match(await row(205).innerText(),/已完成/);
assert.match(await row(203).innerText(),/待核对/);
assert.match(await row(203).innerText(),/显卡节点已找不到此任务/);
assert.equal(await row(174).getByRole('button',{name:'恢复视频',exact:true}).count(),0);
await row(205).scrollIntoViewIfNeeded();await page.screenshot({path:'D:/web/dj/integration-work/task-205-recovered.png'});
await page.goto(base+'/drama/6/episode/1',{waitUntil:'networkidle'});await page.locator('.task-drawer-trigger').click();
await page.locator('.task-drawer .video-task-status').filter({hasText:'排队中'}).first().waitFor();
assert.deepEqual(errors,[]);
console.log('PASS: #205 completed, missing node record clearly marked, queued tasks visible, cancelled task cannot recover, no writes or runtime errors');
}finally{await browser.close()}
})().catch(e=>{console.error(e.stack);process.exit(1)});