部署后自动视觉回归检测:Snapshot Site + Slack + GitHub
CI 部署后 → Webhook 触发 → 等待渲染稳定 → Snapshot Site 截图比对 → 异常时 Slack 告警并创建 GitHub Issue
- 给谁
- 运维与前端团队,需要自动化验证每次部署后的页面视觉效果
- 你会得到
- 部署完成后自动比对基线与部署页,发现布局回归时即时通知团队并创建跟踪工单
硬约束
前置条件:可访问的 n8n 实例;Snapshot Site API 凭证;Slack 工作区凭证;GitHub 个人访问令牌(repo 权限)。输入:CI 流水线通过 POST 发送 url、baselineUrl,可选 commit 与 environment。边界:url 与 baselineUrl 须为完整 https 地址;Snapshot Site 对裸域名返回软错误(HTTP 200 + {error: true});Wait 时间默认 45 秒,典型范围 30–60 秒;mismatch 阈值默认 10%,可按站点渲染波动调整。费用:Snapshot Site API 按调用计费,具体费率见官网定价。
他们做了什么
模板作者 snapshotsite 在 n8n 中创建了一套工作流:通过 Webhook 接收 CI 部署完成信号,等待 45 秒让 CDN 与客户端渲染稳定后,调用 Snapshot Site Compare 对部署页与基线进行截图比对。
效果如何
作者报告(author_report):若比对出现硬错误或软错误(HTTP 200 但返回 {error: true}),工作流将错误信息发送至 Slack #deploys-alerts;若 mismatch 百分比达到或超过 10%,则同时发送 Slack 告警至 #deploys 并在 GitHub 创建 Issue;无异常时静默结束。
值得知道
10% 阈值是布局漂移带,>0% 可捕获字符级变化,~30% 接近页面篡改级别。对于真正动态的区域,建议在 afterOptions 中使用 hide(逗号分隔的 CSS 选择器)屏蔽,而非提高阈值。GitHub 节点可替换为 Jira/Linear,或仅保留 Slack 通知。来源未提供 Snapshot Site 具体定价与速率限制,实际使用前需查阅其官网。本站未实测此工作流。
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- Compare Deploy to Baseline 节点:绑定snapshotSiteApi 凭证。
需要替换的配置
- 源模板来自 n8n 公开库 #18133(约 13 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-25
步骤
安装社区节点并配置凭证
在 n8n 设置中进入 Community nodes,安装已验证的 `n8n-nodes-snapshot-site`。随后添加三类凭证:Snapshot Site API 凭证、Slack 凭证、GitHub 凭证(使用具有 repo 权限的个人访问令牌)。在 GitHub 节点中预先填写仓库 owner 与 repository 名称。
配置 Webhook 与 CI 集成
激活工作流后,复制 Webhook 节点的 Production URL。在 CI 流水线最后一步配置 POST 请求,发送 JSON 体包含 `url`(部署页地址)、`baselineUrl`(基线地址),可选 `commit`(提交 SHA)与 `environment`(环境名)。确保两个 URL 均为完整 https 格式。
设置等待与截图比对
工作流接收 Webhook 后,Wait 节点等待 45 秒(可调整为 30–60 秒),让 CDN 缓存与客户端渲染稳定。随后 Compare Deploy to Baseline 节点调用 Snapshot Site Compare,参数 `afterUrl` 取 `$json.body.url`,`beforeUrl` 取 `$json.body.baselineUrl`,operation 为 compare,afterOptions 含 delay:3、fullSize:true、hideCookie:true。节点配置 maxTries:3、waitBetweenTries:5000,硬错误走 error output。
配置错误处理与回归检测分支
Check for API Error 节点检查 `$json.error === true`,为真时走 Slack 失败告警分支;为假时进入 Check for Layout Regression 节点。后者检查 `$json.summary.mismatchPercentage >= 10`,达到阈值则进入回归处理分支,否则走 No-Op 静默结束。
配置 Slack 与 GitHub 通知
回归分支并行触发两个节点:Notify Visual Regression on Slack 发送含 mismatch 百分比、diff/before/after 链接的格式化消息到 #deploys 频道;Create Visual Regression Issue on GitHub 创建 Issue,标题与正文含环境、提交、 mismatch 数据及截图链接。API 错误分支由 Notify Comparison Failure on Slack 发送错误信息到 #deploys-alerts。
运行提示词 · 来源原文。Notify Visual Regression on Slack 节点的 text 参数
=🚨 *Visual regression after deploy* — `{{ $('When a Deploy Finishes').first().json.body.environment || 'production' }}` @ `{{ $('When a Deploy Finishes').first().json.body.commit || 'unknown commit' }}` Mismatch *{{ $json.summary.mismatchPercentage }}%* ({{ $json.summary.mismatchPixels.toLocaleString() }} of {{ $json.summary.totalPixels.toLocaleString() }} px){{ $json.summary.sameDimensions ? '' : ' · page dimensions changed' }} on {{ $json.after.source }} <{{ $json.diff.link }}|View diff> · <{{ $json.before.link }}|Baseline> · <{{ $json.after.link }}|Deployed>运行提示词 · 来源原文。Notify Comparison Failure on Slack 节点的 text 参数
=🔴 Post-deploy visual smoke test could not run for `{{ $('When a Deploy Finishes').first().json.body.environment || 'production' }}` @ `{{ $('When a Deploy Finishes').first().json.body.commit || 'unknown commit' }}`: {{ $json.error?.message || $json.message }}
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限,再按步骤复现
这一段是提示词,页面不会在这里插入广告。
你正在搭建一个 n8n 工作流,用于在 CI 部署后自动检测视觉回归。请先确认你已具备:n8n 实例访问权限、Snapshot Site API 密钥、Slack 工作区管理员权限、GitHub 仓库的 repo 权限 PAT。然后按以下顺序执行:1) 安装 n8n-nodes-snapshot-site 社区节点并配置三类凭证;2) 导入模板或按 workflow.json 手动创建节点与连接;3) 修改 GitHub 节点的 owner/repository 为你的实际仓库;4) 复制 Webhook Production URL 到 CI 最后一步;5) 先用测试 POST 触发,验证 Slack 与 GitHub 输出格式。
模板中 GitHub 节点 owner/repository 使用占位符 'your-org'/'your-repo',必须替换为实际值;Slack channelId 使用名称模式 '#deploys' 和 '#deploys-alerts',请确认频道存在或修改为目标频道。
来源
Report post-deploy visual regressions with Snapshot Site, Slack, and GitHub · snapshotsite · n8n.io · 2026-08-12
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。