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 斷言與基線管理。