From c329c34b5597da02c707221599c6599ca65caac7 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Wed, 29 Jul 2020 09:56:44 +0200 Subject: [PATCH] Use functions to format output for Slack (#3105) * Use functions to format output --- lib/plugins/slack/attachements.js | 41 ++++++++++++++++++++----------- lib/plugins/slack/summary.js | 25 ++++++++----------- lib/support/helpers/size.js | 2 +- test/slackTests.js | 8 +++--- 4 files changed, 41 insertions(+), 35 deletions(-) diff --git a/lib/plugins/slack/attachements.js b/lib/plugins/slack/attachements.js index 5fe5eb1be..4462be283 100644 --- a/lib/plugins/slack/attachements.js +++ b/lib/plugins/slack/attachements.js @@ -3,11 +3,11 @@ const get = require('lodash.get'); const h = require('../../support/helpers'); -function getMetric(metric) { +function getMetric(metric, f) { if (metric.median) { - return metric.median + ' ms' + ' (' + metric.max + ')'; + return f(metric.median) + ' (' + f(metric.max) + ')'; } else { - return metric; + return f(metric); } } @@ -31,68 +31,79 @@ module.exports = function( metric: get( base.browsertime, 'pageSummary.statistics.timings.firstPaint' - ) + ), + f: h.time.ms }, speedIndex: { name: 'Speed Index', metric: get( base.browsertime, 'pageSummary.statistics.visualMetrics.SpeedIndex' - ) + ), + f: h.time.ms }, firstVisualChange: { name: 'First Visual Change', metric: get( base.browsertime, 'pageSummary.statistics.visualMetrics.FirstVisualChange' - ) + ), + f: h.time.ms }, visualComplete85: { name: 'Visual Complete 85%', metric: get( base.browsertime, 'pageSummary.statistics.visualMetrics.VisualComplete85' - ) + ), + f: h.time.ms }, lastVisualChange: { name: 'Last Visual Change', metric: get( base.browsertime, 'pageSummary.statistics.visualMetrics.LastVisualChange' - ) + ), + f: h.time.ms }, fullyLoaded: { name: 'Fully Loaded', metric: get( base.browsertime, 'pageSummary.statistics.timings.fullyLoaded' - ) + ), + f: h.time.ms }, domContentLoadedTime: { name: 'domContentLoadedTime', metric: get( base.browsertime, 'pageSummary.statistics.timings.pageTimings.domContentLoadedTime' - ) + ), + f: h.time.ms }, rumSpeedIndex: { name: 'RUM Speed Index', metric: get( base.browsertime, 'pageSummary.statistics.timings.rumSpeedIndex' - ) + ), + f: h.time.ms }, coachScore: { name: 'Coach score', - metric: get(base.coach, 'pageSummary.advice.performance.score') + metric: get(base.coach, 'pageSummary.advice.performance.score'), + f: h.noop }, transferSize: { name: 'Page transfer size', - metric: h.size.format(get(base.pagexray, 'pageSummary.transferSize')) + metric: h.size.format(get(base.pagexray, 'pageSummary.transferSize')), + f: h.size.format }, transferRequests: { name: 'Requests', - metric: get(base.pagexray, 'pageSummary.requests') + metric: get(base.pagexray, 'pageSummary.requests'), + f: h.noop } }; @@ -102,7 +113,7 @@ module.exports = function( if (metric.metric !== undefined) { fields.push({ title: metric.name, - value: getMetric(metric.metric), + value: getMetric(metric.metric, metric.f), short: true }); } diff --git a/lib/plugins/slack/summary.js b/lib/plugins/slack/summary.js index 3a43156c2..3b611fb4e 100644 --- a/lib/plugins/slack/summary.js +++ b/lib/plugins/slack/summary.js @@ -10,7 +10,7 @@ module.exports = function(dataCollector, errors, resultUrls, name, options) { firstPaint: { name: 'First paint', metric: get(base.browsertime, 'summary.firstPaint.median'), - unit: 'ms' + f: h.time.ms }, domContentLoadedTime: { name: 'domContentLoadedTime', @@ -18,12 +18,12 @@ module.exports = function(dataCollector, errors, resultUrls, name, options) { base.browsertime, 'summary.pageTimings.domContentLoadedTime.median' ), - unit: 'ms' + f: h.time.ms }, speedIndex: { name: 'Speed Index', metric: get(base.browsertime, 'summary.visualMetrics.SpeedIndex.median'), - unit: 'ms' + f: h.time.ms }, firstVisualChange: { name: 'First Visual Change', @@ -31,7 +31,7 @@ module.exports = function(dataCollector, errors, resultUrls, name, options) { base.browsertime, 'summary.visualMetrics.FirstVisualChange.median' ), - unit: 'ms' + f: h.time.ms }, visualComplete85: { name: 'Visual Complete 85%', @@ -39,7 +39,7 @@ module.exports = function(dataCollector, errors, resultUrls, name, options) { base.browsertime, 'summary.visualMetrics.VisualComplete85.median' ), - unit: 'ms' + f: h.time.ms }, lastVisualChange: { name: 'Last Visual Change', @@ -47,22 +47,22 @@ module.exports = function(dataCollector, errors, resultUrls, name, options) { base.browsertime, 'summary.visualMetrics.LastVisualChange.median' ), - unit: 'ms' + f: h.time.ms }, fullyLoaded: { name: 'Fully Loaded', metric: get(base.pagexray, 'summary.fullyLoaded.median'), - unit: 'ms' + f: h.time.ms }, coachScore: { name: 'Coach score', metric: get(base.coach, 'summary.performance.score.median'), - unit: '' + f: h.noop }, transferSize: { name: 'Page transfer weight', metric: h.size.format(get(base.pagexray, 'summary.transferSize.median')), - unit: '' + f: h.size.format } }; const iterations = get(options, 'browsertime.iterations', 0); @@ -85,12 +85,7 @@ module.exports = function(dataCollector, errors, resultUrls, name, options) { for (const key of Object.keys(metrics)) { if (metrics[key].metric !== undefined) { summaryText += - metrics[key].name + - ': ' + - metrics[key].metric + - ' ' + - metrics[key].unit + - '\n'; + metrics[key].name + ': ' + metrics[key].f(metrics[key].metric) + '\n'; } } diff --git a/lib/support/helpers/size.js b/lib/support/helpers/size.js index 722beac50..c8e0cd056 100644 --- a/lib/support/helpers/size.js +++ b/lib/support/helpers/size.js @@ -10,7 +10,7 @@ module.exports = { }, format(bytes) { if (bytes === 0) return '0 b'; - if (!bytes || bytes < 0) return 'N/A'; + if (!bytes || bytes < 0 || bytes === 'N/A') return 'N/A'; if (bytes < KB) { return Number(bytes) + ' B'; diff --git a/test/slackTests.js b/test/slackTests.js index 53b9d2a5e..10f1fc9e6 100644 --- a/test/slackTests.js +++ b/test/slackTests.js @@ -219,7 +219,7 @@ describe('slack', () => { expect(mock.called).to.be.true; const params = mock.callArgs[0]; expect(params.text).to.equal( - '1 page analysed for Simple test (1 run, Chrome/desktop/unknown)\n*Site summary*\nPage transfer weight: N/A \n\n' + '1 page analysed for Simple test (1 run, Chrome/desktop/unknown)\n*Site summary*\nPage transfer weight: N/A\n\n' ); }); @@ -238,7 +238,7 @@ describe('slack', () => { const params = mock.callArgs[0]; expect(params.text).to.equal( '1 page analysed for Simple test (1 run, Chrome/desktop/unknown)\n*Site summary* ' + - '()\nPage transfer weight: N/A \n\n' + '()\nPage transfer weight: N/A\n\n' ); }); @@ -259,7 +259,7 @@ describe('slack', () => { plugin.processMessage({ type: 's3.finished' }); expect(mock.called).to.be.true; expect(mock.callArgs[0].text).to.equal( - '1 page analysed for S3 configured (1 run, Chrome/desktop/unknown)\n*Site summary*\nPage transfer weight: N/A \n\n' + '1 page analysed for S3 configured (1 run, Chrome/desktop/unknown)\n*Site summary*\nPage transfer weight: N/A\n\n' ); }); @@ -284,7 +284,7 @@ describe('slack', () => { plugin.processMessage({ type: 'gcs.finished' }); expect(mock.called).to.be.true; expect(mock.callArgs[0].text).to.equal( - '1 page analysed for GCS (1 run, Chrome/desktop/unknown)\n*Site summary*\nPage transfer weight: N/A \n\n' + '1 page analysed for GCS (1 run, Chrome/desktop/unknown)\n*Site summary*\nPage transfer weight: N/A\n\n' ); }); });