|
- {
- "time": "2026-09-06T10:31:52.558Z",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "overallStatus": "PASS",
- "finalRun": true,
- "scope": "默认路由的119项功能;浏览器证据与聚焦单元合同分别计数。较大功能扩展未实施。",
- "e2e": {
- "tests": 33,
- "pass": 33,
- "fail": 0,
- "retries": 0,
- "startTime": "2026-09-06T10:24:04.121Z",
- "durationMs": 422286.673,
- "complete": true
- },
- "priorFullRun": {
- "pass": 32,
- "fail": 1,
- "reason": "关闭保存失败用例的提示定位同时匹配成功和失败消息,已限定目标错误;另补列表搜索遮罩消失后截图的等待条件。",
- "privateArchived": true,
- "countedAsFinal": false
- },
- "secondFullRun": {
- "pass": 32,
- "fail": 1,
- "reason": "并行加载同源模型时恢复顺序不稳定;已保留文档对象顺序,并以实例编号验证部件隔离和重开。",
- "privateArchived": true,
- "countedAsFinal": false
- },
- "frontend": {
- "status": "PASS",
- "command": "pnpm run build",
- "legacyModelPayloadUnchanged": true
- },
- "backend": {
- "status": "PASS",
- "command": "mvn -pl ut_tran -am test package",
- "tests": 373,
- "failures": 0,
- "errors": 0,
- "skipped": 0,
- "suites": 54
- },
- "runtime": {
- "status": "PASS",
- "tests": 106,
- "pass": 106,
- "fail": 0,
- "skipped": 0
- },
- "client": {
- "status": "PASS",
- "tests": 32,
- "pass": 32,
- "fail": 0,
- "skipped": 0
- },
- "coverage": [
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "scene granular update permission enables editing without the retired shared code",
- "featureIds": [
- "permission.update"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "typing undo/redo stays inside text controls and inactive cached editors ignore global shortcuts",
- "featureIds": [
- "history.undo",
- "history.redo",
- "transform.keys",
- "lifecycle.cache"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "preview locks mutation controls and Delete while Escape restores editing",
- "featureIds": [
- "preview.lock",
- "preview.exit"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "real Three ray hits on hidden descendants are excluded before selecting a root or part",
- "featureIds": [
- "selection.hidden"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "deleting a root disposes its geometry and materials after clearing selection",
- "featureIds": [
- "object.delete",
- "lifecycle.destroy"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "loading and history restoration preserve an authored camera rather than auto-focusing a vehicle",
- "featureIds": [
- "json.rendering",
- "history.undo"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "save B then undo A stays dirty, and redo B returns to the actual saved baseline",
- "featureIds": [
- "history.undo",
- "history.redo"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "new resource bindings do not reuse a saved serial after earlier objects were deleted",
- "featureIds": [
- "validation.bindings"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "a failed replacement GLB keeps the previous live scene rather than clearing an unsaved draft",
- "featureIds": [
- "json.missing-resource"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "failed undo restoration retains live objects and keeps the undo target available for retry",
- "featureIds": [
- "history.failure"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "selection highlight cleanup restores source materials and releases its own GPU helper",
- "featureIds": [
- "selection.highlight",
- "lifecycle.destroy"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "replacement failure waits for other started loads before restoring the original scene",
- "featureIds": [
- "history.failure",
- "glb.pending"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "activity log reflects actual session events and keeps API error details transient",
- "featureIds": [
- "panel.logs"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "verify opens live validation and whitespace binding edits immediately invalidate the active tab",
- "featureIds": [
- "panel.validation",
- "validation.bindings"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "model source navigation locates the published owner and falls back without source permission",
- "featureIds": [
- "assets.model-link"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "gizmo scaling across its pivot follows the same strictly positive scale contract as inspector edits",
- "featureIds": [
- "transform.scale",
- "property.scale"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "default history caps at 60 snapshots, stops at either edge and discards redo only after a new branch",
- "featureIds": [
- "history.capacity",
- "history.undo",
- "history.redo"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "two published instances have unique tree part IDs and editing the second persists independently after reopen",
- "featureIds": [
- "part.transform",
- "selection.tree"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "legacy duplicate instance IDs migrate only later owners in document order despite reversed GLB completion",
- "featureIds": [
- "part.transform",
- "publish.fixed-model"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "successful parallel restores retain document order after delayed GLBs and split-object batches finish out of order",
- "featureIds": [
- "project.load",
- "selection.tree"
- ],
- "source": "tools/scene-closure-engine.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "closing one selected scene checks its cached guard, leaves unrelated workspaces alone",
- "featureIds": [
- "leave.cancel",
- "lifecycle.cache"
- ],
- "source": "tools/scene-tab-close.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "cancel or failed save in a later tab never commits earlier draft discard",
- "featureIds": [
- "leave.cancel",
- "leave.save",
- "leave.role-switch"
- ],
- "source": "tools/scene-tab-close.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "all successful confirmations commit together and unmounted guards are removed",
- "featureIds": [
- "leave.save",
- "lifecycle.destroy"
- ],
- "source": "tools/scene-tab-close.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "fixed model reads the exact version and downloads through its visible scene dependency",
- "featureIds": [
- "publish.fixed-model",
- "permission.update"
- ],
- "source": "tools/scene-closure-assets.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "an explicit missing code cannot fall back to the first READY asset",
- "featureIds": [
- "validation.references",
- "json.missing-resource"
- ],
- "source": "tools/scene-closure-assets.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "copied scene keeps its original pseudo URI but reads its own copied asset by stable code",
- "featureIds": [
- "glb.references"
- ],
- "source": "tools/scene-closure-assets.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "a failed fixed-version lookup is evicted and the same reference can be retried",
- "featureIds": [
- "project.retry"
- ],
- "source": "tools/scene-closure-assets.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "scene image ticket, fixed asset replacement, dependencies and coverUri commit in one versioned PUT",
- "featureIds": [
- "cover.atomic"
- ],
- "source": "tools/scene-cover-api.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "capture failure saves content with the previous cover and reports a warning result",
- "featureIds": [
- "cover.failure"
- ],
- "source": "tools/scene-cover-api.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "upload conflict propagates without any content PUT",
- "featureIds": [
- "project.conflict",
- "cover.failure"
- ],
- "source": "tools/scene-cover-api.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "role switch waits through validation, save, and the later queued publish after dirty clears",
- "featureIds": [
- "publish.concurrent",
- "leave.busy",
- "leave.role-switch"
- ],
- "source": "tools/scene-cover-api.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "role switch rechecks resource uploads started while the save was finishing",
- "featureIds": [
- "leave.busy"
- ],
- "source": "tools/scene-cover-api.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "copies synchronously without bounds, gizmo, grid or selection glow, then restores before JPEG encoding",
- "featureIds": [
- "cover.capture",
- "selection.highlight",
- "view.grid"
- ],
- "source": "tools/scene-cover-capture.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "fresh skinned placement reaches the requested size and floor after authored scale/pose replay",
- "featureIds": [
- "assets.model-double-click",
- "assets.model-drop"
- ],
- "source": "tools/scene-model-placement.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "scale input accepts real GLTF normalization factors below 0.05",
- "featureIds": [
- "property.scale"
- ],
- "source": "tools/scene-model-placement.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "fixed model dependencies are recursively collected, exact and de-duplicated",
- "featureIds": [
- "publish.fixed-model"
- ],
- "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "recovery conflict defaults to preserve and only explicit discard may remove it",
- "featureIds": [
- "recovery.discard"
- ],
- "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "per-page recovery keys prevent copied tabs from deleting each other checkpoints",
- "featureIds": [
- "recovery.multi-session"
- ],
- "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "project operation queue serializes upload, save and publish including failures",
- "featureIds": [
- "publish.concurrent"
- ],
- "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- },
- {
- "kind": "unit",
- "status": "PASS",
- "runId": "scene-editor-2026-09-06T10:24:04.121Z",
- "testTitle": "an upload finishing after a project switch cannot register into the new session",
- "featureIds": [
- "glb.pending",
- "lifecycle.destroy"
- ],
- "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
- "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
- }
- ],
- "database": {
- "ddlChanged": false,
- "reason": "未新增或修改表结构;仅注册并清理测试副本、账号和角色。"
- },
- "logSha256": {
- "web-build-final.log": "60909f032950078c3fc1e979de879a63626335d271a343f1eec3e9181c79a2bb",
- "api-build.log": "b7b7dfccd66ffba22116a7f2d1e034b0ec608b8a33d9b57226ff91c330b6abcf",
- "node-tests-final.log": "22f353c2a1c09f31c604fcaf7a4759cc2d652900e7090875b036b8aacc7ea56c",
- "scene-api-tests-final.log": "e37ac6f5e235ae4699e9b26601f72717927decbda5d7df616f680d23e2945897"
- }
- }
|