Files
menchuang/frontend/scripts/debug-hit.mjs
T
HHY e3b4056855 fix: v2.6 组合画布选中根因修复+右键菜单+3D 三场景
- 选中失效根因: Vue3 布尔 prop 缺省转换(editable 缺省→false)
  withDefaults 默认 true 修复, 左键选中/右键选中/菜单动作全链路打通
- 右键菜单: 右键单元弹操作菜单(顺/逆旋转/镜像/底边对齐/删除)
  动作 emit('ctx') 由父组件统一执行, document 级委托
- 3D 三场景: 室内(窗后墙+木地板)/室外(外墙+草地)/影棚(网格)
  场景联动背景色, 真实浏览器截图验证三场景渲染
- 菜单动作行为级验证: 旋转后 1600x1800 宽高互换✓ 删除清空✓
2026-09-22 05:11:47 -07:00

35 lines
1.4 KiB
JavaScript

// 选中命中诊断: node scripts/debug-hit.mjs <token>
import puppeteer from 'puppeteer-core'
const EDGE = 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'
const token = process.argv[2]
if (!token) { console.error('缺少 token'); process.exit(1) }
const browser = await puppeteer.launch({
executablePath: EDGE,
headless: 'new',
args: ['--window-size=1440,900', '--enable-unsafe-swiftshader', '--use-gl=angle', '--use-angle=swiftshader'],
defaultViewport: { width: 1440, height: 900 },
})
const page = await browser.newPage()
await page.goto(`http://localhost:8000/combine?token=${encodeURIComponent(token)}`, { waitUntil: 'networkidle2' })
await page.waitForSelector('.lib-item')
await page.click('.lib-item')
await new Promise(r => setTimeout(r, 600))
const box = await (await page.$('.canvas-box')).boundingBox()
const cx = box.x + box.width / 2, cy = box.y + box.height / 2
// 用画布暴露的调试钩子命中测试
const dbg = await page.evaluate((x, y) => window.__ccDebug.debugHit(x, y), cx, cy)
console.log('debugHit:', JSON.stringify(dbg))
const sel = await page.evaluate(() => window.__ccDebug.getSelected())
console.log('选中 uid:', sel)
// 实际点击后再读选中
await page.mouse.click(cx, cy)
await new Promise(r => setTimeout(r, 300))
const sel2 = await page.evaluate(() => window.__ccDebug.getSelected())
console.log('点击后选中 uid:', sel2)
await browser.close()