diff --git a/lib/plugins/budget/friendlynames.js b/lib/plugins/budget/friendlynames.js index 82b7c6917..b327d82fb 100644 --- a/lib/plugins/budget/friendlynames.js +++ b/lib/plugins/budget/friendlynames.js @@ -22,7 +22,8 @@ module.exports = { javascript: 'contentTypes.javascript.requests', css: 'contentTypes.css.requests', image: 'contentTypes.image.requests', - font: 'contentTypes.font.requests' + font: 'contentTypes.font.requests', + httpErrors: 'responseCodes' }, transferSize: { total: 'transferSize', diff --git a/lib/plugins/budget/verify.js b/lib/plugins/budget/verify.js index 68c1a9f5f..539427f44 100644 --- a/lib/plugins/budget/verify.js +++ b/lib/plugins/budget/verify.js @@ -61,6 +61,10 @@ module.exports = { if (value && message.type === 'lighthouse.pageSummary') { value = value * 100; // The score in Lighthouse is 0-1 } + if (value && message.type === 'pagexray.pageSummary') { + // count number of http server error + value = Object.keys(value).filter(code => code > 399).length; + } // We got a matching metric if (value) { const budgetValue = budgetForThisURL[metricType][metric]; diff --git a/lib/plugins/pagexray/index.js b/lib/plugins/pagexray/index.js index 49d10a4fe..a5011d0db 100644 --- a/lib/plugins/pagexray/index.js +++ b/lib/plugins/pagexray/index.js @@ -74,6 +74,18 @@ module.exports = { : undefined }; const pageSummary = pagexray.convert(message.data, config); + //check and print any http server error > 399 + for (let summary of pageSummary) { + if (Object.keys(summary.responseCodes).some(code => code > 399)) { + for (let asset of summary.assets) { + log.info( + `Error: The server responded with a ${ + asset.status + } status code for ${asset.url}` + ); + } + } + } pagexrayAggregator.addToAggregate(pageSummary, group); if (this.multi) { diff --git a/test/budget.json b/test/budget.json index c8525b428..92324764b 100644 --- a/test/budget.json +++ b/test/budget.json @@ -1,7 +1,7 @@ { "budget": { - "timings": { - "firstPaint": 5000 + "requests": { + "httpErrors": 0 } } } \ No newline at end of file