Add RTCP simulation QA updates
This commit is contained in:
195
web-rtcp-5axis-sim-plan/working1/05-acceptance-test-plan.md
Normal file
195
web-rtcp-5axis-sim-plan/working1/05-acceptance-test-plan.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# 05 修复验收测试计划
|
||||
|
||||
生成时间:2026-06-22
|
||||
|
||||
## 1. 验收目标
|
||||
|
||||
修复完成后,必须证明以下目标同时成立:
|
||||
|
||||
1. RTCP frame 自动进入 LinuxCNC kinematics WASM 边界。
|
||||
2. 3D 预览首屏和程序运行后均可见。
|
||||
3. HOME 后 JOG 坐标连续。
|
||||
4. 原已通过功能不回归。
|
||||
|
||||
## 2. 本地静态和 Node 测试
|
||||
|
||||
### 2.1 构建
|
||||
|
||||
```bash
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
```
|
||||
|
||||
预期:
|
||||
|
||||
```text
|
||||
exit code 0
|
||||
无 TypeScript/ES module 打包错误
|
||||
```
|
||||
|
||||
### 2.2 状态和 runtime smoke
|
||||
|
||||
按项目已有测试能力执行:
|
||||
|
||||
```bash
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_rtcp_store.mjs
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_five_axis_session.mjs
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_kinematics_runtime.mjs
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_task_hal_runtime.mjs
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_full_execution_boundary.mjs
|
||||
```
|
||||
|
||||
如某个测试依赖本地构建产物缺失,应先按项目原有构建流程补齐,不要跳过。
|
||||
|
||||
## 3. 浏览器自动化验收
|
||||
|
||||
### 3.1 D1 验收:首屏 kinematics 自动 ready
|
||||
|
||||
打开本地或部署页面后等待最多 8 秒,断言:
|
||||
|
||||
```js
|
||||
const state = window.webRtcp5AxisSimulation.getState();
|
||||
state.kinematicsRuntimeReadiness.loaded === true
|
||||
state.sourceMode === "source-derived-kinematics-wasm"
|
||||
state.frameSourceMode === "source-derived-kinematics-wasm"
|
||||
state.rtcpFrame.semanticBoundary === "linuxcnc_kinematics_wasm_c_abi"
|
||||
```
|
||||
|
||||
DOM 断言:
|
||||
|
||||
```js
|
||||
document.querySelector('[data-rtcp-diagnostic="boundary"]').textContent.includes("linuxcnc_kinematics_wasm_c_abi")
|
||||
document.querySelector('[data-rtcp-diagnostic="kinematics-ready"]').textContent.includes("ready")
|
||||
```
|
||||
|
||||
禁止状态:
|
||||
|
||||
```text
|
||||
fixture_frame_ui_plumbing_not_linuxcnc_kinematics_proof
|
||||
```
|
||||
|
||||
不得作为稳定态出现。
|
||||
|
||||
### 3.2 D2 验收:预览非空
|
||||
|
||||
断言 canvas dataset:
|
||||
|
||||
```js
|
||||
canvas.dataset.threeReady === "true"
|
||||
Number(canvas.dataset.threeSceneObjects) > 0
|
||||
canvas.dataset.threeRenderer === "webgl" || canvas.dataset.threeRenderer === "2d-fallback"
|
||||
```
|
||||
|
||||
像素断言:
|
||||
|
||||
```js
|
||||
const stats = readCanvasPixelStats(canvas)
|
||||
stats.nonBlackRatio > 0.02
|
||||
stats.averageLuminance > 5
|
||||
```
|
||||
|
||||
截图人工检查:
|
||||
|
||||
```text
|
||||
能看到工作台/坐标轴/刀具或 TCP 点/路径
|
||||
```
|
||||
|
||||
至少覆盖:
|
||||
|
||||
```text
|
||||
首屏
|
||||
加载 LinuxCNC vendored 程序后
|
||||
Run 后
|
||||
Open 本地 G-code 后
|
||||
Audit 后
|
||||
```
|
||||
|
||||
### 3.3 D3 验收:HOME/JOG 坐标连续
|
||||
|
||||
自动化步骤:
|
||||
|
||||
```js
|
||||
click POWER
|
||||
click MANUAL
|
||||
click HOME
|
||||
const home = state.axisPose
|
||||
click X+
|
||||
assert state.axisPose.x === home.x + state.machine.jogIncrement
|
||||
assert state.axisPose.y === home.y
|
||||
assert state.axisPose.z === home.z
|
||||
click Y-
|
||||
assert state.axisPose.y === home.y - state.machine.jogIncrement
|
||||
assert state.axisPose.x === home.x + state.machine.jogIncrement
|
||||
```
|
||||
|
||||
允许浮点误差:
|
||||
|
||||
```text
|
||||
abs(actual - expected) <= 0.001
|
||||
```
|
||||
|
||||
人工检查:
|
||||
|
||||
```text
|
||||
DRO 中 X/Y/Z 数字连续变化,没有跳到 0/1 局部原点。
|
||||
```
|
||||
|
||||
## 4. 全功能回归清单
|
||||
|
||||
修复完成后,至少回归以下功能:
|
||||
|
||||
| 功能 | 预期 |
|
||||
| --- | --- |
|
||||
| 主界面九大区域 | 全部存在 |
|
||||
| POWER on/off | taskState 正确 |
|
||||
| E-STOP/RESET | 急停和复位正确 |
|
||||
| AUTO/MANUAL/JOG/MDI | 模式切换正确 |
|
||||
| HOME | allHomed=true,DRO 到 HOME pose |
|
||||
| JOG X+/X-/Y+/Y- | DRO 连续变化 |
|
||||
| MDI M428 | RTCP on,tcp-xyzac |
|
||||
| MDI M429 | RTCP off,identity |
|
||||
| MDI M430 | userk |
|
||||
| TCP/IDENTITY 侧栏按钮 | RTCP 状态正确 |
|
||||
| Rapid/Feed/Spindle override | 数值可调 |
|
||||
| Flood/Mist | 状态可切换 |
|
||||
| View X/Y/Z/Fit/Clear/Full | preview state 正确,画面仍可见 |
|
||||
| Profile xyzac/xyzbc 切换 | INI 与 runtime 重新 ready |
|
||||
| Stage LinuxCNC sources | staged files/gcode 数量正常 |
|
||||
| Load vendored G-code | programSource 正确,G-code 行显示 |
|
||||
| Run/Pause/Resume/Step/Stop/Reload | runState 和 activeLine 正确 |
|
||||
| Open local G-code | programSource=operator-file |
|
||||
| Save/Restore Session | OPFS 保存恢复正确 |
|
||||
| Audit Full Boundary | 审计入口可执行,结果可诊断 |
|
||||
|
||||
## 5. QA 报告复跑
|
||||
|
||||
修复后建议复用或更新:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/run-site-test.mjs
|
||||
```
|
||||
|
||||
重点更新:
|
||||
|
||||
1. 首屏等待稳定后,不再把 D1 作为 WARN,而是强制 PASS/FAIL。
|
||||
2. canvas 检查加入像素统计。
|
||||
3. HOME/JOG 检查使用稳定态并验证连续坐标。
|
||||
4. 重新生成 Word 报告,文件名建议:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-site-test-report-2026-06-22-after-working1-fix.docx
|
||||
```
|
||||
|
||||
## 6. 验收通过定义
|
||||
|
||||
```text
|
||||
P0: D1 PASS
|
||||
P0: D2 PASS
|
||||
P1: D3 PASS
|
||||
全功能回归无新增 FAIL
|
||||
console error = 0
|
||||
page error = 0
|
||||
request failure = 0
|
||||
```
|
||||
|
||||
如果 headless WebGL 不稳定,必须证明 2D fallback 可见且自动化 pixel 检查通过。
|
||||
|
||||
Reference in New Issue
Block a user