40 lines
2.7 KiB
JavaScript
40 lines
2.7 KiB
JavaScript
const { chromium } = require('playwright-core');
|
|
const assert = require('node:assert/strict');
|
|
const path = require('node:path');
|
|
(async () => {
|
|
const browser = await chromium.launch({channel:'chrome', headless:true});
|
|
try {
|
|
const page = await browser.newPage({viewport:{width:1600,height:1120}});
|
|
const errors=[];
|
|
page.on('pageerror',e=>errors.push(e.message));
|
|
await page.addInitScript(()=>localStorage.setItem('huobao:tours',JSON.stringify(['episode'])));
|
|
await page.route('**/api/v1/tasks',route=>route.request().method()==='POST'?route.abort():route.continue());
|
|
await page.goto('http://127.0.0.1:18950/drama/1/episode/1',{waitUntil:'networkidle'});
|
|
const close=page.locator('.driver-popover-close-btn');
|
|
if(await close.isVisible()) await close.click();
|
|
await page.getByText('视频制作',{exact:true}).first().click();
|
|
const form=page.locator('.scene-lock-panel');
|
|
try { await form.waitFor({timeout:8000}); }
|
|
catch(e) { await page.screenshot({path:path.join(process.env.SCENE_FIXTURE,'ui-failure.png')}); console.log('UI:',(await page.locator('body').innerText()).slice(0,2400),errors); throw e; }
|
|
assert.match(await form.innerText(),/Dormitory/);
|
|
assert.match(await form.innerText(),/所有分镜共用/);
|
|
await form.getByLabel('空间与固定陈设').fill('Blue plaster walls; east window; oak desk below the window.');
|
|
assert.match(await form.innerText(),/未保存/);
|
|
await form.getByRole('button',{name:'保存场景设定',exact:true}).click();
|
|
await page.waitForFunction(()=>document.querySelector('.scene-lock-panel .actions')?.textContent.includes('已保存'));
|
|
const value=await page.evaluate(async()=> (await (await fetch('/api/v1/storyboards/1/environment')).json()).data);
|
|
assert.equal(value.current.environment,'Blue plaster walls; east window; oak desk below the window.');
|
|
assert.equal(value.stale,true);
|
|
await page.reload({waitUntil:'networkidle'});
|
|
await page.getByText('视频制作',{exact:true}).first().click();
|
|
await form.waitFor();
|
|
assert.equal(await form.getByLabel('空间与固定陈设').inputValue(),'Blue plaster walls; east window; oak desk below the window.');
|
|
await form.scrollIntoViewIfNeeded();
|
|
await page.screenshot({path:path.join(process.env.SCENE_FIXTURE,'scene-lock-ui.png')});
|
|
await page.setViewportSize({width:1280,height:850});
|
|
assert.equal(await form.evaluate(e=>e.scrollWidth<=e.clientWidth+2),true);
|
|
assert.deepEqual(errors,[]);
|
|
console.log('PASS: scene panel, shared setting save, stale version warning, reload persistence, narrow layout; no real generation');
|
|
} finally {await browser.close();}
|
|
})().catch(e=>{console.error(e.stack);process.exit(1)});
|