Use functions to format output for Slack (#3105)

* Use functions to format output
This commit is contained in:
Peter Hedenskog 2020-07-29 09:56:44 +02:00 committed by GitHub
parent 97f08f07bf
commit c329c34b55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 41 additions and 35 deletions

View File

@ -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
});
}

View File

@ -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';
}
}

View File

@ -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';

View File

@ -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* ' +
'(<https://results.sitespeed.io/absolute/path/index.html |result>)\nPage transfer weight: N/A \n\n'
'(<https://results.sitespeed.io/absolute/path/index.html |result>)\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'
);
});
});