ui(report): show wrinkle loading hints over side photos
This commit is contained in:
@@ -29,7 +29,12 @@ try {
|
||||
const result=await(await primary).json();assert.equal(result.ok,true);assert.equal(result.wrinkle_views.left.status,'pending');
|
||||
assert.equal(fs.readFileSync(path.join(dir,'provider-calls.jsonl'),'utf8').trim().split('\n').length,1,'main response cannot wait for side paid calls');
|
||||
await page.waitForSelector('#s-report.active');const conclusion=await page.locator('#ditem-para2').textContent();
|
||||
await page.waitForFunction(()=>document.querySelector('#wrinkle-layer-note').textContent.includes('加载中'));
|
||||
await page.waitForFunction(()=>document.querySelectorAll('#wrinkle-sides .wrinkle-loading:not([hidden])').length===2);
|
||||
assert(await page.locator('#wrinkle-layer-note').evaluate(e=>e.hidden),'pending text is on images, not duplicated below');
|
||||
for(const view of ['left','right']) {
|
||||
const sizes=await page.locator('#wrinkle-'+view).evaluate(img=>{const a=img.closest('button').getBoundingClientRect(),b=img.parentNode.querySelector('.wrinkle-loading').getBoundingClientRect();return [a.width,a.height,b.width,b.height];});
|
||||
assert.equal(sizes[0],sizes[2]);assert.equal(sizes[1],sizes[3]);
|
||||
}
|
||||
await page.waitForFunction(()=>window.__annotationStarts.length===1);
|
||||
await page.evaluate(()=>window.__asyncScreen('s-splash'));
|
||||
const api=page.context().request;
|
||||
@@ -39,6 +44,7 @@ try {
|
||||
assert.equal(await page.locator('#wrinkle-left').getAttribute('data-has-annotation'),'false','hidden report is not patched by stale response');
|
||||
await page.evaluate(()=>window.__asyncScreen('s-report'));
|
||||
await page.waitForFunction(()=>['left','right'].every(v=>document.querySelector('#wrinkle-'+v).dataset.hasAnnotation==='true'));
|
||||
assert.equal(await page.locator('#wrinkle-sides .wrinkle-loading:not([hidden])').count(),0,'loading mask disappears when layers are ready');
|
||||
assert.equal(await page.locator('#ditem-para2').textContent(),conclusion);
|
||||
assert.deepEqual(await page.evaluate(()=>window.__annotationStarts),[{report:true,scan:false}]);
|
||||
const stored=await(await api.get(base+'api/reports/'+result.record_id)).json();assert.equal(stored.report.payload.wrinkle_job.status,'complete');assert.deepEqual(stored.report.vm,result.vm);assert.deepEqual(stored.report.presentation,result.presentation);
|
||||
@@ -49,6 +55,7 @@ try {
|
||||
await page.evaluate(()=>window.__startAsyncReport());await page.waitForSelector('#s-report.active');
|
||||
await page.waitForFunction(()=>document.querySelector('#wrinkle-layer-note').textContent.includes('部分侧脸未获取'));
|
||||
assert.equal(await page.locator('#s-report.active').count(),1,'optional annotation failure keeps report accessible');
|
||||
assert.equal(await page.locator('#wrinkle-sides .wrinkle-loading:not([hidden])').count(),0,'failed load never leaves a permanent mask');
|
||||
assert.equal(await page.locator('#ditem-para2').textContent(),conclusion);
|
||||
assert.equal(fs.readFileSync(path.join(dir,'provider-calls.jsonl'),'utf8').trim().split('\n').length,4,'failed optional endpoint adds no provider retry');
|
||||
assert.deepEqual(errors,[]);console.log('PASS: fast main report, side requests only after active report, pending/ready UI, unchanged conclusions/scores, owner isolation, snapshot cache, exactly 3 fixture calls');
|
||||
|
||||
Reference in New Issue
Block a user