Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

5.9 KiB

三维编辑器 E2E 测试报告

当前状态

  • 用例状态:已完成测试设计、选择器审查、TypeScript 静态检查和无凭据浏览器烟测。
  • 服务状态:Gateway、Auth、Tran 与 Web 已在前台 Windows Terminal 中启动;三个 API 健康检查及 Web 本机/局域网访问均正常。
  • 执行状态:完整 Playwright 业务用例尚未运行。当前仅缺本机 E2E_ADMIN_USERNAMEE2E_ADMIN_PASSWORD(或忽略提交的 .env)提供的可登录测试账号;不会猜测、重置或在报告中记录密码。
  • 本报告不记录账号、密码、访问令牌、请求头或本机绝对资源路径。

验收范围

模块 验收项 自动化方式
模型编辑器 无 iframe、原生 Three.js canvas DOM 合同断言
模型资源 真实 excavator-a.glb 上传、进度、服务端保存 UI + 上传凭证 + SHA-256/长度 + HEAD + Range 206/416
模型编辑 节点选择、变换、软删除、刷新后恢复 场景树/属性面板 UI + 服务端工程 JSON
动画与蓝图 新增时间轴关键帧、新增蓝图节点 编辑器 DOM + 保存刷新 + 工程 JSON
模型发布 发布检查、发布状态、精确发布版本 UI + API 状态
场景编辑器 无 iframe、原生 Three.js canvas DOM 合同断言
真实车间 真实车间模板、车间部件软删除/恢复 UI + 保存刷新 + 工程 JSON
场景编排 从已发布模型目录放置、变换、设备语义 UI + 工程 JSON
版本依赖 SCENE_MODEL 精确引用项目和发布版本 API 合同断言
场景发布 8 项发布校验与发布状态 UI + API 状态
清理 场景优先、模型随后删除 finally API 清理 + JSON 附件

最终选择器基线

模型编辑器

  • 宿主:.model-editor-host
  • 原生画布:.render-host canvas
  • 上传文件框:#model-file-input
  • 场景树:#scene-tree [data-object-id]
  • 变换值:[data-vector="position|rotation|scale"]
  • 软删除/恢复:[data-object-delete][data-action="toggle-deleted"]
  • 时间轴:[data-bottom-tab="timeline"][data-action="add-key"]
  • 蓝图:[data-bottom-tab="blueprint"].bp-toolbar [data-command="add"]
  • 保存/发布:[data-action="save"][data-action="publish"][data-action="publish-model-asset"]

场景编辑器

  • 根节点:.scene-workspace
  • 原生画布:.viewport-host canvas.scene-editor-canvas
  • 左侧页签:.panel-tabs button
  • 已发布模型卡:.asset-card
  • 真实车间模板:.template-card
  • 车间部件:.tree-row.child
  • 部件软删除/恢复:.danger-zone button.danger.restore-notice button
  • 属性变换:.property-section .vector-field input
  • 持久化引用:.reference-card
  • 校验/发布:.validation-grid.publish-button

自动化边界

Three.js gizmo 的像素坐标会随视口尺寸、相机、模型包围盒和显卡时序变化,因此不把鼠标拖拽作为稳定合同。用例仍通过编辑器自己的属性面板修改同一变换数据,并在保存后读取服务端工程 JSON 二次校验,覆盖真实业务结果。

蓝图自由画布的连线拖拽同样不作为稳定入口;用例通过蓝图工具栏新增节点,保存并刷新后核对节点集合。时间轴使用可定位的 DOM 轨道设置播放头并新增关键帧。

计划生成的关键截图

  1. three-model-native-canvas
  2. three-model-real-glb-upload-progress
  3. three-model-soft-delete-persisted
  4. three-model-transform-timeline-blueprint
  5. three-model-saved-and-restored
  6. three-model-published
  7. three-scene-workshop-part-deleted-after-refresh
  8. three-scene-published-model-reference
  9. three-scene-saved-and-restored
  10. three-scene-eight-checks-passed
  11. three-scene-published

截图写入 artifacts/screenshots,HTML/JSON 报告同时附带;截图阶段均在登录完成后,不包含登录密码或访问令牌。

执行命令(服务版本确认后)

pnpm run typecheck
pnpm test -- content-authoring.spec.ts

执行结果

项目 结果
TypeScript 静态检查 通过
登录页浏览器烟测 通过(1440×900)
Playwright E2E 待执行
模型工程清理 待执行
场景工程清理 待执行

无凭据烟测截图:artifacts/final-smoke/login-page.png。该截图仅验证最终 Web 服务可加载、登录页布局完整、四角色入口与认证服务状态可见,不替代登录后的三维编辑器业务验收。

运行时用例会额外生成 UTF-8 Markdown 执行摘要和 JSON 清理结果附件。工程删除为服务端软删除;SHA-256 内容寻址对象可能被其它版本复用,因此不会做破坏性的物理文件强删。

2026-08-09 编辑器专项烟测

本轮在不使用登录凭据、不修改业务数据的条件下,对 Vite 最终源码执行独立浏览器挂载:

  • 登录页:局域网访问时管理员角色默认选中,账号输入框显示管理员占位提示。
  • 模型编辑器:分别以明亮/暗黑主题挂载原生 Shadow DOM 工作台;1366、1440、1920 三档宽度均无编辑器、顶部工具栏或按钮横向溢出,18 个可见工具按钮全部保留。
  • 场景编辑器:在 isSecureContext=falsecrypto.randomUUID 不存在的真实局域网 HTTP 环境中成功生成场景 UUID、挂载 Three.js canvas 和 4 个初始对象。
  • 场景历史:修复响应式 Proxy 导致的 structuredClone 异常后,浏览器挂载期间无 randomUUIDDataCloneErrorTypeError 或未处理异常。

专项截图:

  1. artifacts/final-smoke/login-admin-default.png
  2. artifacts/final-smoke/model-editor-light-1440.png
  3. artifacts/final-smoke/model-editor-dark-1920.png
  4. artifacts/final-smoke/scene-editor-lan-loaded.png

上述专项烟测验证页面初始化、主题和布局,不替代需要管理员测试凭据的完整创建、服务端保存、刷新恢复与发布 E2E。