From 8f99da85ac9c35a7388d552df312d09ed30092ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9D=91=BE=F0=9D=92=96=F0=9D=92=99=F0=9D=92=89?= Date: Thu, 14 Nov 2024 15:47:22 +0800 Subject: [PATCH] chore: Improve visual regression report (#51633) --- .../visual-regression-diff-approver.yml | 8 +++- scripts/visual-regression/build.ts | 46 +++++++++++++++---- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/.github/workflows/visual-regression-diff-approver.yml b/.github/workflows/visual-regression-diff-approver.yml index 8638a38cfe..5b0fbb8f7a 100644 --- a/.github/workflows/visual-regression-diff-approver.yml +++ b/.github/workflows/visual-regression-diff-approver.yml @@ -58,7 +58,13 @@ jobs: if (comment.body.includes('VISUAL_DIFF_FAILED')) { hasDiffFailed = true; } - if (comment.body.includes('- [x] Visual diff is acceptable')) { + + // https://regex101.com/r/kLjudz/1 + const RE = /(?<=\>\s\[!IMPORTANT\].*?- \[ \])/s; + if ( + comment.body.includes('- [x] Visual diff is acceptable') && + comment.body.match(RE) == null /** 检查 IMPORTANT 是否存在未勾选的 */ + ) { hasMemberApprove = true; } } diff --git a/scripts/visual-regression/build.ts b/scripts/visual-regression/build.ts index 36ea68989c..4f8436a180 100644 --- a/scripts/visual-regression/build.ts +++ b/scripts/visual-regression/build.ts @@ -12,6 +12,7 @@ import pixelmatch from 'pixelmatch'; import { PNG } from 'pngjs'; import sharp from 'sharp'; import simpleGit from 'simple-git'; +import filter from 'lodash/filter'; import markdown2Html from './convert'; @@ -283,9 +284,17 @@ ${fullReport} let diffCount = 0; + // Summary + const badCount = badCases.length; + const commentReportLimit = isLocalEnv ? badCount : 8; + + const changedCount = filter(badCases, { type: 'changed' }).length; + const removedCount = filter(badCases, { type: 'removed' }).length; + const addedCount = filter(badCases, { type: 'added' }).length; + for (const badCase of badCases) { diffCount += 1; - if (diffCount <= 10) { + if (diffCount <= commentReportLimit) { // 将图片下方增加文件名 reportMdStr += generateLineReport(badCase, publicPath, currentRef, true); } @@ -293,18 +302,37 @@ ${fullReport} fullVersionMd += generateLineReport(badCase, publicPath, currentRef, false); } - reportMdStr += `\n\nCheck Full Report for details`; + const hasMore = badCount > commentReportLimit; + + if (hasMore) { + reportMdStr += [ + '\r', + '> [!WARNING]', + `> There are more diffs not shown in the table. Please check the Full Report for details.`, + '\r', + ].join('\n'); + } // tips for comment `Pass Visual Diff` will pass the CI if (!passed) { - reportMdStr += ` + const summaryLine = [ + changedCount > 0 && `🔄 **${changedCount}** changed`, + removedCount > 0 && `🛑 **${removedCount}** removed`, + addedCount > 0 && `🆕 **${addedCount}** added`, + ] + .filter(Boolean) + .join(', '); ------ - -If you think the visual diff is acceptable, please check: - -- [ ] Visual diff is acceptable -`; + reportMdStr += [ + '\n---\n', + '> [!IMPORTANT]', + `> There are **${badCount}** diffs found in this PR: ${summaryLine}.`, + '> **Please check all items:**', + hasMore && '> - [ ] Checked all diffs in the full report', + '> - [ ] Visual diff is acceptable', + ] + .filter(Boolean) + .join('\n'); } // convert fullVersionMd to html