UNPKG

@allurereport/plugin-dashboard

Version:

Allure Dashboard Plugin – plugin for generating dashboard with a mix of charts

47 lines (46 loc) 2.59 kB
import { severityLabelName, severityLevels } from "@allurereport/core-api"; import { createEmptySeries, createEmptyStats, getTrendDataGeneric, mergeTrendDataGeneric, normalizeStatistic, } from "../utils/trend.js"; export const getSeverityTrendData = (testResults, reportName, historyPoints, chartOptions) => { const { limit } = chartOptions; const historyLimit = limit && limit > 0 ? Math.max(0, limit - 1) : undefined; const limitedHistoryPoints = historyLimit !== undefined ? historyPoints.slice(-historyLimit) : historyPoints; const firstOriginalIndex = historyLimit !== undefined ? Math.max(0, historyPoints.length - historyLimit) : 0; const convertedHistoryPoints = limitedHistoryPoints.map((point, index) => { const originalIndex = firstOriginalIndex + index; return { name: point.name, originalIndex, statistic: Object.values(point.testResults).reduce((stat, test) => { const severityLabel = test.labels?.find((label) => label.name === severityLabelName); const severity = severityLabel?.value?.toLowerCase(); if (severity) { stat[severity] = (stat[severity] ?? 0) + 1; } return stat; }, createEmptyStats(severityLevels)), }; }); const currentSeverityStats = testResults.reduce((acc, test) => { const severityLabel = test.labels.find((label) => label.name === severityLabelName); const severity = severityLabel?.value?.toLowerCase(); if (severity) { acc[severity] = (acc[severity] ?? 0) + 1; } return acc; }, createEmptyStats(severityLevels)); const currentTrendData = getTrendDataGeneric(normalizeStatistic(currentSeverityStats, severityLevels), reportName, historyPoints.length + 1, severityLevels, chartOptions); const historicalTrendData = convertedHistoryPoints.reduce((acc, historyPoint) => { const trendDataPart = getTrendDataGeneric(normalizeStatistic(historyPoint.statistic, severityLevels), historyPoint.name, historyPoint.originalIndex + 1, severityLevels, chartOptions); return mergeTrendDataGeneric(acc, trendDataPart, severityLevels); }, { type: chartOptions.type, dataType: chartOptions.dataType, title: chartOptions.title, points: {}, slices: {}, series: createEmptySeries(severityLevels), min: Infinity, max: -Infinity, }); return mergeTrendDataGeneric(historicalTrendData, currentTrendData, severityLevels); };