Wait for canvas account readiness and capture dispatch failures
creative workspace review checks / verify (pull_request) Has been cancelled

This commit is contained in:
2026-10-30 20:35:25 +08:00
parent a0c20972ac
commit 95673d5c54
@@ -10,8 +10,10 @@ export async function verifyCanvasAgentUI(base:string){
await db().query("INSERT INTO account_users(id,email,password_hash,verified_at) VALUES($1,$2,$3,now())",[owner,email,await hashPassword(password)]);
const browser=await chromium.launch({executablePath:process.env.CHROMIUM_PATH||'/usr/bin/chromium',headless:true,args:['--no-sandbox','--disable-dev-shm-usage']});
const context=await browser.newContext({viewport:{width:1440,height:1000}}),errors:string[]=[];
const page=await context.newPage(),canvasRequests:string[]=[];
page.on('response',response=>{const url=new URL(response.url());if(url.pathname.startsWith('/api/canvases'))canvasRequests.push(`${response.request().method()} ${url.pathname} ${response.status()}`)});
try{
const page=await context.newPage();page.setDefaultTimeout(20000);page.on('pageerror',e=>errors.push(e.message));
page.setDefaultTimeout(20000);page.on('pageerror',e=>errors.push(e.message));
await page.goto(base+'/',{waitUntil:'domcontentloaded'});
await page.getByRole('heading',{name:/想法不该停在对话里/,level:1}).waitFor();
await page.getByRole('link',{name:'开始创作',exact:true}).click();
@@ -24,6 +26,7 @@ export async function verifyCanvasAgentUI(base:string){
const session=(await context.cookies()).find(c=>c.name===ACCOUNT_COOKIE);assert.ok(session?.httpOnly,'The actual login response establishes an HTTP-only account session');
const ownerHeaders={cookie:ACCOUNT_COOKIE+'='+session.value};
await page.getByRole('link',{name:'无限画布',exact:true}).click();
await page.getByRole('link',{name:email,exact:true}).waitFor({state:'attached'});
await page.getByRole('button',{name:'从示例开始 ↗',exact:true}).click();
const shot=page.locator('[data-node-id="shot"] [data-node-content]');
await shot.click();await shot.click();
@@ -89,5 +92,9 @@ export async function verifyCanvasAgentUI(base:string){
await page.locator('[data-node-id="shot"] [data-node-content]').getByText(generated,{exact:true}).waitFor();
assert.deepEqual(errors,[]);
console.log('Canvas UI dispatched a real stored task, received an external-client fixture result, rotated/revoked access and restored its online document');
}catch(error){
const statuses=await page.getByRole('status').allTextContents().catch(()=>[]);
console.error('Canvas agent UI diagnostics',JSON.stringify({url:page.url(),statuses,canvasRequests:canvasRequests.slice(-20),errors}));
throw error;
}finally{await context.close();await browser.close()}
}