UNPKG

testbeats

Version:

Publish test results to Microsoft Teams, Google Chat, Slack and InfluxDB

82 lines (67 loc) 2.16 kB
const { BaseExtension } = require('./base.extension'); const { STATUS, HOOK } = require("../helpers/constants"); const logger = require('../utils/logger'); class SmartAnalysisExtension extends BaseExtension { constructor(target, extension, result, payload, root_payload) { super(target, extension, result, payload, root_payload); this.#setDefaultOptions(); this.#setDefaultInputs(); this.updateExtensionInputs(); } run() { this.#setText(); this.attach(); } #setDefaultOptions() { this.default_options.hook = HOOK.AFTER_SUMMARY, this.default_options.condition = STATUS.PASS_OR_FAIL; } #setDefaultInputs() { this.default_inputs.title = ''; this.default_inputs.title_link = ''; } #setText() { const data = this.extension.inputs.data; if (!data) { return; } /** * @type {import('../beats/beats.types').IBeatExecutionMetric} */ const execution_metrics = data.execution_metrics[0]; if (!execution_metrics) { logger.warn('⚠️ No execution metrics found. Skipping.'); return; } const smart_analysis = []; if (execution_metrics.newly_failed) { smart_analysis.push(`⭕ Newly Failed: ${execution_metrics.newly_failed}`); } if (execution_metrics.always_failing) { smart_analysis.push(`🔴 Always Failing: ${execution_metrics.always_failing}`); } if (execution_metrics.recurring_errors) { smart_analysis.push(`🟠 Recurring Errors: ${execution_metrics.recurring_errors}`); } if (execution_metrics.flaky) { smart_analysis.push(`🟡 Flaky: ${execution_metrics.flaky}`); } if (execution_metrics.recovered) { smart_analysis.push(`🟢 Recovered: ${execution_metrics.recovered}`); } const texts = []; const rows = []; for (const item of smart_analysis) { rows.push(item); if (rows.length === 3) { texts.push(rows.join('    ')); rows.length = 0; } } if (rows.length > 0) { texts.push(rows.join('    ')); } this.text = this.mergeTexts(texts); } } module.exports = { SmartAnalysisExtension };