28 lines
1.9 KiB
JavaScript
28 lines
1.9 KiB
JavaScript
// Inspect the installed app using GET requests only; never cancel live jobs.
|
|
const {chromium}=require('playwright-core'),fs=require('node:fs'),assert=require('node:assert/strict');
|
|
(async()=>{
|
|
const root='D:/web/dj',api=JSON.parse(fs.readFileSync(root+'/huobao-data/last-launch.json')).api;
|
|
const tasks=(await (await fetch(api+'/episodes/7/generation-tasks')).json()).data.tasks;
|
|
const browser=await chromium.launch({channel:'chrome',headless:true});
|
|
try {
|
|
const page=await browser.newPage({viewport:{width:1600,height:1200}}),errors=[];
|
|
page.on('pageerror',e=>errors.push(e.message));
|
|
await page.addInitScript(()=>localStorage.setItem('huobao:tours',JSON.stringify(['episode'])));
|
|
await page.route('**/api/**',r=>['GET','HEAD'].includes(r.request().method())?r.continue():r.abort());
|
|
await page.goto(api.replace('/api/v1','')+'/drama/6/episode/1',{waitUntil:'networkidle'});
|
|
await page.getByRole('button',{name:/^任务/}).click();
|
|
const drawer=page.locator('.task-drawer-overlay');await drawer.waitFor();
|
|
const row=id=>drawer.locator('.gen-task-row').filter({has:page.locator('.video-task-meta-line').filter({hasText:'#'+id})});
|
|
const active=tasks.filter(t=>t.can_cancel);
|
|
for(const task of active) {
|
|
assert.equal(await row(task.id).getByRole('button',{name:/^(重试)?取消任务$/,exact:true}).count(),1);
|
|
}
|
|
const cancelled=tasks.filter(t=>t.error_code==='user_cancelled');
|
|
for(const task of cancelled)assert.equal(await row(task.id).locator('.video-task-status.is-cancelled').count(),1);
|
|
if(active.length)await row(active[active.length-1].id).scrollIntoViewIfNeeded();
|
|
await page.screenshot({path:root+'/integration-work/cancel-installed.png'});
|
|
assert.deepEqual(errors,[]);
|
|
console.log('PASS: installed cancel buttons for tasks',active.map(t=>t.id),'; cancelled history',cancelled.length,'; GET-only verification');
|
|
}finally{await browser.close()}
|
|
})().catch(e=>{console.error(e.stack);process.exit(1)});
|