ABP + Verify(快照) 驱动的 PDF/Excel 导出回归 🚀
📚 目录
- ABP + Verify(快照) 驱动的 PDF/Excel 导出回归 🚀
-
- 0) TL;DR ✨
- 1) 背景与目标 🎯
- 2) 架构与职责(解耦渲染器) 🧩
- 3) “确定性”前置条件(去伪差异) 🔒
- 4) PDF 回归策略(以 QuestPDF 为例) 📄
-
- 4.1 文本/结构层(精准、低噪声) 🔤
- 4.2 像素层(视觉基线) 🖼️
- 5) Excel 回归策略(EPPlus) 📊
- 6) Verify 约定(强基线) 🧱
- 7) 代码(最小可运行骨架) 🧪
-
- 7.1 解决方案结构
- 7.2 Verify 全局初始化
- 7.3 跨平台时区与字体(确定性)
- 7.4 QuestPDF 文档(在文档类中固定元数据) ✅
- 7.5 EPPlus 渲染(EPPlus 8 授权)
- 7.6 PDF:文本 + 像素 双路快照
- 7.7 Excel:结构化 JSON 快照
- 7.8 二维码清晰度阈值(ZXing · SkiaSharp 绑定) 🧪🔍
- 8) CI/CD 与容器基线 ⚙️
- 9) 失败目录(Catalog)与快速诊断 🧭
- 10) 与 ABP 测试系统集成 🧰
- 11) 产出物清单(开箱即用) 📦
- 12) 风险与回滚 🛡️
0) TL;DR ✨
-
将导出回归拆为两条通路:
- 文本/结构层:用 PdfPig 提取 PDF 文本/坐标生成 JSON 快照;
- 像素层:ImageMagick 将 PDF 每页栅格化为 PNG 做阈值化对比。
-
启用 Strict JSON、按 runtime 隔离快照,CI 中 禁 GUI diff;失败产出
.received.*
,审阅通过晋级.verified.*
。 -
EPPlus 8 必须显式设置 License;Excel 以结构快照为主,必要时加视觉抽样。
-
Magick.NET 读取 PDF 需要 Ghostscript(Linux CI 尤其要装)。
1) 背景与目标 🎯
导出常见问题:字体回退、行高/分页漂移、二维码清晰度下降、Excel 样式/公式摇摆、跨机结果不一致。
目标:用 确定性渲染 + 规范化快照 + 阈值化对比,让改动看得见、量得出、可回滚(.received
↔ .verified
)。
2) 架构与职责(解耦渲染器) 🧩
- Exporter:产出中立 DTO,不绑定库。
- Renderer:仅负责 PDF/Excel 渲染。
- Snapshot Harness:统一转 JSON/PNG 并交给 Verify 断言与基线管理。