1157 lines
40 KiB
JSON
1157 lines
40 KiB
JSON
{
|
||
"generatedAt": "2026-06-22T22:09:28.057Z",
|
||
"targetUrl": "http://127.0.0.1:45757/web-rtcp-5axis-sim-plan/app/index.html",
|
||
"projectPath": "/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/index.html",
|
||
"chromePath": "/usr/bin/google-chrome",
|
||
"screenshots": {
|
||
"01-home-toolpath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/toolpath-preview-cases/01-home-toolpath.png",
|
||
"02-operator-demo-toolpath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/toolpath-preview-cases/02-operator-demo-toolpath.png",
|
||
"03-arc-demo-toolpath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/toolpath-preview-cases/03-arc-demo-toolpath.png",
|
||
"04-clear-preview-reference": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/toolpath-preview-cases/04-clear-preview-reference.png",
|
||
"05-vendored-impeller-toolpath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/toolpath-preview-cases/05-vendored-impeller-toolpath.png",
|
||
"09-g20-g21-mixed-units-preview": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/toolpath-preview-cases/09-g20-g21-mixed-units-preview.png",
|
||
"06-running-rtcp-toolpath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/toolpath-preview-cases/06-running-rtcp-toolpath.png"
|
||
},
|
||
"cases": [
|
||
{
|
||
"name": "01-home-toolpath",
|
||
"summary": "默认首屏预览:机床参考模型、TCP 球、刀轴线、fixture 路径和执行轨迹可见",
|
||
"status": "PASS",
|
||
"checks": [
|
||
{
|
||
"name": "canvas ready",
|
||
"pass": true,
|
||
"detail": "threeReady=true"
|
||
},
|
||
{
|
||
"name": "WebGL renderer",
|
||
"pass": true,
|
||
"detail": "renderer=webgl"
|
||
},
|
||
{
|
||
"name": "机床参考模型",
|
||
"pass": true,
|
||
"detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference"
|
||
},
|
||
{
|
||
"name": "TCP 球标记",
|
||
"pass": true,
|
||
"detail": "tcp=sphere, marker=true"
|
||
},
|
||
{
|
||
"name": "刀轴线",
|
||
"pass": true,
|
||
"detail": "toolAxisMarker=line"
|
||
},
|
||
{
|
||
"name": "场景对象数量",
|
||
"pass": true,
|
||
"detail": "sceneObjects=20"
|
||
},
|
||
{
|
||
"name": "无 G-code 语义生成",
|
||
"pass": true,
|
||
"detail": "semanticGuard=ok"
|
||
},
|
||
{
|
||
"name": "刀路预览点",
|
||
"pass": true,
|
||
"detail": "pathPoints=2"
|
||
},
|
||
{
|
||
"name": "执行轨迹点",
|
||
"pass": true,
|
||
"detail": "executed=1"
|
||
}
|
||
],
|
||
"pixelStats": {
|
||
"width": 803,
|
||
"height": 874,
|
||
"averageLuminance": 68.18,
|
||
"nonBlackRatio": 0.8681
|
||
},
|
||
"dataset": {
|
||
"fiveAxisCanvas": "true",
|
||
"engine": "three.js r183",
|
||
"threeReady": "true",
|
||
"threeRevision": "183",
|
||
"threePathPoints": "2",
|
||
"threeExecutedPathPoints": "1",
|
||
"threeSceneObjects": "20",
|
||
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
|
||
"threeSceneUnits": "m",
|
||
"threeLinearUnits": "mm",
|
||
"threeLinearUnitScaleToMeters": "0.001",
|
||
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
|
||
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
|
||
"threeRtcpState": "on",
|
||
"threeSelectedView": "iso",
|
||
"threeFrameApi": "web-rtcp-5axis-motion-frame",
|
||
"threeRenderer": "webgl",
|
||
"threeSceneMode": "program-preview-and-tool-execution",
|
||
"threePreviewScope": "machine-reference-and-toolpath",
|
||
"threeMachineReferenceModel": "webgl-five-axis-reference",
|
||
"threeCameraControls": "orbit-pan-zoom",
|
||
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
|
||
"threeToolExecutionMarker": "true",
|
||
"threeTcpMarker": "sphere",
|
||
"threeToolAxisMarker": "line",
|
||
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
|
||
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
|
||
"threePathFitBounds": "ok",
|
||
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
|
||
"threeCurrentSegmentHighlight": "ok",
|
||
"threeRapidFeedVisualDistinction": "ok",
|
||
"threeNoGcodeSemanticsGeneration": "ok",
|
||
"threeRapidPathPoints": "2",
|
||
"threeFeedPathPoints": "0",
|
||
"threeArcPathPoints": "0",
|
||
"threeCurrentSegmentPoints": "2",
|
||
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
|
||
},
|
||
"state": {
|
||
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
|
||
"activeLine": 1,
|
||
"programSource": "linuxcnc-vendored-5axis-gcode",
|
||
"programExecutionSourceMode": "linuxcnc-interpreter-wasm",
|
||
"programExecutionSummary": {
|
||
"ready": true,
|
||
"programLineCount": 1868,
|
||
"canonicalEventCount": 29,
|
||
"motionEventCount": 2,
|
||
"motionTypes": [
|
||
"STRAIGHT_TRAVERSE"
|
||
],
|
||
"finalAxes": {
|
||
"x": 0,
|
||
"y": 0,
|
||
"z": 5,
|
||
"a": 0,
|
||
"b": 0,
|
||
"c": 0,
|
||
"u": 0,
|
||
"v": 0,
|
||
"w": 0
|
||
},
|
||
"switchkinsEventCount": 2,
|
||
"switchkinsCodes": [
|
||
"M428",
|
||
"M429"
|
||
],
|
||
"switchkinsRemapBoundary": "linuxcnc_switchkins_remap_mcode_preserved_web_runtime_applied",
|
||
"remapRuntimeReady": false,
|
||
"plannerRuntimeReady": true,
|
||
"plannerSemanticBoundary": "linuxcnc_tp_queue_runtime_timing_from_canonical_motion",
|
||
"machineFileExecutionReady": false,
|
||
"fullLinuxCncProgramExecutionReady": false
|
||
},
|
||
"runState": "idle",
|
||
"rtcpState": "on",
|
||
"kinsType": "tcp-xyzac",
|
||
"programExecutionMotionIndex": 0,
|
||
"programExecutionSampleIndex": 0,
|
||
"programRuntimeFeedbackSource": "linuxcnc-task-motion-hal-wasm"
|
||
}
|
||
},
|
||
{
|
||
"name": "02-operator-demo-toolpath",
|
||
"summary": "本地矩形 G-code:验证 LinuxCNC interpreter canonical motion、rapid/feed 区分、执行轨迹和 TCP 标记",
|
||
"status": "PASS",
|
||
"checks": [
|
||
{
|
||
"name": "canvas ready",
|
||
"pass": true,
|
||
"detail": "threeReady=true"
|
||
},
|
||
{
|
||
"name": "WebGL renderer",
|
||
"pass": true,
|
||
"detail": "renderer=webgl"
|
||
},
|
||
{
|
||
"name": "机床参考模型",
|
||
"pass": true,
|
||
"detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference"
|
||
},
|
||
{
|
||
"name": "TCP 球标记",
|
||
"pass": true,
|
||
"detail": "tcp=sphere, marker=true"
|
||
},
|
||
{
|
||
"name": "刀轴线",
|
||
"pass": true,
|
||
"detail": "toolAxisMarker=line"
|
||
},
|
||
{
|
||
"name": "场景对象数量",
|
||
"pass": true,
|
||
"detail": "sceneObjects=20"
|
||
},
|
||
{
|
||
"name": "无 G-code 语义生成",
|
||
"pass": true,
|
||
"detail": "semanticGuard=ok"
|
||
},
|
||
{
|
||
"name": "刀路预览点",
|
||
"pass": true,
|
||
"detail": "pathPoints=6"
|
||
},
|
||
{
|
||
"name": "执行轨迹点",
|
||
"pass": true,
|
||
"detail": "executed=1"
|
||
},
|
||
{
|
||
"name": "rapid/feed 区分",
|
||
"pass": true,
|
||
"detail": "rapid=2, feed=4"
|
||
}
|
||
],
|
||
"pixelStats": {
|
||
"width": 803,
|
||
"height": 874,
|
||
"averageLuminance": 66.03,
|
||
"nonBlackRatio": 0.854
|
||
},
|
||
"dataset": {
|
||
"fiveAxisCanvas": "true",
|
||
"engine": "three.js r183",
|
||
"threeReady": "true",
|
||
"threeRevision": "183",
|
||
"threePathPoints": "6",
|
||
"threeExecutedPathPoints": "1",
|
||
"threeSceneObjects": "20",
|
||
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
|
||
"threeSceneUnits": "m",
|
||
"threeLinearUnits": "mm",
|
||
"threeLinearUnitScaleToMeters": "0.001",
|
||
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
|
||
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
|
||
"threeRtcpState": "on",
|
||
"threeSelectedView": "iso",
|
||
"threeFrameApi": "web-rtcp-5axis-motion-frame",
|
||
"threeRenderer": "webgl",
|
||
"threeSceneMode": "program-preview-and-tool-execution",
|
||
"threePreviewScope": "machine-reference-and-toolpath",
|
||
"threeMachineReferenceModel": "webgl-five-axis-reference",
|
||
"threeCameraControls": "orbit-pan-zoom",
|
||
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
|
||
"threeToolExecutionMarker": "true",
|
||
"threeTcpMarker": "sphere",
|
||
"threeToolAxisMarker": "line",
|
||
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
|
||
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
|
||
"threePathFitBounds": "ok",
|
||
"threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.005},\"maxSpan\":0.01}",
|
||
"threeCurrentSegmentHighlight": "ok",
|
||
"threeRapidFeedVisualDistinction": "ok",
|
||
"threeNoGcodeSemanticsGeneration": "ok",
|
||
"threeRapidPathPoints": "2",
|
||
"threeFeedPathPoints": "4",
|
||
"threeArcPathPoints": "0",
|
||
"threeCurrentSegmentPoints": "2",
|
||
"threeCurrentSegmentType": "STRAIGHT_FEED"
|
||
},
|
||
"state": {
|
||
"activeProgram": "operator-demo.ngc",
|
||
"activeLine": 2,
|
||
"programSource": "operator-file",
|
||
"programExecutionSourceMode": "linuxcnc-interpreter-wasm",
|
||
"programExecutionSummary": {
|
||
"ready": true,
|
||
"programLineCount": 9,
|
||
"canonicalEventCount": 37,
|
||
"motionEventCount": 6,
|
||
"motionTypes": [
|
||
"STRAIGHT_TRAVERSE",
|
||
"STRAIGHT_FEED"
|
||
],
|
||
"finalAxes": {
|
||
"x": 0,
|
||
"y": 0,
|
||
"z": 5,
|
||
"a": 0,
|
||
"b": 0,
|
||
"c": 0,
|
||
"u": 0,
|
||
"v": 0,
|
||
"w": 0
|
||
},
|
||
"switchkinsEventCount": 0,
|
||
"switchkinsCodes": [],
|
||
"switchkinsRemapBoundary": null,
|
||
"remapRuntimeReady": false,
|
||
"plannerRuntimeReady": true,
|
||
"plannerSemanticBoundary": "linuxcnc_tp_queue_runtime_timing_from_canonical_motion",
|
||
"machineFileExecutionReady": false,
|
||
"fullLinuxCncProgramExecutionReady": false
|
||
},
|
||
"runState": "idle",
|
||
"rtcpState": "on",
|
||
"kinsType": "tcp-xyzac",
|
||
"programExecutionMotionIndex": 0,
|
||
"programExecutionSampleIndex": 0,
|
||
"programRuntimeFeedbackSource": "linuxcnc-tp-runtime-sample"
|
||
}
|
||
},
|
||
{
|
||
"name": "03-arc-demo-toolpath",
|
||
"summary": "圆弧 G-code:验证 ARC_FEED 进入弧线轨迹图层并保留执行轨迹",
|
||
"status": "PASS",
|
||
"checks": [
|
||
{
|
||
"name": "canvas ready",
|
||
"pass": true,
|
||
"detail": "threeReady=true"
|
||
},
|
||
{
|
||
"name": "WebGL renderer",
|
||
"pass": true,
|
||
"detail": "renderer=webgl"
|
||
},
|
||
{
|
||
"name": "机床参考模型",
|
||
"pass": true,
|
||
"detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference"
|
||
},
|
||
{
|
||
"name": "TCP 球标记",
|
||
"pass": true,
|
||
"detail": "tcp=sphere, marker=true"
|
||
},
|
||
{
|
||
"name": "刀轴线",
|
||
"pass": true,
|
||
"detail": "toolAxisMarker=line"
|
||
},
|
||
{
|
||
"name": "场景对象数量",
|
||
"pass": true,
|
||
"detail": "sceneObjects=20"
|
||
},
|
||
{
|
||
"name": "无 G-code 语义生成",
|
||
"pass": true,
|
||
"detail": "semanticGuard=ok"
|
||
},
|
||
{
|
||
"name": "刀路预览点",
|
||
"pass": true,
|
||
"detail": "pathPoints=2"
|
||
},
|
||
{
|
||
"name": "执行轨迹点",
|
||
"pass": true,
|
||
"detail": "executed=1"
|
||
},
|
||
{
|
||
"name": "圆弧轨迹点",
|
||
"pass": true,
|
||
"detail": "arc=1"
|
||
}
|
||
],
|
||
"pixelStats": {
|
||
"width": 803,
|
||
"height": 874,
|
||
"averageLuminance": 67.56,
|
||
"nonBlackRatio": 0.8687
|
||
},
|
||
"dataset": {
|
||
"fiveAxisCanvas": "true",
|
||
"engine": "three.js r183",
|
||
"threeReady": "true",
|
||
"threeRevision": "183",
|
||
"threePathPoints": "2",
|
||
"threeExecutedPathPoints": "1",
|
||
"threeSceneObjects": "20",
|
||
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
|
||
"threeSceneUnits": "m",
|
||
"threeLinearUnits": "mm",
|
||
"threeLinearUnitScaleToMeters": "0.001",
|
||
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
|
||
"threeTcpPose": "{\"x\":1,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
|
||
"threeRtcpState": "on",
|
||
"threeSelectedView": "iso",
|
||
"threeFrameApi": "web-rtcp-5axis-motion-frame",
|
||
"threeRenderer": "webgl",
|
||
"threeSceneMode": "program-preview-and-tool-execution",
|
||
"threePreviewScope": "machine-reference-and-toolpath",
|
||
"threeMachineReferenceModel": "webgl-five-axis-reference",
|
||
"threeCameraControls": "orbit-pan-zoom",
|
||
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
|
||
"threeToolExecutionMarker": "true",
|
||
"threeTcpMarker": "sphere",
|
||
"threeToolAxisMarker": "line",
|
||
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
|
||
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
|
||
"threePathFitBounds": "ok",
|
||
"threePathBoundsMeters": "{\"center\":{\"x\":0.001,\"y\":0.001,\"z\":0},\"size\":{\"x\":0.001,\"y\":0.001,\"z\":0},\"maxSpan\":0.001}",
|
||
"threeCurrentSegmentHighlight": "ok",
|
||
"threeRapidFeedVisualDistinction": "ok",
|
||
"threeNoGcodeSemanticsGeneration": "ok",
|
||
"threeRapidPathPoints": "1",
|
||
"threeFeedPathPoints": "0",
|
||
"threeArcPathPoints": "1",
|
||
"threeCurrentSegmentPoints": "1",
|
||
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
|
||
},
|
||
"state": {
|
||
"activeProgram": "operator-arc-demo.ngc",
|
||
"activeLine": 2,
|
||
"programSource": "operator-file",
|
||
"programExecutionSourceMode": "linuxcnc-interpreter-wasm",
|
||
"programExecutionSummary": {
|
||
"ready": true,
|
||
"programLineCount": 4,
|
||
"canonicalEventCount": 19,
|
||
"motionEventCount": 2,
|
||
"motionTypes": [
|
||
"STRAIGHT_TRAVERSE",
|
||
"ARC_FEED"
|
||
],
|
||
"finalAxes": {
|
||
"x": 0,
|
||
"y": 1,
|
||
"z": 0,
|
||
"a": 0,
|
||
"b": 0,
|
||
"c": 0,
|
||
"u": 0,
|
||
"v": 0,
|
||
"w": 0,
|
||
"arc": {
|
||
"plane": 170,
|
||
"firstAxis": "x",
|
||
"secondAxis": "y",
|
||
"thirdAxis": "z",
|
||
"firstEnd": 0,
|
||
"secondEnd": 1,
|
||
"centerFirst": 0,
|
||
"centerSecond": 0,
|
||
"rotation": -1,
|
||
"axisEndPoint": 0
|
||
}
|
||
},
|
||
"switchkinsEventCount": 0,
|
||
"switchkinsCodes": [],
|
||
"switchkinsRemapBoundary": null,
|
||
"remapRuntimeReady": false,
|
||
"plannerRuntimeReady": true,
|
||
"plannerSemanticBoundary": "linuxcnc_tp_queue_runtime_timing_from_canonical_motion",
|
||
"machineFileExecutionReady": false,
|
||
"fullLinuxCncProgramExecutionReady": false
|
||
},
|
||
"runState": "idle",
|
||
"rtcpState": "on",
|
||
"kinsType": "tcp-xyzac",
|
||
"programExecutionMotionIndex": 0,
|
||
"programExecutionSampleIndex": 0,
|
||
"programRuntimeFeedbackSource": "linuxcnc-tp-runtime-sample"
|
||
}
|
||
},
|
||
{
|
||
"name": "04-clear-preview-reference",
|
||
"summary": "清空刀路后:路径点为 0,但机床参考模型、TCP 球和刀轴线仍应可见",
|
||
"status": "PASS",
|
||
"checks": [
|
||
{
|
||
"name": "canvas ready",
|
||
"pass": true,
|
||
"detail": "threeReady=true"
|
||
},
|
||
{
|
||
"name": "WebGL renderer",
|
||
"pass": true,
|
||
"detail": "renderer=webgl"
|
||
},
|
||
{
|
||
"name": "机床参考模型",
|
||
"pass": true,
|
||
"detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference"
|
||
},
|
||
{
|
||
"name": "TCP 球标记",
|
||
"pass": true,
|
||
"detail": "tcp=sphere, marker=true"
|
||
},
|
||
{
|
||
"name": "刀轴线",
|
||
"pass": true,
|
||
"detail": "toolAxisMarker=line"
|
||
},
|
||
{
|
||
"name": "场景对象数量",
|
||
"pass": true,
|
||
"detail": "sceneObjects=20"
|
||
},
|
||
{
|
||
"name": "无 G-code 语义生成",
|
||
"pass": true,
|
||
"detail": "semanticGuard=ok"
|
||
},
|
||
{
|
||
"name": "路径点期望",
|
||
"pass": true,
|
||
"detail": "pathPoints=0, expected=0"
|
||
}
|
||
],
|
||
"pixelStats": {
|
||
"width": 803,
|
||
"height": 874,
|
||
"averageLuminance": 67.78,
|
||
"nonBlackRatio": 0.8701
|
||
},
|
||
"dataset": {
|
||
"fiveAxisCanvas": "true",
|
||
"engine": "three.js r183",
|
||
"threeReady": "true",
|
||
"threeRevision": "183",
|
||
"threePathPoints": "0",
|
||
"threeExecutedPathPoints": "0",
|
||
"threeSceneObjects": "20",
|
||
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
|
||
"threeSceneUnits": "m",
|
||
"threeLinearUnits": "mm",
|
||
"threeLinearUnitScaleToMeters": "0.001",
|
||
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
|
||
"threeTcpPose": "{\"x\":1,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
|
||
"threeRtcpState": "on",
|
||
"threeSelectedView": "iso",
|
||
"threeFrameApi": "web-rtcp-5axis-motion-frame",
|
||
"threeRenderer": "webgl",
|
||
"threeSceneMode": "program-preview-and-tool-execution",
|
||
"threePreviewScope": "machine-reference-and-toolpath",
|
||
"threeMachineReferenceModel": "webgl-five-axis-reference",
|
||
"threeCameraControls": "orbit-pan-zoom",
|
||
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
|
||
"threeToolExecutionMarker": "true",
|
||
"threeTcpMarker": "sphere",
|
||
"threeToolAxisMarker": "line",
|
||
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
|
||
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
|
||
"threePathFitBounds": "ok",
|
||
"threePathBoundsMeters": "null",
|
||
"threeCurrentSegmentHighlight": "pending",
|
||
"threeRapidFeedVisualDistinction": "pending",
|
||
"threeNoGcodeSemanticsGeneration": "ok",
|
||
"threeRapidPathPoints": "0",
|
||
"threeFeedPathPoints": "0",
|
||
"threeArcPathPoints": "0",
|
||
"threeCurrentSegmentPoints": "0",
|
||
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
|
||
},
|
||
"state": {
|
||
"activeProgram": "operator-arc-demo.ngc",
|
||
"activeLine": 2,
|
||
"programSource": "operator-file",
|
||
"programExecutionSourceMode": "linuxcnc-interpreter-wasm",
|
||
"programExecutionSummary": {
|
||
"ready": true,
|
||
"programLineCount": 4,
|
||
"canonicalEventCount": 19,
|
||
"motionEventCount": 2,
|
||
"motionTypes": [
|
||
"STRAIGHT_TRAVERSE",
|
||
"ARC_FEED"
|
||
],
|
||
"finalAxes": {
|
||
"x": 0,
|
||
"y": 1,
|
||
"z": 0,
|
||
"a": 0,
|
||
"b": 0,
|
||
"c": 0,
|
||
"u": 0,
|
||
"v": 0,
|
||
"w": 0,
|
||
"arc": {
|
||
"plane": 170,
|
||
"firstAxis": "x",
|
||
"secondAxis": "y",
|
||
"thirdAxis": "z",
|
||
"firstEnd": 0,
|
||
"secondEnd": 1,
|
||
"centerFirst": 0,
|
||
"centerSecond": 0,
|
||
"rotation": -1,
|
||
"axisEndPoint": 0
|
||
}
|
||
},
|
||
"switchkinsEventCount": 0,
|
||
"switchkinsCodes": [],
|
||
"switchkinsRemapBoundary": null,
|
||
"remapRuntimeReady": false,
|
||
"plannerRuntimeReady": true,
|
||
"plannerSemanticBoundary": "linuxcnc_tp_queue_runtime_timing_from_canonical_motion",
|
||
"machineFileExecutionReady": false,
|
||
"fullLinuxCncProgramExecutionReady": false
|
||
},
|
||
"runState": "idle",
|
||
"rtcpState": "on",
|
||
"kinsType": "tcp-xyzac",
|
||
"programExecutionMotionIndex": 0,
|
||
"programExecutionSampleIndex": 0,
|
||
"programRuntimeFeedbackSource": "linuxcnc-tp-runtime-sample"
|
||
}
|
||
},
|
||
{
|
||
"name": "05-vendored-impeller-toolpath",
|
||
"summary": "LinuxCNC vendored 五轴 impeller 程序:验证长路径、switchkins/RTCP 状态、rapid/feed 图层和 TCP 执行轨迹",
|
||
"status": "PASS",
|
||
"checks": [
|
||
{
|
||
"name": "canvas ready",
|
||
"pass": true,
|
||
"detail": "threeReady=true"
|
||
},
|
||
{
|
||
"name": "WebGL renderer",
|
||
"pass": true,
|
||
"detail": "renderer=webgl"
|
||
},
|
||
{
|
||
"name": "机床参考模型",
|
||
"pass": true,
|
||
"detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference"
|
||
},
|
||
{
|
||
"name": "TCP 球标记",
|
||
"pass": true,
|
||
"detail": "tcp=sphere, marker=true"
|
||
},
|
||
{
|
||
"name": "刀轴线",
|
||
"pass": true,
|
||
"detail": "toolAxisMarker=line"
|
||
},
|
||
{
|
||
"name": "场景对象数量",
|
||
"pass": true,
|
||
"detail": "sceneObjects=20"
|
||
},
|
||
{
|
||
"name": "无 G-code 语义生成",
|
||
"pass": true,
|
||
"detail": "semanticGuard=ok"
|
||
},
|
||
{
|
||
"name": "刀路预览点",
|
||
"pass": true,
|
||
"detail": "pathPoints=1498"
|
||
},
|
||
{
|
||
"name": "执行轨迹点",
|
||
"pass": true,
|
||
"detail": "executed=1"
|
||
},
|
||
{
|
||
"name": "rapid/feed 区分",
|
||
"pass": true,
|
||
"detail": "rapid=186, feed=1436"
|
||
},
|
||
{
|
||
"name": "RTCP 状态",
|
||
"pass": true,
|
||
"detail": "rtcp=on"
|
||
}
|
||
],
|
||
"pixelStats": {
|
||
"width": 803,
|
||
"height": 874,
|
||
"averageLuminance": 65.18,
|
||
"nonBlackRatio": 0.8173
|
||
},
|
||
"dataset": {
|
||
"fiveAxisCanvas": "true",
|
||
"engine": "three.js r183",
|
||
"threeReady": "true",
|
||
"threeRevision": "183",
|
||
"threePathPoints": "1498",
|
||
"threeExecutedPathPoints": "1",
|
||
"threeSceneObjects": "20",
|
||
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
|
||
"threeSceneUnits": "m",
|
||
"threeLinearUnits": "mm",
|
||
"threeLinearUnitScaleToMeters": "0.001",
|
||
"threeToolAxis": "{\"x\":0.558,\"y\":0.769,\"z\":0.312}",
|
||
"threeTcpPose": "{\"x\":36.474,\"y\":-22.486,\"z\":-13.749,\"a\":-71.841,\"c\":-35.93}",
|
||
"threeRtcpState": "on",
|
||
"threeSelectedView": "iso",
|
||
"threeFrameApi": "web-rtcp-5axis-motion-frame",
|
||
"threeRenderer": "webgl",
|
||
"threeSceneMode": "program-preview-and-tool-execution",
|
||
"threePreviewScope": "machine-reference-and-toolpath",
|
||
"threeMachineReferenceModel": "webgl-five-axis-reference",
|
||
"threeCameraControls": "orbit-pan-zoom",
|
||
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
|
||
"threeToolExecutionMarker": "true",
|
||
"threeTcpMarker": "sphere",
|
||
"threeToolAxisMarker": "line",
|
||
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
|
||
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
|
||
"threePathFitBounds": "ok",
|
||
"threePathBoundsMeters": "{\"center\":{\"x\":-0.001,\"y\":0,\"z\":0.019},\"size\":{\"x\":0.088,\"y\":0.089,\"z\":0.043},\"maxSpan\":0.089211}",
|
||
"threeCurrentSegmentHighlight": "ok",
|
||
"threeRapidFeedVisualDistinction": "ok",
|
||
"threeNoGcodeSemanticsGeneration": "ok",
|
||
"threeRapidPathPoints": "186",
|
||
"threeFeedPathPoints": "1436",
|
||
"threeArcPathPoints": "0",
|
||
"threeCurrentSegmentPoints": "1",
|
||
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
|
||
},
|
||
"state": {
|
||
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc",
|
||
"activeLine": 8,
|
||
"programSource": "linuxcnc-vendored-5axis-gcode",
|
||
"programExecutionSourceMode": "linuxcnc-interpreter-wasm",
|
||
"programExecutionSummary": {
|
||
"ready": true,
|
||
"programLineCount": 4507,
|
||
"canonicalEventCount": 22313,
|
||
"motionEventCount": 4492,
|
||
"motionTypes": [
|
||
"STRAIGHT_TRAVERSE",
|
||
"STRAIGHT_FEED"
|
||
],
|
||
"finalAxes": {
|
||
"x": 0,
|
||
"y": 0,
|
||
"z": 40,
|
||
"a": 0,
|
||
"b": 0,
|
||
"c": 0,
|
||
"u": 0,
|
||
"v": 0,
|
||
"w": 0
|
||
},
|
||
"switchkinsEventCount": 2,
|
||
"switchkinsCodes": [
|
||
"M428",
|
||
"M429"
|
||
],
|
||
"switchkinsRemapBoundary": "linuxcnc_switchkins_remap_mcode_preserved_web_runtime_applied",
|
||
"remapRuntimeReady": false,
|
||
"plannerRuntimeReady": true,
|
||
"plannerSemanticBoundary": "linuxcnc_tp_queue_runtime_timing_from_canonical_motion",
|
||
"machineFileExecutionReady": false,
|
||
"fullLinuxCncProgramExecutionReady": false
|
||
},
|
||
"runState": "idle",
|
||
"rtcpState": "on",
|
||
"kinsType": "tcp-xyzac",
|
||
"programExecutionMotionIndex": 0,
|
||
"programExecutionSampleIndex": 0,
|
||
"programRuntimeFeedbackSource": "linuxcnc-tp-runtime-sample"
|
||
}
|
||
},
|
||
{
|
||
"name": "08-meter-scene-desktop-mobile",
|
||
"summary": "浏览器米尺度 Three.js 证据:desktop/mobile canvas 非空、路径 bounds 为米、预览稳定居中",
|
||
"status": "PASS",
|
||
"screenshotDir": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/meter-scene-evidence",
|
||
"output": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/meter-scene-evidence.json",
|
||
"sampleCount": 2
|
||
},
|
||
{
|
||
"name": "09-g20-g21-mixed-units-preview",
|
||
"summary": "G20/G21 混合单位程序:验证 canonical motion 保留 inch/mm,Three.js 统一按米绘制",
|
||
"status": "PASS",
|
||
"checks": [
|
||
{
|
||
"name": "canvas ready",
|
||
"pass": true,
|
||
"detail": "threeReady=true"
|
||
},
|
||
{
|
||
"name": "WebGL renderer",
|
||
"pass": true,
|
||
"detail": "renderer=webgl"
|
||
},
|
||
{
|
||
"name": "机床参考模型",
|
||
"pass": true,
|
||
"detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference"
|
||
},
|
||
{
|
||
"name": "TCP 球标记",
|
||
"pass": true,
|
||
"detail": "tcp=sphere, marker=true"
|
||
},
|
||
{
|
||
"name": "刀轴线",
|
||
"pass": true,
|
||
"detail": "toolAxisMarker=line"
|
||
},
|
||
{
|
||
"name": "场景对象数量",
|
||
"pass": true,
|
||
"detail": "sceneObjects=20"
|
||
},
|
||
{
|
||
"name": "无 G-code 语义生成",
|
||
"pass": true,
|
||
"detail": "semanticGuard=ok"
|
||
},
|
||
{
|
||
"name": "刀路预览点",
|
||
"pass": true,
|
||
"detail": "pathPoints=2"
|
||
},
|
||
{
|
||
"name": "执行轨迹点",
|
||
"pass": true,
|
||
"detail": "executed=1"
|
||
},
|
||
{
|
||
"name": "G20/G21 motion units",
|
||
"pass": true,
|
||
"detail": "units=inch,mm"
|
||
},
|
||
{
|
||
"name": "scene units are meters",
|
||
"pass": true,
|
||
"detail": "sceneUnits=m"
|
||
},
|
||
{
|
||
"name": "mixed unit path visible",
|
||
"pass": true,
|
||
"detail": "pathPoints=2"
|
||
},
|
||
{
|
||
"name": "1 inch equals 25.4 mm in scene",
|
||
"pass": true,
|
||
"detail": "xMeters=0.0254,0.0254"
|
||
},
|
||
{
|
||
"name": "no unit fallback in canonical motion",
|
||
"pass": true,
|
||
"detail": "source=linuxcnc-interpreter-wasm"
|
||
}
|
||
],
|
||
"pixelStats": {
|
||
"width": 803,
|
||
"height": 874,
|
||
"averageLuminance": 64.71,
|
||
"nonBlackRatio": 0.849
|
||
},
|
||
"dataset": {
|
||
"fiveAxisCanvas": "true",
|
||
"engine": "three.js r183",
|
||
"threeReady": "true",
|
||
"threeRevision": "183",
|
||
"threePathPoints": "2",
|
||
"threeExecutedPathPoints": "1",
|
||
"threeSceneObjects": "20",
|
||
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
|
||
"threeSceneUnits": "m",
|
||
"threeLinearUnits": "mm",
|
||
"threeLinearUnitScaleToMeters": "0.001",
|
||
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
|
||
"threeTcpPose": "{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"c\":0}",
|
||
"threeRtcpState": "on",
|
||
"threeSelectedView": "iso",
|
||
"threeFrameApi": "web-rtcp-5axis-motion-frame",
|
||
"threeRenderer": "webgl",
|
||
"threeSceneMode": "program-preview-and-tool-execution",
|
||
"threePreviewScope": "machine-reference-and-toolpath",
|
||
"threeMachineReferenceModel": "webgl-five-axis-reference",
|
||
"threeCameraControls": "orbit-pan-zoom",
|
||
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
|
||
"threeToolExecutionMarker": "true",
|
||
"threeTcpMarker": "sphere",
|
||
"threeToolAxisMarker": "line",
|
||
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
|
||
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
|
||
"threePathFitBounds": "ok",
|
||
"threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":0.013,\"z\":0},\"size\":{\"x\":0.025,\"y\":0.025,\"z\":0},\"maxSpan\":0.0254}",
|
||
"threeCurrentSegmentHighlight": "ok",
|
||
"threeRapidFeedVisualDistinction": "ok",
|
||
"threeNoGcodeSemanticsGeneration": "ok",
|
||
"threeRapidPathPoints": "0",
|
||
"threeFeedPathPoints": "2",
|
||
"threeArcPathPoints": "0",
|
||
"threeCurrentSegmentPoints": "1",
|
||
"threeCurrentSegmentType": "STRAIGHT_FEED"
|
||
},
|
||
"state": {
|
||
"activeProgram": "operator-g20-g21-mixed-units.ngc",
|
||
"activeLine": 2,
|
||
"programSource": "operator-file",
|
||
"programExecutionSourceMode": "linuxcnc-interpreter-wasm",
|
||
"programExecutionSummary": {
|
||
"ready": true,
|
||
"programLineCount": 5,
|
||
"canonicalEventCount": 22,
|
||
"motionEventCount": 2,
|
||
"motionTypes": [
|
||
"STRAIGHT_FEED"
|
||
],
|
||
"finalAxes": {
|
||
"x": 25.4,
|
||
"y": 25.4,
|
||
"z": 0,
|
||
"a": 0,
|
||
"b": 0,
|
||
"c": 0,
|
||
"u": 0,
|
||
"v": 0,
|
||
"w": 0
|
||
},
|
||
"switchkinsEventCount": 0,
|
||
"switchkinsCodes": [],
|
||
"switchkinsRemapBoundary": null,
|
||
"remapRuntimeReady": false,
|
||
"plannerRuntimeReady": true,
|
||
"plannerSemanticBoundary": "linuxcnc_tp_queue_runtime_timing_from_canonical_motion",
|
||
"machineFileExecutionReady": false,
|
||
"fullLinuxCncProgramExecutionReady": false
|
||
},
|
||
"runState": "idle",
|
||
"rtcpState": "on",
|
||
"kinsType": "tcp-xyzac",
|
||
"programExecutionMotionIndex": 0,
|
||
"programExecutionSampleIndex": 0,
|
||
"programRuntimeFeedbackSource": "linuxcnc-tp-runtime-sample"
|
||
}
|
||
},
|
||
{
|
||
"name": "06-running-rtcp-toolpath",
|
||
"summary": "G-code 运行态:验证 task/HAL runtime feedback 驱动执行轨迹、当前段高亮、TCP 球和刀轴线跟随",
|
||
"status": "PASS",
|
||
"checks": [
|
||
{
|
||
"name": "canvas ready",
|
||
"pass": true,
|
||
"detail": "threeReady=true"
|
||
},
|
||
{
|
||
"name": "WebGL renderer",
|
||
"pass": true,
|
||
"detail": "renderer=webgl"
|
||
},
|
||
{
|
||
"name": "机床参考模型",
|
||
"pass": true,
|
||
"detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference"
|
||
},
|
||
{
|
||
"name": "TCP 球标记",
|
||
"pass": true,
|
||
"detail": "tcp=sphere, marker=true"
|
||
},
|
||
{
|
||
"name": "刀轴线",
|
||
"pass": true,
|
||
"detail": "toolAxisMarker=line"
|
||
},
|
||
{
|
||
"name": "场景对象数量",
|
||
"pass": true,
|
||
"detail": "sceneObjects=20"
|
||
},
|
||
{
|
||
"name": "无 G-code 语义生成",
|
||
"pass": true,
|
||
"detail": "semanticGuard=ok"
|
||
},
|
||
{
|
||
"name": "刀路预览点",
|
||
"pass": true,
|
||
"detail": "pathPoints=1498"
|
||
},
|
||
{
|
||
"name": "执行轨迹点",
|
||
"pass": true,
|
||
"detail": "executed=1"
|
||
},
|
||
{
|
||
"name": "rapid/feed 区分",
|
||
"pass": true,
|
||
"detail": "rapid=186, feed=1436"
|
||
},
|
||
{
|
||
"name": "RTCP 状态",
|
||
"pass": true,
|
||
"detail": "rtcp=on"
|
||
}
|
||
],
|
||
"pixelStats": {
|
||
"width": 803,
|
||
"height": 874,
|
||
"averageLuminance": 65.86,
|
||
"nonBlackRatio": 0.8173
|
||
},
|
||
"dataset": {
|
||
"fiveAxisCanvas": "true",
|
||
"engine": "three.js r183",
|
||
"threeReady": "true",
|
||
"threeRevision": "183",
|
||
"threePathPoints": "1498",
|
||
"threeExecutedPathPoints": "1",
|
||
"threeSceneObjects": "20",
|
||
"threeToolhead": "{\"x\":-0.023,\"y\":-0.033,\"z\":0.001}",
|
||
"threeSceneUnits": "m",
|
||
"threeLinearUnits": "mm",
|
||
"threeLinearUnitScaleToMeters": "0.001",
|
||
"threeToolAxis": "{\"x\":0.621,\"y\":0.503,\"z\":0.601}",
|
||
"threeTcpPose": "{\"x\":-75.066,\"y\":-75.473,\"z\":-49.344,\"a\":-53.043,\"c\":-50.969}",
|
||
"threeRtcpState": "on",
|
||
"threeSelectedView": "iso",
|
||
"threeFrameApi": "web-rtcp-5axis-motion-frame",
|
||
"threeRenderer": "webgl",
|
||
"threeSceneMode": "program-preview-and-tool-execution",
|
||
"threePreviewScope": "machine-reference-and-toolpath",
|
||
"threeMachineReferenceModel": "webgl-five-axis-reference",
|
||
"threeCameraControls": "orbit-pan-zoom",
|
||
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
|
||
"threeToolExecutionMarker": "true",
|
||
"threeTcpMarker": "sphere",
|
||
"threeToolAxisMarker": "line",
|
||
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
|
||
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
|
||
"threePathFitBounds": "ok",
|
||
"threePathBoundsMeters": "{\"center\":{\"x\":-0.001,\"y\":0,\"z\":0.019},\"size\":{\"x\":0.088,\"y\":0.089,\"z\":0.043},\"maxSpan\":0.089211}",
|
||
"threeCurrentSegmentHighlight": "ok",
|
||
"threeRapidFeedVisualDistinction": "ok",
|
||
"threeNoGcodeSemanticsGeneration": "ok",
|
||
"threeRapidPathPoints": "186",
|
||
"threeFeedPathPoints": "1436",
|
||
"threeArcPathPoints": "0",
|
||
"threeCurrentSegmentPoints": "1",
|
||
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
|
||
},
|
||
"state": {
|
||
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc",
|
||
"activeLine": 65,
|
||
"programSource": "linuxcnc-vendored-5axis-gcode",
|
||
"programExecutionSourceMode": "linuxcnc-interpreter-wasm",
|
||
"programExecutionSummary": {
|
||
"ready": true,
|
||
"programLineCount": 4507,
|
||
"canonicalEventCount": 22313,
|
||
"motionEventCount": 4492,
|
||
"motionTypes": [
|
||
"STRAIGHT_TRAVERSE",
|
||
"STRAIGHT_FEED"
|
||
],
|
||
"finalAxes": {
|
||
"x": 0,
|
||
"y": 0,
|
||
"z": 40,
|
||
"a": 0,
|
||
"b": 0,
|
||
"c": 0,
|
||
"u": 0,
|
||
"v": 0,
|
||
"w": 0
|
||
},
|
||
"switchkinsEventCount": 2,
|
||
"switchkinsCodes": [
|
||
"M428",
|
||
"M429"
|
||
],
|
||
"switchkinsRemapBoundary": "linuxcnc_switchkins_remap_mcode_preserved_web_runtime_applied",
|
||
"remapRuntimeReady": false,
|
||
"plannerRuntimeReady": true,
|
||
"plannerSemanticBoundary": "linuxcnc_tp_queue_runtime_timing_from_canonical_motion",
|
||
"machineFileExecutionReady": false,
|
||
"fullLinuxCncProgramExecutionReady": false
|
||
},
|
||
"runState": "running",
|
||
"rtcpState": "on",
|
||
"kinsType": "tcp-xyzac",
|
||
"programExecutionMotionIndex": 0,
|
||
"programExecutionSampleIndex": 0,
|
||
"programRuntimeFeedbackSource": "linuxcnc-task-motion-hal-wasm"
|
||
}
|
||
},
|
||
{
|
||
"name": "07-run-preconditions-and-feedback",
|
||
"summary": "浏览器 RUN 证据:INI/profile/kinematics/task-HAL 同一上下文,taskHalStatusLoop 持续推进,UI 消费 task/HAL/motion feedback",
|
||
"status": "PASS",
|
||
"checks": [
|
||
{
|
||
"name": "INI ready",
|
||
"pass": true,
|
||
"detail": "iniReady=true,true,true,true,true"
|
||
},
|
||
{
|
||
"name": "selected LinuxCNC G-code",
|
||
"pass": true,
|
||
"detail": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc"
|
||
},
|
||
{
|
||
"name": "task/HAL session opened selected G-code",
|
||
"pass": true,
|
||
"detail": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/xyzac_switchkins_test_1.ngc"
|
||
},
|
||
{
|
||
"name": "taskHalStatusLoop 新 RUN sequence",
|
||
"pass": true,
|
||
"detail": "baselineSequence=1, sequences=2,2,2,2,2"
|
||
},
|
||
{
|
||
"name": "taskHalStatusLoop 本次 RUN tickCount",
|
||
"pass": true,
|
||
"detail": "ticks=4,4,4,4,4"
|
||
},
|
||
{
|
||
"name": "programRuntimeFeedbackHistory 本次 RUN 采样",
|
||
"pass": true,
|
||
"detail": "history=5,5,5,5,5"
|
||
},
|
||
{
|
||
"name": "feedback sourceMode 来自 task/HAL",
|
||
"pass": true,
|
||
"detail": "sourceModes=linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm"
|
||
},
|
||
{
|
||
"name": "无 fixture-line-playback feedback",
|
||
"pass": true,
|
||
"detail": "sourceModes=linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm"
|
||
},
|
||
{
|
||
"name": "semantic boundary",
|
||
"pass": true,
|
||
"detail": "linuxcnc_task_motion_hal_wasm_simulation_runtime,linuxcnc_task_motion_hal_wasm_simulation_runtime,linuxcnc_task_motion_hal_wasm_simulation_runtime,linuxcnc_task_motion_hal_wasm_simulation_runtime,linuxcnc_task_motion_hal_wasm_simulation_runtime"
|
||
},
|
||
{
|
||
"name": "activeLine 等于 UI 高亮行",
|
||
"pass": true,
|
||
"detail": "active=29/29,29/29,29/29,29/29,29/29"
|
||
},
|
||
{
|
||
"name": "DRO 等于 runtime feedback axisPose",
|
||
"pass": true,
|
||
"detail": "droMatchesFeedback=true for all samples"
|
||
},
|
||
{
|
||
"name": "RTCP canvas 与 state 一致",
|
||
"pass": true,
|
||
"detail": "off/off,off/off,off/off,off/off,off/off"
|
||
},
|
||
{
|
||
"name": "runtime cycle 可见",
|
||
"pass": true,
|
||
"detail": "33/330,33/330,33/330,33/330,33/330"
|
||
},
|
||
{
|
||
"name": "canvas 执行轨迹",
|
||
"pass": true,
|
||
"detail": "true/1/ok,true/1/ok,true/1/ok,true/1/ok,true/1/ok"
|
||
}
|
||
],
|
||
"screenshotDir": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/run-preconditions-feedback",
|
||
"output": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/run-preconditions-feedback.json",
|
||
"sampleCount": 5
|
||
}
|
||
],
|
||
"consoleErrors": [
|
||
"Failed to load resource: the server responded with a status of 404 (Not Found)",
|
||
"Failed to load resource: the server responded with a status of 404 (Not Found)"
|
||
]
|
||
}
|