|
- import { chromium } from '@playwright/test';
- import { pathToFileURL } from 'node:url';
- import assert from 'node:assert/strict';
- import path from 'node:path';
- import { report, work } from './scene-editor-closure-live.mjs';
- const browser = await chromium.launch({ channel:'msedge', headless:true });
- try {
- const page = await browser.newPage({ viewport:{width:1600,height:1000} });
- const errors=[];
- page.on('pageerror', error => errors.push(error.message));
- await page.goto(pathToFileURL(path.join(report,'index.html')).href);
- assert.equal(await page.locator('.matrix tbody tr').count(),119);
- await page.screenshot({path:path.join(work,'report-overview.png')});
- await page.locator('#search').fill('模型');
- assert.ok(await page.locator('.matrix tbody tr:not(.hidden)').count()>0);
- await page.locator('#search').fill('');
- await page.locator('#state').selectOption('PENDING');
- assert.equal(await page.locator('.matrix tbody tr:not(.hidden)').count(),0);
- await page.locator('#state').selectOption('all');
- await page.locator('a.shot').filter({has:page.locator('img[src*="42-fox"]')}).click();
- await page.locator('#viewer').waitFor({state:'visible'});
- await page.waitForFunction(() => {
- const img=document.querySelector('#viewer img');return img.complete && img.naturalWidth>0;
- });
- await page.screenshot({path:path.join(work,'report-image-viewer.png')});
- await page.locator('#close').click();
- assert.equal(errors.length,0);
- console.log(JSON.stringify({reportUi:'PASS',features:119,filter:true,viewer:true,pageErrors:0}));
- } finally {await browser.close();}
|