-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsummary.js
66 lines (53 loc) · 1.61 KB
/
summary.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const core = require("@actions/core");
const { SUMMARY_ENV_VAR } = require("@actions/core/lib/summary");
const icons = {
passed: ":white_check_mark:",
failed: ":x:",
};
const labels = {
passed: "Passed",
failed: "Failed",
};
async function addSummary({ cli, filter, includeSummary }) {
if (!includeSummary || !(SUMMARY_ENV_VAR in process.env)) {
return;
}
const headers = [
{ data: "Title", header: true },
{ data: "Status", header: true },
];
const recordings = cli.listAllRecordings({ all: true, filter });
const hasTestMetadata = recordings.some((r) => r.metadata.test);
if (hasTestMetadata) {
headers.splice(1, 0, { data: "Test Result", header: true });
}
const recordingRows = recordings.map((r) => {
const title =
r.status === "uploaded"
? `<a href="https://app.replay.io/recording/${r.id}" target="_blank">${r.metadata.title}</a>`
: r.metadata.title;
const status = r.status;
if (hasTestMetadata) {
const result = r.metadata.test?.result;
const resultCounts = r.metadata.test?.resultCounts;
if (resultCounts && resultCounts.passed > 0 && resultCounts.failed > 0) {
return [
title,
`${resultCounts.passed} ${icons.passed} / ${resultCounts.failed} ${icons.failed}`,
status,
];
}
return [
title,
icons[result] ? `${icons[result]} ${labels[result]}` : "",
status,
];
}
return [title, status];
});
await core.summary
.addHeading("Replay Uploads", 2)
.addTable([headers, ...recordingRows])
.write();
}
module.exports = addSummary;