|
- import fs from 'node:fs'
- import {chromium,expect} from '@playwright/test'
- const report='reports/guide-formal-20260910',checks=[],errors=[],external=[]
- const browser=await chromium.launch({channel:'msedge',headless:true,args:['--enable-unsafe-swiftshader']})
- const page=await browser.newPage({viewport:{width:1440,height:1000}})
- page.on('pageerror',e=>errors.push(e.message))
- await page.route('**/*',route=>{const url=new URL(route.request().url());if(url.hostname!=='127.0.0.1'&&!['blob:','data:'].includes(url.protocol)){external.push(url.origin);return route.abort()}return route.continue()})
- try{
- await page.goto('http://127.0.0.1:18769/')
- await page.locator('[data-action="open-model-library"]').click()
- await page.locator('[data-model-select]').scrollIntoViewIfNeeded()
- for(const [index,name] of [['1','15-offline-fox-scene'],['3','16-offline-truck-scene']]){
- await page.locator('[data-model-select]').selectOption(index)
- await expect(page.locator('[data-model-status]')).not.toContainText(/正在|尚未|失败/,{timeout:90000})
- await page.waitForTimeout(2000)
- await page.screenshot({path:`${report}/${name}.png`})
- checks.push({name,pass:true,detail:await page.locator('[data-model-status]').textContent()})
- }
- }catch(e){checks.push({name:'离线场景浏览器读取',pass:false,detail:e.message});process.exitCode=1}
- finally{checks.push({name:'离线资源不依赖业务服务器或公网',pass:external.length===0,detail:external.join(',')},{name:'无脚本异常',pass:errors.length===0,detail:errors.join('\n')});console.log(checks);fs.writeFileSync(`${report}/offline-browser.json`,JSON.stringify({checks,errors},null,2));await browser.close()}
|