mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2026-09-09 18:02:54 +00:00
[ACS-12607] added error card and legend to the teams card (#5351)
This commit is contained in:
@@ -320,6 +320,14 @@ function buildCard({ suiteStats, browserStats, browserSuiteStats }) {
|
|||||||
},
|
},
|
||||||
{ type: 'TextBlock', weight: 'Bolder', text: 'Per browser', separator: true, spacing: 'Medium' },
|
{ type: 'TextBlock', weight: 'Bolder', text: 'Per browser', separator: true, spacing: 'Medium' },
|
||||||
buildBrowserTable(browserStats),
|
buildBrowserTable(browserStats),
|
||||||
|
{
|
||||||
|
type: 'TextBlock',
|
||||||
|
text: '🔢 Total run • ✅ Passed • ❌ Failed • ⏭️ Skipped • 🚫 Excluded (all) • 🚫🌐 Excluded (browser-specific)',
|
||||||
|
wrap: true,
|
||||||
|
size: 'Small',
|
||||||
|
isSubtle: true,
|
||||||
|
spacing: 'Small'
|
||||||
|
},
|
||||||
...browserContainers
|
...browserContainers
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -338,6 +346,77 @@ function buildCard({ suiteStats, browserStats, browserSuiteStats }) {
|
|||||||
return card;
|
return card;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function statusLabel(result) {
|
||||||
|
switch (result) {
|
||||||
|
case 'success':
|
||||||
|
return '✅ success';
|
||||||
|
case 'failure':
|
||||||
|
return '❌ failure';
|
||||||
|
case 'cancelled':
|
||||||
|
return '🚫 cancelled';
|
||||||
|
case 'skipped':
|
||||||
|
return '⏭️ skipped';
|
||||||
|
default:
|
||||||
|
return result || 'unknown';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Card posted when no blob reports were produced, i.e. the build or the local ACS deployment
|
||||||
|
* failed before any tests could run. Avoids sending a misleading all-zero results card.
|
||||||
|
*/
|
||||||
|
function buildSetupFailureCard() {
|
||||||
|
const date = new Date().toISOString().slice(0, 10);
|
||||||
|
const runUrl = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`;
|
||||||
|
|
||||||
|
const jobResults = [
|
||||||
|
{ browser: 'chrome', result: process.env.CHROME_RESULT },
|
||||||
|
{ browser: 'firefox', result: process.env.FIREFOX_RESULT },
|
||||||
|
{ browser: 'webkit', result: process.env.WEBKIT_RESULT },
|
||||||
|
{ browser: 'msedge', result: process.env.MSEDGE_RESULT }
|
||||||
|
].filter((job) => job.result);
|
||||||
|
|
||||||
|
const mention = buildMention();
|
||||||
|
|
||||||
|
const body = [
|
||||||
|
{ type: 'TextBlock', size: 'Large', weight: 'Bolder', text: `ACA Cron Multibrowser Workflow - ${date}` },
|
||||||
|
{
|
||||||
|
type: 'TextBlock',
|
||||||
|
text: `🛑 Setup failed — no tests were run${mention ? ` — ${mention.tag}` : ''}`,
|
||||||
|
wrap: true,
|
||||||
|
weight: 'Bolder',
|
||||||
|
color: 'Attention',
|
||||||
|
size: 'Medium'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'TextBlock',
|
||||||
|
text: 'No Playwright blob reports were produced. This usually means the build or the local ACS deployment failed before any tests could run.',
|
||||||
|
wrap: true
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
if (jobResults.length) {
|
||||||
|
body.push({
|
||||||
|
type: 'FactSet',
|
||||||
|
facts: jobResults.map((job) => ({ title: job.browser, value: statusLabel(job.result) }))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const card = {
|
||||||
|
type: 'AdaptiveCard',
|
||||||
|
$schema: 'http://adaptivecards.io/schemas/adaptive-card.json',
|
||||||
|
version: '1.5',
|
||||||
|
body,
|
||||||
|
actions: [{ type: 'Action.OpenUrl', title: 'Open run', url: runUrl }]
|
||||||
|
};
|
||||||
|
|
||||||
|
if (mention) {
|
||||||
|
card.msteams = { entities: [mention.entity] };
|
||||||
|
}
|
||||||
|
|
||||||
|
return card;
|
||||||
|
}
|
||||||
|
|
||||||
async function postToTeams(card) {
|
async function postToTeams(card) {
|
||||||
const webhook = process.env.TEAMS_WEBHOOK_URL || process.env.TEAMS_E2E_WEBHOOK_URL;
|
const webhook = process.env.TEAMS_WEBHOOK_URL || process.env.TEAMS_E2E_WEBHOOK_URL;
|
||||||
if (!webhook) {
|
if (!webhook) {
|
||||||
@@ -364,11 +443,16 @@ async function postToTeams(card) {
|
|||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const results = collect();
|
const results = collect();
|
||||||
const card = buildCard(results);
|
const hasResults = results.suiteStats.size > 0;
|
||||||
|
const card = hasResults ? buildCard(results) : buildSetupFailureCard();
|
||||||
await postToTeams(card);
|
await postToTeams(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
main().catch((error) => {
|
if (require.main === module) {
|
||||||
console.error(error);
|
main().catch((error) => {
|
||||||
process.exit(1);
|
console.error(error);
|
||||||
});
|
process.exit(1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { buildCard, buildSetupFailureCard, postToTeams, emptyCounts, BROWSERS };
|
||||||
|
|||||||
@@ -100,4 +100,8 @@ jobs:
|
|||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
env:
|
env:
|
||||||
TEAMS_WEBHOOK_URL: ${{ secrets.TEAMS_E2E_WEBHOOK_URL }}
|
TEAMS_WEBHOOK_URL: ${{ secrets.TEAMS_E2E_WEBHOOK_URL }}
|
||||||
|
CHROME_RESULT: ${{ needs.chrome.result }}
|
||||||
|
FIREFOX_RESULT: ${{ needs.firefox.result }}
|
||||||
|
WEBKIT_RESULT: ${{ needs.webkit.result }}
|
||||||
|
MSEDGE_RESULT: ${{ needs.msedge.result }}
|
||||||
run: node .github/scripts/e2e-teams-report.js
|
run: node .github/scripts/e2e-teams-report.js
|
||||||
|
|||||||
Reference in New Issue
Block a user