Use functions to format output for Slack (#3105)
* Use functions to format output
This commit is contained in:
parent
97f08f07bf
commit
c329c34b55
|
|
@ -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
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue