Files
FreeCADWasmDev/docs/current/user-tests-20260915/manual-coverage.json
wangdequan 72152ef356 Save verified native IFC import and user validation evidence
Real IFC2X3/IFC4 import tested. Full BIM authoring/export remains out of scope; 349-second building import performance remains to optimize.
2026-09-16 04:27:37 +08:00

2343 lines
81 KiB
JSON

{
"scope": "21 manual items, not 1452 command acceptance",
"counts": {
"passed": 21,
"failed": 0,
"blocked": 0,
"not_run": 0
},
"coverage": [
{
"id": "UI-01",
"title": "首次启动",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/UI-01-01.png",
"manual-2026-09-15T08-09-15-351Z/UI-01-02.png",
"manual-2026-09-15T08-09-15-351Z/UI-01-03.png"
]
},
{
"id": "UI-02",
"title": "文档标签隔离",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/UI-02-01.png",
"manual-2026-09-15T11-47-41-751Z/UI-02-02.png",
"manual-2026-09-15T11-47-41-751Z/UI-02-03.png"
]
},
{
"id": "UI-03",
"title": "工作台入口",
"status": "passed",
"detail": "32/32 模块入口通过;入口检查不等于模块业务验收",
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/report.md"
]
},
{
"id": "UI-04",
"title": "视口交互",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/UI-04-01.png",
"manual-2026-09-15T11-47-41-751Z/UI-04-02.png",
"manual-2026-09-15T11-47-41-751Z/UI-04-03.png",
"manual-2026-09-15T11-47-41-751Z/UI-04-04.png",
"manual-2026-09-15T11-47-41-751Z/UI-04-05.png"
]
},
{
"id": "GEO-01",
"title": "Box 参数与重算",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/GEO-01-01.png",
"manual-2026-09-15T12-53-49-351Z/GEO-01-02.png"
]
},
{
"id": "GEO-02",
"title": "参数修改事务",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/GEO-02-01.png",
"manual-2026-09-15T11-47-41-751Z/GEO-02-02.png",
"manual-2026-09-15T11-47-41-751Z/GEO-02-03.png",
"manual-2026-09-15T11-47-41-751Z/GEO-02-04.png",
"manual-2026-09-15T11-47-41-751Z/GEO-02-05.png"
]
},
{
"id": "GEO-03",
"title": "多对象与布尔",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/GEO-03-01.png",
"manual-2026-09-15T11-47-41-751Z/GEO-03-02.png",
"manual-2026-09-15T11-47-41-751Z/GEO-03-03.png",
"manual-2026-09-15T11-47-41-751Z/GEO-03-04.png"
]
},
{
"id": "GEO-04",
"title": "选择与删除恢复",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/GEO-04-01.png",
"manual-2026-09-15T08-09-15-351Z/GEO-04-02.png",
"manual-2026-09-15T08-09-15-351Z/GEO-04-03.png",
"manual-2026-09-15T08-09-15-351Z/GEO-04-04.png"
]
},
{
"id": "FILE-01",
"title": "STEP 导入",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/FILE-01-01.png",
"manual-2026-09-15T08-09-15-351Z/FILE-01-02.png"
]
},
{
"id": "FILE-02",
"title": "多格式导入",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T16-41-07-796Z/report.md",
"manual-2026-09-15T16-41-07-796Z/FILE-02-01.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-02.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-03.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-04.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-05.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-06.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-07.png"
]
},
{
"id": "FILE-03",
"title": "保存与重开",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/FILE-03-01.png",
"manual-2026-09-15T12-53-49-351Z/FILE-03-02.png",
"manual-2026-09-15T12-53-49-351Z/FILE-03-03.png",
"manual-2026-09-15T12-53-49-351Z/FILE-03-04.png"
]
},
{
"id": "FILE-04",
"title": "OPFS 刷新恢复",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/FILE-04-01.png",
"manual-2026-09-15T11-47-41-751Z/FILE-04-02.png",
"manual-2026-09-15T11-47-41-751Z/FILE-04-03.png"
]
},
{
"id": "FILE-05",
"title": "STL 导出回读",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/FILE-05-01.png",
"manual-2026-09-15T12-53-49-351Z/FILE-05-02.png",
"manual-2026-09-15T12-53-49-351Z/FILE-05-03.png"
]
},
{
"id": "DOC-01",
"title": "属性编辑",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T11-47-41-751Z/report.md",
"manual-2026-09-15T11-47-41-751Z/DOC-01-01.png",
"manual-2026-09-15T11-47-41-751Z/DOC-01-02.png",
"manual-2026-09-15T11-47-41-751Z/DOC-01-03.png",
"manual-2026-09-15T11-47-41-751Z/DOC-01-04.png",
"manual-2026-09-15T11-47-41-751Z/DOC-01-05.png"
]
},
{
"id": "DOC-02",
"title": "分组与层级",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/DOC-02-01.png",
"manual-2026-09-15T12-53-49-351Z/DOC-02-02.png",
"manual-2026-09-15T12-53-49-351Z/DOC-02-03.png",
"manual-2026-09-15T12-53-49-351Z/DOC-02-04.png",
"manual-2026-09-15T12-53-49-351Z/DOC-02-05.png",
"manual-2026-09-15T12-53-49-351Z/DOC-02-06.png"
]
},
{
"id": "DOC-03",
"title": "链接替换与解除",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/DOC-03-01.png",
"manual-2026-09-15T12-53-49-351Z/DOC-03-02.png",
"manual-2026-09-15T12-53-49-351Z/DOC-03-03.png",
"manual-2026-09-15T12-53-49-351Z/DOC-03-04.png"
]
},
{
"id": "ERR-01",
"title": "取消",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/ERR-01-01.png",
"manual-2026-09-15T12-53-49-351Z/ERR-01-02.png",
"manual-2026-09-15T12-53-49-351Z/ERR-01-03.png",
"manual-2026-09-15T12-53-49-351Z/ERR-01-04.png"
]
},
{
"id": "ERR-02",
"title": "非法输入",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/ERR-02-01.png",
"manual-2026-09-15T08-09-15-351Z/ERR-02-02.png",
"manual-2026-09-15T08-09-15-351Z/ERR-02-03.png"
]
},
{
"id": "ERR-03",
"title": "重复请求",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T08-09-15-351Z/report.md",
"manual-2026-09-15T08-09-15-351Z/ERR-03-01.png"
]
},
{
"id": "PERF-01",
"title": "大文件加载",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/PERF-01-01.png",
"manual-2026-09-15T12-53-49-351Z/PERF-01-02.png",
"manual-2026-09-15T12-53-49-351Z/PERF-01-03.png",
"manual-2026-09-15T12-53-49-351Z/PERF-01-04.png"
]
},
{
"id": "PERF-02",
"title": "长时间稳定性",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/PERF-02-01.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-02.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-03.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-04.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-05.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-06.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-07.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-08.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-09.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-10.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-11.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-12.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-13.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-14.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-15.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-16.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-17.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-18.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-19.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-20.png",
"manual-2026-09-15T12-53-49-351Z/PERF-02-21.png"
]
}
],
"modules": [
{
"module": "Assembly",
"result": {
"id": "UI-03-Assembly",
"title": "Assembly 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:09.360Z",
"actual": {
"route": "/workbench.html?module=Assembly",
"isolated": true
},
"seconds": 0.209,
"evidence": {
"state": "UI-03-Assembly-01.json",
"screenshot": "UI-03-Assembly-01.png",
"screenshotSha256": "19139bf18d1d64b8a8acf56699139b90921906db58ec1306e04ca783364d0576"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:09.797Z",
"actual": {
"selected": "Assembly"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Assembly-02.json",
"screenshot": "UI-03-Assembly-02.png",
"screenshotSha256": "260d64c549d8552b9c89495fa5a088d975f1b2488c56d570ce3d947bbec19d86"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:09.963Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.307,
"evidence": {
"state": "UI-03-Assembly-03.json",
"screenshot": "UI-03-Assembly-03.png",
"screenshotSha256": "4e8541f0c1a5ab1b4d8d477a6b99c8603dbe0204d5087a2c5205a91f25cd9314"
}
}
],
"startedAt": "2026-09-15T11:48:09.360Z",
"seconds": 1.068,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "BIM",
"result": {
"id": "UI-03-BIM",
"title": "BIM 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:10.429Z",
"actual": {
"route": "/workbench.html?module=BIM",
"isolated": true
},
"seconds": 0.19,
"evidence": {
"state": "UI-03-BIM-01.json",
"screenshot": "UI-03-BIM-01.png",
"screenshotSha256": "61473fc53562543cde3e4f6be5c5fdee8179aeef144d1c57429a4705b6d78553"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:10.827Z",
"actual": {
"selected": "BIM"
},
"seconds": 0.002,
"evidence": {
"state": "UI-03-BIM-02.json",
"screenshot": "UI-03-BIM-02.png",
"screenshotSha256": "751d2f9732177c622457e7afdbe7c75a463f5ba9b0342081f90c5c810dd67d6e"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:10.994Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.303,
"evidence": {
"state": "UI-03-BIM-03.json",
"screenshot": "UI-03-BIM-03.png",
"screenshotSha256": "d1fad1fb729d15e7b1a2d8fc321d1e72ed674124dd5cbc6a8aecead3ceea80c8"
}
}
],
"startedAt": "2026-09-15T11:48:10.429Z",
"seconds": 1.019,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "CAM",
"result": {
"id": "UI-03-CAM",
"title": "CAM 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:11.448Z",
"actual": {
"route": "/workbench.html?module=CAM",
"isolated": true
},
"seconds": 0.192,
"evidence": {
"state": "UI-03-CAM-01.json",
"screenshot": "UI-03-CAM-01.png",
"screenshotSha256": "ec14889385079c6aa43a6f300061f401e1a699c8c47978ec7612c317a937e56b"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:11.837Z",
"actual": {
"selected": "CAM"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-CAM-02.json",
"screenshot": "UI-03-CAM-02.png",
"screenshotSha256": "9e2096f20ad5b4265849b4703fc3ae31dbf021b0f4a519686c05e9e967bf4da4"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:11.999Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.304,
"evidence": {
"state": "UI-03-CAM-03.json",
"screenshot": "UI-03-CAM-03.png",
"screenshotSha256": "ce204c6111316d96c41098fd888431e4a4ead817eb19f593e5b4ff6e9d52c51b"
}
}
],
"startedAt": "2026-09-15T11:48:11.448Z",
"seconds": 1.012,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Cloud",
"result": {
"id": "UI-03-Cloud",
"title": "Cloud 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:12.461Z",
"actual": {
"route": "/workbench.html?module=Cloud",
"isolated": true
},
"seconds": 0.189,
"evidence": {
"state": "UI-03-Cloud-01.json",
"screenshot": "UI-03-Cloud-01.png",
"screenshotSha256": "ea57d717626b8a09939640dee33e6f7cd0a83af68448806d0ff09c798bf607c2"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:12.886Z",
"actual": {
"selected": "Cloud"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Cloud-02.json",
"screenshot": "UI-03-Cloud-02.png",
"screenshotSha256": "29281d2fa69e8f5ef31275e1421a89c8ccfe811e5fedd3de0a0ceff6c7ca6787"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:13.064Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.757,
"evidence": {
"state": "UI-03-Cloud-03.json",
"screenshot": "UI-03-Cloud-03.png",
"screenshotSha256": "63aaae7470b9d5f82753cc55e350a5350e85b7fcbe656d60e90816b464d11193"
}
}
],
"startedAt": "2026-09-15T11:48:12.461Z",
"seconds": 1.518,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Draft",
"result": {
"id": "UI-03-Draft",
"title": "Draft 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:13.980Z",
"actual": {
"route": "/workbench.html?module=Draft",
"isolated": true
},
"seconds": 0.202,
"evidence": {
"state": "UI-03-Draft-01.json",
"screenshot": "UI-03-Draft-01.png",
"screenshotSha256": "0e455a66f1d57e649a8a622247266541a4cc1ebbd73412f3baf8e21378ed6197"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:14.483Z",
"actual": {
"selected": "Draft"
},
"seconds": 0.002,
"evidence": {
"state": "UI-03-Draft-02.json",
"screenshot": "UI-03-Draft-02.png",
"screenshotSha256": "e8e83e267265ac79d51cc1e64a0479f92783898b56d6aad9269900dc47c71d15"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:14.734Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.306,
"evidence": {
"state": "UI-03-Draft-03.json",
"screenshot": "UI-03-Draft-03.png",
"screenshotSha256": "d5f634e52a1b94c1b7494d6d974d8037e92df6ad54c35ce3419343c6e46e4fcc"
}
}
],
"startedAt": "2026-09-15T11:48:13.980Z",
"seconds": 1.235,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Fem",
"result": {
"id": "UI-03-Fem",
"title": "Fem 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:15.216Z",
"actual": {
"route": "/workbench.html?module=Fem",
"isolated": true
},
"seconds": 0.224,
"evidence": {
"state": "UI-03-Fem-01.json",
"screenshot": "UI-03-Fem-01.png",
"screenshotSha256": "dce230211678e57d20f050ab3fc2cb58928b33ea38202dc747d110c7e196e013"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:15.686Z",
"actual": {
"selected": "Fem"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Fem-02.json",
"screenshot": "UI-03-Fem-02.png",
"screenshotSha256": "47712dbc314c4e8e23d82d21a3c2712e9dc1ad5bb0bf8fd6c7477cb055d4f7d8"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:15.865Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.304,
"evidence": {
"state": "UI-03-Fem-03.json",
"screenshot": "UI-03-Fem-03.png",
"screenshotSha256": "60f6d3b5139fa09514a36bbf5e48aa0332220f6d1b16331db946a77b5738a3ca"
}
}
],
"startedAt": "2026-09-15T11:48:15.216Z",
"seconds": 1.105,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Help",
"result": {
"id": "UI-03-Help",
"title": "Help 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:16.322Z",
"actual": {
"route": "/workbench.html?module=Help",
"isolated": true
},
"seconds": 0.199,
"evidence": {
"state": "UI-03-Help-01.json",
"screenshot": "UI-03-Help-01.png",
"screenshotSha256": "860481e0f7f71ca06ac4ce4eb9c8ed071bbbb05eeede2755b719f4cc68db6463"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:16.717Z",
"actual": {
"selected": "Help"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Help-02.json",
"screenshot": "UI-03-Help-02.png",
"screenshotSha256": "af3a126f2fe2e31f5efe2c11cec6a1ac6e99396292bfc8e3a8023ee3870e9647"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:16.872Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.303,
"evidence": {
"state": "UI-03-Help-03.json",
"screenshot": "UI-03-Help-03.png",
"screenshotSha256": "d69d78ce60ac6a0dd27106410d04c19121cd7c3677c5b322e3491f847085d709"
}
}
],
"startedAt": "2026-09-15T11:48:16.321Z",
"seconds": 0.999,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Import",
"result": {
"id": "UI-03-Import",
"title": "Import 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:17.322Z",
"actual": {
"route": "/workbench.html?module=Import",
"isolated": true
},
"seconds": 0.194,
"evidence": {
"state": "UI-03-Import-01.json",
"screenshot": "UI-03-Import-01.png",
"screenshotSha256": "cfaaf4d96d74f65107cb8b7fdd5cec05782bbcbe37545be7ebf1f7f772fd8585"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:17.701Z",
"actual": {
"selected": "Import"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Import-02.json",
"screenshot": "UI-03-Import-02.png",
"screenshotSha256": "040fdf4060e7905f6ef908fa1f007f3dfdafd14757233b04d41824950c9cb2fc"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:17.864Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.304,
"evidence": {
"state": "UI-03-Import-03.json",
"screenshot": "UI-03-Import-03.png",
"screenshotSha256": "8c0918d08f2d5c68c06e296ef0123deb3f46cfef45833e202767fe29833747a6"
}
}
],
"startedAt": "2026-09-15T11:48:17.321Z",
"seconds": 1.001,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Inspection",
"result": {
"id": "UI-03-Inspection",
"title": "Inspection 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:18.323Z",
"actual": {
"route": "/workbench.html?module=Inspection",
"isolated": true
},
"seconds": 0.197,
"evidence": {
"state": "UI-03-Inspection-01.json",
"screenshot": "UI-03-Inspection-01.png",
"screenshotSha256": "427f07e2779afd87f9581168bee78d9a9629064e500531cbda80e4cf7b8acda5"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:18.713Z",
"actual": {
"selected": "Inspection"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Inspection-02.json",
"screenshot": "UI-03-Inspection-02.png",
"screenshotSha256": "7b80e34cff0f18dd5a5344dbc834f40e786b4e506296a14dc7868df18c89c6ba"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:18.877Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.303,
"evidence": {
"state": "UI-03-Inspection-03.json",
"screenshot": "UI-03-Inspection-03.png",
"screenshotSha256": "9dea70402fe53f9543c10a5433232fa3f1bff4663d20fda357077be9b752d4f2"
}
}
],
"startedAt": "2026-09-15T11:48:18.323Z",
"seconds": 1.013,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "JtReader",
"result": {
"id": "UI-03-JtReader",
"title": "JtReader 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:19.337Z",
"actual": {
"route": "/workbench.html?module=JtReader",
"isolated": true
},
"seconds": 0.198,
"evidence": {
"state": "UI-03-JtReader-01.json",
"screenshot": "UI-03-JtReader-01.png",
"screenshotSha256": "87aa34a6beb82d151e158d1d1e86cc070bc23070f08b9dbf2c5a0b294decf2d0"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:19.710Z",
"actual": {
"selected": "JtReader"
},
"seconds": 0.002,
"evidence": {
"state": "UI-03-JtReader-02.json",
"screenshot": "UI-03-JtReader-02.png",
"screenshotSha256": "f5e81b68d2a06a5044abedd9928fe54f61f112937dadd90ae3b888d569a9ba60"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:19.871Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.303,
"evidence": {
"state": "UI-03-JtReader-03.json",
"screenshot": "UI-03-JtReader-03.png",
"screenshotSha256": "b9d9ae294e28ef2a40fafda36b67be097df6ec002a892296dafc7be287cf14ff"
}
}
],
"startedAt": "2026-09-15T11:48:19.337Z",
"seconds": 0.981,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Material",
"result": {
"id": "UI-03-Material",
"title": "Material 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:20.318Z",
"actual": {
"route": "/workbench.html?module=Material",
"isolated": true
},
"seconds": 0.197,
"evidence": {
"state": "UI-03-Material-01.json",
"screenshot": "UI-03-Material-01.png",
"screenshotSha256": "64f86c312a56ed10ad87315bc6977e051dfc2e883b2e166f4a1d3cffce12089d"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:20.705Z",
"actual": {
"selected": "Material"
},
"seconds": 0.004,
"evidence": {
"state": "UI-03-Material-02.json",
"screenshot": "UI-03-Material-02.png",
"screenshotSha256": "68ff4083a586fcd249645bd8c7340844f542480410c3cb2363288f3857a8d598"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:20.885Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.303,
"evidence": {
"state": "UI-03-Material-03.json",
"screenshot": "UI-03-Material-03.png",
"screenshotSha256": "f427213bd22eb53d2f7cb8317df7d33ec1189226df62603d128c8f5fd090d36b"
}
}
],
"startedAt": "2026-09-15T11:48:20.318Z",
"seconds": 1.025,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Measure",
"result": {
"id": "UI-03-Measure",
"title": "Measure 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:21.344Z",
"actual": {
"route": "/workbench.html?module=Measure",
"isolated": true
},
"seconds": 0.192,
"evidence": {
"state": "UI-03-Measure-01.json",
"screenshot": "UI-03-Measure-01.png",
"screenshotSha256": "ada10a237803bc0805a693240006ed29f3cae42579440acc147e81ada7013553"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:21.779Z",
"actual": {
"selected": "Measure"
},
"seconds": 0.002,
"evidence": {
"state": "UI-03-Measure-02.json",
"screenshot": "UI-03-Measure-02.png",
"screenshotSha256": "2d2b218a95751ae4141801f2ea926bd9e4149d87284c0a963be06412e520a098"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:21.972Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.306,
"evidence": {
"state": "UI-03-Measure-03.json",
"screenshot": "UI-03-Measure-03.png",
"screenshotSha256": "c4469156ed5860e0979c1863dc72d55d67f460ce6fbe48f4db119d095b76d263"
}
}
],
"startedAt": "2026-09-15T11:48:21.343Z",
"seconds": 1.088,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Mesh",
"result": {
"id": "UI-03-Mesh",
"title": "Mesh 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:22.432Z",
"actual": {
"route": "/workbench.html?module=Mesh",
"isolated": true
},
"seconds": 0.192,
"evidence": {
"state": "UI-03-Mesh-01.json",
"screenshot": "UI-03-Mesh-01.png",
"screenshotSha256": "ca1d3042c53a0be9c91a965fbe8e05d8bf9268aca69d55d97c14bef9252be2d0"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:22.825Z",
"actual": {
"selected": "Mesh"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Mesh-02.json",
"screenshot": "UI-03-Mesh-02.png",
"screenshotSha256": "1f89e4369bd3b37f102c4c7fc8456e67cbef03edd16ab68f1b4301c2b1de5f67"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:22.985Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.152,
"evidence": {
"state": "UI-03-Mesh-03.json",
"screenshot": "UI-03-Mesh-03.png",
"screenshotSha256": "326b0dcfdf02300a5f0ef26f30cdcdb7d7d0d51ea44bd90bdb91100b3c1f62b6"
}
}
],
"startedAt": "2026-09-15T11:48:22.432Z",
"seconds": 0.857,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "MeshPart",
"result": {
"id": "UI-03-MeshPart",
"title": "MeshPart 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:23.290Z",
"actual": {
"route": "/workbench.html?module=MeshPart",
"isolated": true
},
"seconds": 0.192,
"evidence": {
"state": "UI-03-MeshPart-01.json",
"screenshot": "UI-03-MeshPart-01.png",
"screenshotSha256": "67bbc8d2e56dea2d7a281d8d4bf6edf3fae1c9b1e5d1f5bdc2f7ae9a310c192d"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:23.664Z",
"actual": {
"selected": "MeshPart"
},
"seconds": 0.002,
"evidence": {
"state": "UI-03-MeshPart-02.json",
"screenshot": "UI-03-MeshPart-02.png",
"screenshotSha256": "9dba69388e39b596f4e702f070f00c5f5967e1ca12ffe031d3b326a08b7a5eba"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:23.823Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.303,
"evidence": {
"state": "UI-03-MeshPart-03.json",
"screenshot": "UI-03-MeshPart-03.png",
"screenshotSha256": "6a4e7605714b35ea76b6b6bb71f9c4d6dd213b1eb6bccbdf47c91f79628e6a50"
}
}
],
"startedAt": "2026-09-15T11:48:23.289Z",
"seconds": 0.988,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "OpenSCAD",
"result": {
"id": "UI-03-OpenSCAD",
"title": "OpenSCAD 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:24.278Z",
"actual": {
"route": "/workbench.html?module=OpenSCAD",
"isolated": true
},
"seconds": 0.201,
"evidence": {
"state": "UI-03-OpenSCAD-01.json",
"screenshot": "UI-03-OpenSCAD-01.png",
"screenshotSha256": "473a51dfd04d37b6dce5ded008f517eba256808b2dda52e5d8bb4e0b28a22877"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:24.700Z",
"actual": {
"selected": "OpenSCAD"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-OpenSCAD-02.json",
"screenshot": "UI-03-OpenSCAD-02.png",
"screenshotSha256": "6f28a4678e36e0260c12b45fdbc174f072f881237d4c62bd134b2491b057e303"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:24.893Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.305,
"evidence": {
"state": "UI-03-OpenSCAD-03.json",
"screenshot": "UI-03-OpenSCAD-03.png",
"screenshotSha256": "56f9991773bd0c0fb9f726793dd22c4803eec89e016e5dd8b6a7632d9654544f"
}
}
],
"startedAt": "2026-09-15T11:48:24.278Z",
"seconds": 1.081,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Part",
"result": {
"id": "UI-03-Part",
"title": "Part 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:25.360Z",
"actual": {
"route": "/workbench.html?module=Part",
"isolated": true
},
"seconds": 0.201,
"evidence": {
"state": "UI-03-Part-01.json",
"screenshot": "UI-03-Part-01.png",
"screenshotSha256": "ccfef7e738f350940c4740c4ccc0f08c5c217c80c1e44d524942cbf4971c2629"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:25.752Z",
"actual": {
"selected": "Part"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Part-02.json",
"screenshot": "UI-03-Part-02.png",
"screenshotSha256": "00341671633b8bda3d50c8c9ba6787d924ff71556bd22b1e514eb02dbf564d94"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:25.925Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.303,
"evidence": {
"state": "UI-03-Part-03.json",
"screenshot": "UI-03-Part-03.png",
"screenshotSha256": "80efb20f416c896070b0f7f4a0596f9eb6cebd7d0819836a15c887d43c3d72c0"
}
}
],
"startedAt": "2026-09-15T11:48:25.360Z",
"seconds": 1.034,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "PartDesign",
"result": {
"id": "UI-03-PartDesign",
"title": "PartDesign 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:26.395Z",
"actual": {
"route": "/workbench.html?module=PartDesign",
"isolated": true
},
"seconds": 0.19,
"evidence": {
"state": "UI-03-PartDesign-01.json",
"screenshot": "UI-03-PartDesign-01.png",
"screenshotSha256": "9892a5282fd5afa60a871de62b69c3f9565aa5b50a01dcdf9f35fd1aabcafbb3"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:26.889Z",
"actual": {
"selected": "PartDesign"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-PartDesign-02.json",
"screenshot": "UI-03-PartDesign-02.png",
"screenshotSha256": "041d237b22b8a85b5d2a1fe15aa34aeb34df031e6b9873a4cb6f497586054213"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:27.186Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-PartDesign-03.json",
"screenshot": "UI-03-PartDesign-03.png",
"screenshotSha256": "6659c4d1bb398767979c90be26e242e7fe5ea1d95e7cf7a4dfdc5621b0bd9b43"
}
}
],
"startedAt": "2026-09-15T11:48:26.395Z",
"seconds": 1.037,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Plot",
"result": {
"id": "UI-03-Plot",
"title": "Plot 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:27.434Z",
"actual": {
"route": "/workbench.html?module=Plot",
"isolated": true
},
"seconds": 0.193,
"evidence": {
"state": "UI-03-Plot-01.json",
"screenshot": "UI-03-Plot-01.png",
"screenshotSha256": "6755fc757d31d1fd3c9afa6597324431edac98165d58b7b68fb462b5fb8dcbd2"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:27.815Z",
"actual": {
"selected": "Plot"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Plot-02.json",
"screenshot": "UI-03-Plot-02.png",
"screenshotSha256": "972ef599513005ec9ccf4088c7dbcc56f3901da9a8c48ee0a32891ba7339e290"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:27.972Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.304,
"evidence": {
"state": "UI-03-Plot-03.json",
"screenshot": "UI-03-Plot-03.png",
"screenshotSha256": "6fb1d5ce1c1e52721e900f7780323e2fd4a8613d23097ff20b982f36000a48ac"
}
}
],
"startedAt": "2026-09-15T11:48:27.433Z",
"seconds": 0.983,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Points",
"result": {
"id": "UI-03-Points",
"title": "Points 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:28.417Z",
"actual": {
"route": "/workbench.html?module=Points",
"isolated": true
},
"seconds": 0.192,
"evidence": {
"state": "UI-03-Points-01.json",
"screenshot": "UI-03-Points-01.png",
"screenshotSha256": "6f4cd5bc69c90cdcc105172b494c3e9ca7d0d0bfed188d4d69875f03bf808c54"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:28.800Z",
"actual": {
"selected": "Points"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Points-02.json",
"screenshot": "UI-03-Points-02.png",
"screenshotSha256": "54c327755c31a897c5697a087b7c3013169a6bbea21bc17c361a90c7c1b138a3"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:28.955Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.304,
"evidence": {
"state": "UI-03-Points-03.json",
"screenshot": "UI-03-Points-03.png",
"screenshotSha256": "17d8c99669cd7bd6cf6f39e1485a7fedca20d31e2150efdbb5f7eab9f24c37fd"
}
}
],
"startedAt": "2026-09-15T11:48:28.417Z",
"seconds": 1.001,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "ReverseEngineering",
"result": {
"id": "UI-03-ReverseEngineering",
"title": "ReverseEngineering 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:29.420Z",
"actual": {
"route": "/workbench.html?module=ReverseEngineering",
"isolated": true
},
"seconds": 0.187,
"evidence": {
"state": "UI-03-ReverseEngineering-01.json",
"screenshot": "UI-03-ReverseEngineering-01.png",
"screenshotSha256": "a992fbc16e02fdb2f9fd47cc79ad35301f8e81902a22bf44e5533487a2feb572"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:29.811Z",
"actual": {
"selected": "ReverseEngineering"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-ReverseEngineering-02.json",
"screenshot": "UI-03-ReverseEngineering-02.png",
"screenshotSha256": "5b02ef20e29c4710f535e502d2dc538c26d23d556c301416d2f466d15d488950"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:29.978Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.152,
"evidence": {
"state": "UI-03-ReverseEngineering-03.json",
"screenshot": "UI-03-ReverseEngineering-03.png",
"screenshotSha256": "a45760157680485a236473cced7d4fa9a1f342552987af737f1750ef356c01ba"
}
}
],
"startedAt": "2026-09-15T11:48:29.419Z",
"seconds": 0.857,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Robot",
"result": {
"id": "UI-03-Robot",
"title": "Robot 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:30.278Z",
"actual": {
"route": "/workbench.html?module=Robot",
"isolated": true
},
"seconds": 0.207,
"evidence": {
"state": "UI-03-Robot-01.json",
"screenshot": "UI-03-Robot-01.png",
"screenshotSha256": "293323b29c8959f6a6996f4deef3951d449ad3cb04aeffe8440ae91538fb0f54"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:30.711Z",
"actual": {
"selected": "Robot"
},
"seconds": 0.002,
"evidence": {
"state": "UI-03-Robot-02.json",
"screenshot": "UI-03-Robot-02.png",
"screenshotSha256": "827a6af6b6368c5727683b924fc52aaf6d4a1a0beac71e23a8f0daf332b83191"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:30.916Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 4.689,
"evidence": {
"state": "UI-03-Robot-03.json",
"screenshot": "UI-03-Robot-03.png",
"screenshotSha256": "74956df7b48a83cbb0b774b1fa7ac127c558ce11b73c801ba6382e38edd1a6c2"
}
}
],
"startedAt": "2026-09-15T11:48:30.277Z",
"seconds": 5.496,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Sandbox",
"result": {
"id": "UI-03-Sandbox",
"title": "Sandbox 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:35.775Z",
"actual": {
"route": "/workbench.html?module=Sandbox",
"isolated": true
},
"seconds": 0.194,
"evidence": {
"state": "UI-03-Sandbox-01.json",
"screenshot": "UI-03-Sandbox-01.png",
"screenshotSha256": "4cea0e91f892eddade994201e60d62c9efba7a9ec1c3147889534ad6330c930d"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:36.183Z",
"actual": {
"selected": "Sandbox"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Sandbox-02.json",
"screenshot": "UI-03-Sandbox-02.png",
"screenshotSha256": "9258eae7491f8c9ed8bab47be9cce723872940b61b869ea680e2a09c6a29e508"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:36.358Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.152,
"evidence": {
"state": "UI-03-Sandbox-03.json",
"screenshot": "UI-03-Sandbox-03.png",
"screenshotSha256": "3734c389ba3f3285eff15f74cf24f47a23653cdeed7b6f96b3c9c75f0484ba91"
}
}
],
"startedAt": "2026-09-15T11:48:35.775Z",
"seconds": 0.884,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Show",
"result": {
"id": "UI-03-Show",
"title": "Show 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:36.660Z",
"actual": {
"route": "/workbench.html?module=Show",
"isolated": true
},
"seconds": 0.2,
"evidence": {
"state": "UI-03-Show-01.json",
"screenshot": "UI-03-Show-01.png",
"screenshotSha256": "c0e7fc80533c44d5b053a58b1c9a2a8b65c67eaf2648d687d694ed553188197f"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:37.069Z",
"actual": {
"selected": "Show"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Show-02.json",
"screenshot": "UI-03-Show-02.png",
"screenshotSha256": "00900228d06b84ae21915a2f964863b057eb4067b9ef1135ba4f1e45ab0d8972"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:37.246Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.313,
"evidence": {
"state": "UI-03-Show-03.json",
"screenshot": "UI-03-Show-03.png",
"screenshotSha256": "9a5c5b62fb2c1778c34f6c91ec3f29d3c653dd8b6a4177f1223bafebf6ada97d"
}
}
],
"startedAt": "2026-09-15T11:48:36.660Z",
"seconds": 1.124,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Sketcher",
"result": {
"id": "UI-03-Sketcher",
"title": "Sketcher 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:37.785Z",
"actual": {
"route": "/workbench.html?module=Sketcher",
"isolated": true
},
"seconds": 0.207,
"evidence": {
"state": "UI-03-Sketcher-01.json",
"screenshot": "UI-03-Sketcher-01.png",
"screenshotSha256": "28434755fc1e6ae0c35d3bbb867a28c12f95c9be70fbf628d5c788b159bbe79d"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:38.199Z",
"actual": {
"selected": "Sketcher"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Sketcher-02.json",
"screenshot": "UI-03-Sketcher-02.png",
"screenshotSha256": "7ba697faac42d6fd9fc53d2365c66f73f1ac65f5943c418078c8f1534cbe2a38"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:38.379Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.303,
"evidence": {
"state": "UI-03-Sketcher-03.json",
"screenshot": "UI-03-Sketcher-03.png",
"screenshotSha256": "d68b4e06948629a1e2c7b8fc353870daa4b81528c6e85e408549c76d4163827b"
}
}
],
"startedAt": "2026-09-15T11:48:37.784Z",
"seconds": 1.055,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Spreadsheet",
"result": {
"id": "UI-03-Spreadsheet",
"title": "Spreadsheet 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:38.841Z",
"actual": {
"route": "/workbench.html?module=Spreadsheet",
"isolated": true
},
"seconds": 0.197,
"evidence": {
"state": "UI-03-Spreadsheet-01.json",
"screenshot": "UI-03-Spreadsheet-01.png",
"screenshotSha256": "6983e52a0abc2aecf011e537123b3ab684a93851d41adaec63799397532b080f"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:39.252Z",
"actual": {
"selected": "Spreadsheet"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Spreadsheet-02.json",
"screenshot": "UI-03-Spreadsheet-02.png",
"screenshotSha256": "465eda4e0559daa10ee07388e16445a8095e9f84efbf6a9b247e8afc2361293f"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:39.435Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.153,
"evidence": {
"state": "UI-03-Spreadsheet-03.json",
"screenshot": "UI-03-Spreadsheet-03.png",
"screenshotSha256": "4468b337089e9e478be24cd282ec8891b3780045eb1e34a29fbf5f211608e5e7"
}
}
],
"startedAt": "2026-09-15T11:48:38.840Z",
"seconds": 0.904,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Start",
"result": {
"id": "UI-03-Start",
"title": "Start 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:39.747Z",
"actual": {
"route": "/workbench.html?module=Start",
"isolated": true
},
"seconds": 0.192,
"evidence": {
"state": "UI-03-Start-01.json",
"screenshot": "UI-03-Start-01.png",
"screenshotSha256": "ef5f35e7e7a73da56690aad17cd1d133a9972820bf3fd6e17681a7c452142947"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:40.140Z",
"actual": {
"selected": "Start"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Start-02.json",
"screenshot": "UI-03-Start-02.png",
"screenshotSha256": "ac0bfca510c11629f6aa0ecd3722af285be04c31f89ae1d0009af993af35901d"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:40.313Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.153,
"evidence": {
"state": "UI-03-Start-03.json",
"screenshot": "UI-03-Start-03.png",
"screenshotSha256": "eab7505f37545dc570a5faf9b68665a727411e2a54ef50eee0f8cfddaa3ceb5d"
}
}
],
"startedAt": "2026-09-15T11:48:39.746Z",
"seconds": 0.858,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Surface",
"result": {
"id": "UI-03-Surface",
"title": "Surface 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:40.606Z",
"actual": {
"route": "/workbench.html?module=Surface",
"isolated": true
},
"seconds": 0.195,
"evidence": {
"state": "UI-03-Surface-01.json",
"screenshot": "UI-03-Surface-01.png",
"screenshotSha256": "1bb9bcef5c95adcae1a92b9df20d596fa317ab3af486ce9a3171212e72a94683"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:41.006Z",
"actual": {
"selected": "Surface"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Surface-02.json",
"screenshot": "UI-03-Surface-02.png",
"screenshotSha256": "ef6959b8355600846b33240cd40a58630ea524260f39e3100cefc37fd1c57f2a"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:41.180Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.152,
"evidence": {
"state": "UI-03-Surface-03.json",
"screenshot": "UI-03-Surface-03.png",
"screenshotSha256": "d748772eb3d0cef624f0c0326ab43bf9c8535eaf69d1770e95191605ebbd83e1"
}
}
],
"startedAt": "2026-09-15T11:48:40.605Z",
"seconds": 0.87,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "TechDraw",
"result": {
"id": "UI-03-TechDraw",
"title": "TechDraw 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:41.479Z",
"actual": {
"route": "/workbench.html?module=TechDraw",
"isolated": true
},
"seconds": 0.189,
"evidence": {
"state": "UI-03-TechDraw-01.json",
"screenshot": "UI-03-TechDraw-01.png",
"screenshotSha256": "18d733c35fabc9786bff0b9f9198c1a4c966ee95f315ba76657e1caf382f57dc"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:41.873Z",
"actual": {
"selected": "TechDraw"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-TechDraw-02.json",
"screenshot": "UI-03-TechDraw-02.png",
"screenshotSha256": "b001ec9ec04502e63ac820da45718b40a52f1219524711ef0e3c0a04454990b7"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:42.046Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.152,
"evidence": {
"state": "UI-03-TechDraw-03.json",
"screenshot": "UI-03-TechDraw-03.png",
"screenshotSha256": "a7887f5685ae2a56441e2935c238cf75e7fc7635444045e5a2966b1b16ba0193"
}
}
],
"startedAt": "2026-09-15T11:48:41.478Z",
"seconds": 0.88,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "TemplatePyMod",
"result": {
"id": "UI-03-TemplatePyMod",
"title": "TemplatePyMod 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:42.360Z",
"actual": {
"route": "/workbench.html?module=TemplatePyMod",
"isolated": true
},
"seconds": 0.188,
"evidence": {
"state": "UI-03-TemplatePyMod-01.json",
"screenshot": "UI-03-TemplatePyMod-01.png",
"screenshotSha256": "00a9f4ad8d34eff5fdd5c9db8b859215e0910cd318175dfd327437f87d28aa6c"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:42.753Z",
"actual": {
"selected": "TemplatePyMod"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-TemplatePyMod-02.json",
"screenshot": "UI-03-TemplatePyMod-02.png",
"screenshotSha256": "40bb3db83d0f44a9679cfb619948ffa6b08f76758c0126368f53a5136d337216"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:42.920Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.154,
"evidence": {
"state": "UI-03-TemplatePyMod-03.json",
"screenshot": "UI-03-TemplatePyMod-03.png",
"screenshotSha256": "5926ba254bcfd9b1d8e3885181310f8913f390c35b6a03952c0fb30cf1014bfd"
}
}
],
"startedAt": "2026-09-15T11:48:42.359Z",
"seconds": 0.863,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Test",
"result": {
"id": "UI-03-Test",
"title": "Test 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:43.224Z",
"actual": {
"route": "/workbench.html?module=Test",
"isolated": true
},
"seconds": 0.209,
"evidence": {
"state": "UI-03-Test-01.json",
"screenshot": "UI-03-Test-01.png",
"screenshotSha256": "6cc36588d734d1796cb738d2fcc5b36ef9c1dccc91414727a48ffcc9d6bd6cd3"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:43.628Z",
"actual": {
"selected": "Test"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Test-02.json",
"screenshot": "UI-03-Test-02.png",
"screenshotSha256": "487357f59563cfc5ff3537b19f6a9d61e9dcc9cc4c8adf60e582fac026a990e4"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:43.785Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.153,
"evidence": {
"state": "UI-03-Test-03.json",
"screenshot": "UI-03-Test-03.png",
"screenshotSha256": "bb7217725b91ccb8413bbe2e5e9cb4169e483475d5c3c0e92f7b4bb14de7c1de"
}
}
],
"startedAt": "2026-09-15T11:48:43.223Z",
"seconds": 0.867,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Tux",
"result": {
"id": "UI-03-Tux",
"title": "Tux 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:44.093Z",
"actual": {
"route": "/workbench.html?module=Tux",
"isolated": true
},
"seconds": 0.197,
"evidence": {
"state": "UI-03-Tux-01.json",
"screenshot": "UI-03-Tux-01.png",
"screenshotSha256": "e2e07e03edf1c86290c8e2817fe59fd9ce341989ac43068d5cbbb0dbd152e99f"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:44.495Z",
"actual": {
"selected": "Tux"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Tux-02.json",
"screenshot": "UI-03-Tux-02.png",
"screenshotSha256": "10f334905582778009a165dc784ae83eed4fc5b11a448db9ff5ad5340b199c61"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:44.688Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.304,
"evidence": {
"state": "UI-03-Tux-03.json",
"screenshot": "UI-03-Tux-03.png",
"screenshotSha256": "99ea6821adb166626d2012607d956d3364843bb0d623cc7ab1906aecff7b4eca"
}
}
],
"startedAt": "2026-09-15T11:48:44.092Z",
"seconds": 1.042,
"run": "manual-2026-09-15T11-47-41-751Z"
}
},
{
"module": "Web",
"result": {
"id": "UI-03-Web",
"title": "Web 工作台入口",
"status": "passed",
"steps": [
{
"number": 1,
"name": "导航到模块实际工作台",
"expected": "实际工作台可挂载",
"status": "passed",
"startedAt": "2026-09-15T11:48:45.137Z",
"actual": {
"route": "/workbench.html?module=Web",
"isolated": true
},
"seconds": 0.19,
"evidence": {
"state": "UI-03-Web-01.json",
"screenshot": "UI-03-Web-01.png",
"screenshotSha256": "0b41d9531153dd60605d56a65d341e67b82a6c3624e28308b0164f4c6ad7bdcf"
}
},
{
"number": 2,
"name": "核对选中模块",
"expected": "不能用 HTTP 200 代替模块可操作",
"status": "passed",
"startedAt": "2026-09-15T11:48:45.534Z",
"actual": {
"selected": "Web"
},
"seconds": 0.001,
"evidence": {
"state": "UI-03-Web-02.json",
"screenshot": "UI-03-Web-02.png",
"screenshotSha256": "c3aeb2831d77cd7693e5b1898ae2054ef9673a1a4a788bf472a7bb53f0f65e59"
}
},
{
"number": 3,
"name": "窗口宿主初始化及启动错误",
"expected": "原生面板与工具栏状态已读取,无启动错误提示",
"status": "passed",
"startedAt": "2026-09-15T11:48:45.721Z",
"actual": {
"ready": "true",
"errors": []
},
"seconds": 0.152,
"evidence": {
"state": "UI-03-Web-03.json",
"screenshot": "UI-03-Web-03.png",
"screenshotSha256": "cf8c055e34012d162c39db9d1dd79082e62c6f0094f15296ac517b100f2d3919"
}
}
],
"startedAt": "2026-09-15T11:48:45.136Z",
"seconds": 0.884,
"run": "manual-2026-09-15T11-47-41-751Z"
}
}
]
}