通过捕获和比较截图,对Web应用进行像素级视觉回归测试,并根据可配置的相似度阈值控制部署。
视觉 QA. 视觉回归测试网络应用的管道
功能概述
视觉 QA. 视觉回归测试网络应用的管道是一项面向实际任务的技能,主要用于您的应用程序的Capture基线截图, 用像素级的 diffing 和 ass/ fai 来比较新截图和基线。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
视觉 QA
面向 Web 应用的视觉回归测试流水线。捕获应用的基准截图,使用像素级差异比对新截图与基准图,并依据可配置的相似度阈值判定通过/失败。
适用场景
- 部署前视觉校验 — 将 UI 变更审批作为合并/部署的准入门禁
- 回归测试 — 在 CI 中捕获非预期的视觉变更
- UI 评审工作流 — 为设计/代码评审生成差异图像
- 跨浏览器/视口测试 — 验证响应式布局一致性
- 组件库 QA — 确保设计系统变更不会破坏下游消费者
快速开始
1. 捕获基准截图
# 捕获单个 URL python scripts/capture.py http://localhost:3000 --output .visual-qa/baselines # 捕获多个视口尺寸 python scripts/capture.py http://localhost:3000 --viewports desktop mobile tablet --output .visual-qa/baselines # 根据配置文件捕获多个页面 python scripts/capture.py --config .visual-qa.json --output .visual-qa/baselines
2. 与基准图比对
# 比对新截图 python scripts/diff.py --baseline .visual-qa/baselines --current .visual-qa/current --threshold 99
3. 一体化门禁命令
# 一键完成截图 + 差异比对 python scripts/gate.py --baseline .visual-qa/baselines --url http://localhost:3000 --threshold 99 # 启动本地开发服务器后执行 python scripts/gate.py --baseline .visual-qa/baselines --server "npm run dev" --port 3000 --threshold 99 # 使用配置文件 python scripts/gate.py --config .visual-qa.json
配置文件格式
在项目根目录创建 .visual-qa.json:
{
"urls": ["/", "/about", "/pricing"],
"baseUrl": "http://localhost:3000",
"viewports": ["desktop", "mobile"],
"threshold": 99,
"server": "npm run dev",
"port": 3000,
"baselineDir": ".visual-qa/baselines",
"ignore": [".visual-qa/diffs", ".visual-qa/current"]
}
脚本说明
所有脚本均支持 --help 参数以查看详细用法。
capture.py
使用 Playwright(无头 Chromium)捕获截图。
特性:
- 支持多种视口尺寸:桌面端(1280×800)、平板(768×1024)、移动端(375×812)
- 等待网络空闲(networkidle)后再截图
- 可选自动启动/停止本地服务器
- 支持自定义输出目录
- 生成描述性文件名:
{url-slug}_{viewport}.png
用法:
python scripts/capture.py--output [options] python scripts/capture.py --config --output
diff.py
使用 Pillow 进行像素级差异比对。
特性:
- 逐像素比对
- 生成差异图像,以红色/品红色叠加高亮显示变更区域
- 为每组图像对输出相似度百分比
- 依据阈值判定通过/失败(默认 99%)
- 输出包含通过/失败状态的汇总报告
- 将差异图像保存至指定输出目录
用法:
python scripts/diff.py --baseline--current --output --threshold
gate.py
一体化门禁脚本:单条命令完成截图 + 差异比对。
特性:
- 整合 capture 和 diff 流程
- 按需自动启动/停止本地服务器
- 返回标准退出码:0(通过)、1(失败)
- 输出人类可读的摘要信息
- 支持配置文件或命令行参数两种方式
用法:
python scripts/gate.py --baseline--url --threshold python scripts/gate.py --baseline --server --port --threshold python scripts/gate.py --config
工作流示例
初始基准图捕获
# 启动你的应用 npm run dev # 捕获桌面端和移动端基准图 python scripts/capture.py http://localhost:3000 --viewports desktop mobile --output .visual-qa/baselines
CI/CD 集成
# 在 CI 流水线构建完成后执行 python scripts/gate.py --baseline .visual-qa/baselines --server "npm start" --port 3000 --threshold 99 # 退出码 0 = 通过,1 = 失败 if [ $? -eq 0 ]; then echo "Visual QA passed ✓" else echo "Visual QA failed ✗" exit 1 fi
评审工作流
# 1. 开发者修改 UI # 2. 捕获新截图 python scripts/capture.py http://localhost:3000 --output .visual-qa/current # 3. 生成差异图像 python scripts/diff.py --baseline .visual-qa/baselines --current .visual-qa/current --output .visual-qa/diffs # 4. 在 .visual-qa/diffs/ 目录中审阅差异图像 # 5. 若变更是预期行为,则更新基准图: rm -rf .visual-qa/baselines mv .visual-qa/current .visual-qa/baselines
多页面测试
创建 .visual-qa.json:
{
"urls": ["/", "/products", "/about", "/contact"],
"baseUrl": "http://localhost:3000",
"viewports": ["desktop", "mobile"],
"threshold": 99,
"baselineDir": ".visual-qa/baselines"
}
# 捕获全部页面 python scripts/capture.py --config .visual-qa.json --output .visual-qa/baselines # 对全部页面执行门禁检查 python scripts/gate.py --config .visual-qa.json
依赖项
脚本依赖 Playwright 和 Pillow:
pip install playwright pillow python -m playwright install chromium
脚本会在运行时检查依赖,若缺失则自动打印安装提示。
相似度阈值
--threshold 参数控制相似度百分比(取值范围:0–100):
- 99%(默认)—— 严格模式,可捕获绝大多数视觉变更
- 95% —— 中等模式,允许细微渲染差异(如抗锯齿、字体渲染)
- 90% —— 宽松模式,允许多样化变化(适用于含动态内容的页面)
建议通过实验为你的应用确定合适阈值:从严格模式(99%)起步,若出现误报再逐步放宽。
忽略动态内容
对于含动态内容的页面(例如日期、用户专属数据):
使用 data 属性 在测试期间隐藏动态元素:
[data-test-hide] { visibility: hidden !important; }仅截取特定视口区域(未来增强功能)
为允许含动态内容的页面调低阈值
故障排查
“Command not found: python”
- 改用
python3替代python
“Playwright not installed”
- 执行:
pip install playwright && python -m playwright install chromium
“相似度低于阈值但图像看起来一致”
- 可能由字体渲染、抗锯齿或亚像素差异引起。可将阈值下调至 98–95%。
“服务器未能启动”
- 确认
--port参数与服务器实际监听端口一致 - 确保服务器启动命令正确(如
npm run dev、npm start等) - 在
gate.py中增加等待时间(默认为 5 秒)
“未找到图像文件”
- 确认基准图目录存在且包含 PNG 文件
- 确认当前截图已正确写入目标目录
- 确认文件名符合命名规范:
{url-slug}_{viewport}.png
使用建议
- 将基准图提交至 Git,确保团队共享同一参考基准
- 将
.visual-qa/diffs和.visual-qa/current加入.gitignore - 在 CI 中作为合并前必检项运行
- 在实施预期 UI 变更后及时更新基准图
- 使用多种视口尺寸,以发现响应式布局问题
- 显式捕获空状态/错误状态/加载状态页面,覆盖完整 UI 场景
与其他能力的集成
- ux-qa-gate — 将 visual-qa 纳入 UX QA 检查清单
- webapp-testing — 与 Playwright 功能性测试协同使用
- coding-agent — UI 构建子代理必须通过 visual-qa 才能完成任务
如需查看各脚本完整参数说明,请运行:
python scripts/capture.py --help python scripts/diff.py --help python scripts/gate.py --help
热门AI工具
相关专题
本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。
0
2026.11.12
本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。
0
2026.11.12
本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。
0
2026.11.12
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章