E2E_ADMIN_USERNAME、E2E_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-buttonThree.js gizmo 的像素坐标会随视口尺寸、相机、模型包围盒和显卡时序变化,因此不把鼠标拖拽作为稳定合同。用例仍通过编辑器自己的属性面板修改同一变换数据,并在保存后读取服务端工程 JSON 二次校验,覆盖真实业务结果。
蓝图自由画布的连线拖拽同样不作为稳定入口;用例通过蓝图工具栏新增节点,保存并刷新后核对节点集合。时间轴使用可定位的 DOM 轨道设置播放头并新增关键帧。
three-model-native-canvasthree-model-real-glb-upload-progressthree-model-soft-delete-persistedthree-model-transform-timeline-blueprintthree-model-saved-and-restoredthree-model-publishedthree-scene-workshop-part-deleted-after-refreshthree-scene-published-model-referencethree-scene-saved-and-restoredthree-scene-eight-checks-passedthree-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 内容寻址对象可能被其它版本复用,因此不会做破坏性的物理文件强删。
本轮在不使用登录凭据、不修改业务数据的条件下,对 Vite 最终源码执行独立浏览器挂载:
isSecureContext=false、crypto.randomUUID 不存在的真实局域网 HTTP 环境中成功生成场景 UUID、挂载 Three.js canvas 和 4 个初始对象。structuredClone 异常后,浏览器挂载期间无 randomUUID、DataCloneError、TypeError 或未处理异常。专项截图:
artifacts/final-smoke/login-admin-default.pngartifacts/final-smoke/model-editor-light-1440.pngartifacts/final-smoke/model-editor-dark-1920.pngartifacts/final-smoke/scene-editor-lan-loaded.png上述专项烟测验证页面初始化、主题和布局,不替代需要管理员测试凭据的完整创建、服务端保存、刷新恢复与发布 E2E。