diff --git a/packages/frontend/editor-ui/src/features/insights/insights.utils.test.ts b/packages/frontend/editor-ui/src/features/insights/insights.utils.test.ts index 4468eef47e..e3fe15b2de 100644 --- a/packages/frontend/editor-ui/src/features/insights/insights.utils.test.ts +++ b/packages/frontend/editor-ui/src/features/insights/insights.utils.test.ts @@ -81,8 +81,8 @@ describe('Insights Transformers', () => { }); it('should return Infinity if value equals deviation (and thus previous value is 0)', () => { - expect(transformInsightsDeviation.total(10, 10)).toBe(Infinity); - expect(transformInsightsDeviation.failed(5, 5)).toBe(Infinity); + expect(transformInsightsDeviation.total(10, 10)).toBe(null); + expect(transformInsightsDeviation.failed(5, 5)).toBe(null); }); it('should return 0 if deviation is 0 and value is not 0', () => { diff --git a/packages/frontend/editor-ui/src/features/insights/insights.utils.ts b/packages/frontend/editor-ui/src/features/insights/insights.utils.ts index bb493e572b..88986285b9 100644 --- a/packages/frontend/editor-ui/src/features/insights/insights.utils.ts +++ b/packages/frontend/editor-ui/src/features/insights/insights.utils.ts @@ -21,14 +21,21 @@ export const transformInsightsValues: Record value - deviation; +const getDeviation = (value: number, deviation: number): number | null => { + if (value === 0 && deviation === 0) return 0; + + const previousValue = getPreviousValue(value, deviation); + if (previousValue === 0) return null; // avoid division by zero + + return (deviation / previousValue) * 100; +}; + export const transformInsightsDeviation: Record< InsightsSummaryType, - (value: number, deviation: number) => number + (value: number, deviation: number) => number | null > = { - total: (value: number, deviation: number) => - value === 0 && deviation === 0 ? 0 : (deviation / getPreviousValue(value, deviation)) * 100, - failed: (value: number, deviation: number) => - value === 0 && deviation === 0 ? 0 : (deviation / getPreviousValue(value, deviation)) * 100, + total: getDeviation, + failed: getDeviation, timeSaved: (_: number, deviation: number) => transformInsightsTimeSaved(deviation), averageRunTime: (_: number, deviation: number) => transformInsightsAverageRunTime(deviation), failureRate: (_: number, deviation: number) => transformInsightsFailureRate(deviation),