chore: add a pretty summary to CI (#6780)

This commit is contained in:
Maribeth Bottorff
2023-01-18 10:31:56 -08:00
committed by GitHub
parent 856285c6ff
commit 86f3fde69c

View File

@@ -34,6 +34,7 @@ const ANSI_RESET = '\x1b[0m';
let successCount = 0;
let failCount = 0;
let firstErr;
const results = {};
/**
* Run an arbitrary Gulp task as a test.
@@ -59,6 +60,7 @@ function runTestTask(id, task) {
successCount++;
if (process.env.CI) console.log('::endgroup::');
console.log(`${BOLD_GREEN}SUCCESS:${ANSI_RESET} ${id}`);
results[id] = {success: true};
resolve(result);
})
.catch((err) => {
@@ -70,17 +72,38 @@ function runTestTask(id, task) {
console.error(err.message);
if (process.env.CI) console.log('::endgroup::');
console.log(`${BOLD_RED}FAILED:${ANSI_RESET} ${id}`);
results[id] = {success: false, message: err.message};
// Always continue.
resolve(err);
});
});
}
function createSummary() {
let summary = '# Test Summary\n\n';
summary += '|Test Name|Passed?|Error message|\n';
summary += '|---------|-------|-------------|\n';
for (const test in results) {
summary += `|${test}|${results[test].success
? ':white_check_mark:' : ':x:'}|${results[test].message ?? ''}|\n`;
}
summary += `\n\n## Total: ${successCount} passed. ${failCount} failed.`;
return summary;
}
/**
* Print test results and fail the task if needed.
*/
function reportTestResult() {
console.log('=======================================');
if (process.env.CI && process.env.GITHUB_STEP_SUMMARY) {
try {
fs.writeFileSync(process.env.GITHUB_STEP_SUMMARY, createSummary());
} catch(e) {
// Don't fail CI just because we couldn't write the summary.
console.log('Failed to write job summary', e);
}
}
// Check result.
if (failCount === 0) {
console.log(