const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: true, executablePath: 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe' }); const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); const errors = []; page.on('pageerror', error => errors.push(error.message)); await page.goto('http://127.0.0.1:8931/AI%E5%BF%AB%E9%80%9F%E6%8A%A5%E4%BB%B7_Demo2.html?v=excel-coverage-test', { waitUntil: 'load' }); const result = await page.evaluate(() => { qFloorHeight = 2.5; const rooms = [ { roomName:'餐厅',cabinetType:'餐边柜',cabinetWidth:2,height:2.1,cabinetHeight:2.1,projectArea:4.2,layoutStyle:'一字型' }, { roomName:'客厅',cabinetType:'客厅电视柜',cabinetWidth:3.2,height:2.4,cabinetHeight:2.4,projectArea:7.68,layoutStyle:'一字型' }, { roomName:'主卧',cabinetType:'主卧衣柜',cabinetWidth:2.8,height:2.4,cabinetHeight:2.4,projectArea:6.72,layoutStyle:'一字型' }, { roomName:'厨房',cabinetType:'厨房',cabinetWidth:4.18,height:2.5,cabinetHeight:2.5,projectArea:10.45,layoutStyle:'L型' } ]; qRenderAICards({ rooms }, false); return Object.fromEntries(rooms.map(room => [room.cabinetType, room._detailItems.slice(1).map(item => ({ name:item.name, price:Number(item.price), method:item.method }))])); }); console.log(JSON.stringify({ result, errors })); await browser.close(); })().catch(error => { console.error(error); process.exit(1); });