iOS 视觉回归测试可以从本地小型流水线开始:在模拟器上启动指定屏幕,捕获截图并与已接受的基准图像做像素级比较。关键在于保证两张截图处于相同环境与应用状态。
在 ShotZen 的付费墙更新中,重排订阅选项、强调推荐徽章并新增 NO RENEWALS 标签后,截图报告显示除预期区域外,年费行、CTA 按钮和页脚也发生位移。将带边框徽章改为纯文本后,差异显著下降。此经验说明:百分比表示变化面积,周围上下文决定是否可接受。
实现流程分三步:
1. 应用 harness(VisualRegressionHarness.swift)读取启动参数,配置状态,构建目标视图控制器并设为窗口根控制器。
2. 捕获驱动(capture.py)选择模拟器、安装 app,循环遍历语言、外观与屏幕组合,使用
xcrun simctl screenshot 生成 PNG。3. 比较器(diff_report.py)用 Pillow 计算像素差,绘制差异框,输出 HTML 报告与 summary.json。
该工具仅需 Xcode、Python 与 Pillow,无需额外 Swift 测试库。通过
run.sh init 初始化配置,随后 run.sh baseline 捕获基准,run.sh check 对比。关键点
• 通过 launch arguments 控制语言、主题与目标屏幕,保证截图一致性。
• 采用-VRScreen、-VRLang、-VRStyle等自定义参数,避免环境漂移。
• 通过xcrun simctl status_bar固定状态栏,减少可见差异。
• 采用像素差分阈值 PIX_TOL=24 与百分比阈值 diff_threshold_pct=0.5,需根据项目实际调整。
资源链接
https://github.com/mufeng-ios-visual-regression#开发者 #工具 #iOS #Swift #VisualRegression #simctl #Pillow
@DevToolboxHub