Files
STM32F4-Base/simulator/tests
wandering1 172b3f4a20 fix(sim): UI 回归改为自洽运行——修 netcfg_save 假失败
现象:check_content_pages.py 只有 netcfg_save 一页 FAIL(保存行值列
显示 ERR 而非 OK),其余 10 页像素与两处往返池水位全过。

真因不是代码回归:模拟器按**当前工作目录**读写 sim_config.ini,而
--cfgtest 的 E-01 场景 2 会伪造一份 4000 B 纯注释"雷"文件、并断言
"拒写后原文件不动"(size == 4000)——连正常通过路径也不删除它。
实测仓库根那份是 2026-10-11 08:37 留下的。之后每次运行都会加载它
→ 外科式保存要在 4000 B 注释后补写受管段 → 输出必超
CFG_FILE_MAX_LEN → 引擎按设计拒写 → 保存行显示 ERR,与"工厂默认
态"的黄金参考对不上。引擎行为是对的,错在自检留雷 + 回归不自洽。

修三处:
- simulator/main.c:run_cfgtest 拆成 scenarios + 外壳,无论成败一律
  cfg_store_remove 配置路径与临时路径,让配置回到"无文件 = 工厂默认"
- check_menu_rows.py / check_content_pages.py:以空临时目录当工作
  目录跑 lvgl_sim(cwd=tmp),调用目录里的残留档不再影响结果
- check_content_pages.py:作废"删 sim_netcfg.bin 残留"的旧兼容清理
  (旧档迁移 2026-10-10 已删),改为只提示、不删别人的档

验证:--cfgtest PASS 且跑完不再留下 sim_config.ini;
check_menu_rows.py PASS(8 状态 + 池基线 5,368 B);
check_content_pages.py "PASS: 11 内容页 + 往返池水位全部通过",
往返 5,448 B。**未刷任何黄金参考**——参考本来就是对的。顺带删掉
本地两份 4000 B 残留(仓库根与 build/Debug,均 gitignore 产物)。

未跑 @build:本次只改 simulator/ 侧代码,固件工程无涉及;模拟器
CMake 构建 0 错 0 警,cppcheck 钩子覆盖 simulator/main.c。

文档:UI_自动化测试流程 §五 加排查行 + 变更记录;simulator/README
§3.7 说明删除保证与原因;lvgl-simulator skill 同步;订正审查报告
R-9 那条把该差异误归给 cfg_file 改动的表述。
2026-10-15 10:05:37 +08:00
..
2026-09-10 11:36:33 +08:00

simulator/tests/ — UI 模拟器无头回归测试

PC 端无头(headless)UI 像素回归测试:在模拟器中渲染各页面,与黄金参考图比对, 检测 UI 改动是否引入像素级回归。属于 ui-verify skill 五步门禁的一部分。

文件一览

文件 作用
check_menu_rows.py 菜单像素回归:渲染菜单行 → 与黄金参考比对
check_content_pages.py 内容页回归:各内容页渲染比对
check_remo_sink.py 推流(RemoDispBus)回归:接收端渲染比对
regen_ref_png.py 重建黄金参考:UI 有意变更后,重新生成基准图
ref/ 黄金参考图(基准 PNG)

使用方式

# 跑回归(按 ui-verify skill 流程)
& '.venv\Scripts\python.exe' simulator/tests/check_menu_rows.py
& '.venv\Scripts\python.exe' simulator/tests/check_content_pages.py

# UI 有意变更、确认无误后重建基准
& '.venv\Scripts\python.exe' simulator/tests/regen_ref_png.py

⚠️ 注意

  • 重建黄金参考前必须确认变更是有意的——否则会把 bug 固化成"基准"
  • UI 改动一律走 ui-verify skill 五步门禁(regression 是其中一步)
  • 依赖模拟器已构建(simulator/build_sim.bat)

相关文档

  • docs/UI设计/UI_自动化测试流程.md — ui-verify 五步门禁
  • docs/UI设计/LVGL模拟器部署与使用说明.md