diff --git a/bin/sitespeed.js b/bin/sitespeed.js index 051fc5cc5..e6747fd01 100755 --- a/bin/sitespeed.js +++ b/bin/sitespeed.js @@ -10,23 +10,48 @@ /*eslint no-process-exit:0*/ var Sitespeed = require('../lib/sitespeed'), - config = require('../lib/cli'), - winston = require('winston'); + config = require('../lib/cli'), + winston = require('winston'); var sitespeed = new Sitespeed(); require('whereis')('java', function searched(err) { - // yep, we still need Java for the crawler & browsertime - if (err) { - winston.loggers.get('sitespeed.io').error( - 'Could not find Java, make sure it is installed in your $PATH'); - process.exit(1); - } else { - sitespeed.run(config, function(error) { - if (error) { - winston.loggers.get('sitespeed.io').error(error); - process.exit(1); - } - }); - } + // yep, we still need Java for the crawler & browsertime + if (err) { + winston.loggers.get('sitespeed.io').error( + 'Could not find Java, make sure it is installed in your $PATH'); + process.exit(1); + } else { + sitespeed.run(config, function(error, data) { + if (error) { + winston.loggers.get('sitespeed.io').error(error); + process.exit(1); + } + + // do we have a budget? + if (data && data.budget) { + var isFailing = false; + + // loop through the result and log + data.budget.forEach(function(result) { + if (result.skipped) { + winston.loggers.get('sitespeed.io').info('Skipping ' + result.title + ' ' + result.url + ' ' + ' value [' + + result.value + ']'); + } else if (result.isOk) { + winston.loggers.get('sitespeed.io').info('The budget for ' + result.title + ' ' + result.url + ' passed [' + + result.value + + ']'); + } else { + isFailing = true; + winston.loggers.get('sitespeed.io').error('The budget for ' + result.title + ' ' + result.url + ' failed. ' + + result.description); + } + }); + + if (isFailing) { + process.exit(1); + } + } + }); + } }); diff --git a/lib/tests/testRenderer.js b/lib/tests/testRenderer.js index bb47448f6..295182906 100644 --- a/lib/tests/testRenderer.js +++ b/lib/tests/testRenderer.js @@ -102,7 +102,7 @@ TestRenderer.prototype._page = function(url, pageData) { results.push(self._getResult(asset + ' requests', url, value < self.budget.page[budget], - 'The number of ' + asset + ' requests + ' + value + ' the limit is ' + self.budget.page[budget], + 'The number of ' + asset + ' requests ' + value + ' the limit is ' + self.budget.page[budget], value, 'page')); @@ -195,7 +195,7 @@ TestRenderer.prototype._headlessTimings = function(url, pageData) { result.title = timing + ' using ' + self.config.headless; result.url = url; result.isOk = stat.stats.median < self.budget.timings[timing]; - result.description = 'the ' + timing + ' is ' + + result.description = 'the ' + timing + ' is ' + stat.stats.median + ' threshold:' + self.budget.timings[timing]; @@ -322,17 +322,7 @@ TestRenderer.prototype.render = function(cb) { self.config.budgetResult = []; self.results.forEach(function(result) { - self.config.budgetResult.push(result); - - // loop through the result and log - if (result.isOk) { - self.log.log('info', 'The budget for ' + result.title + ' ' + result.url + ' ' + ' passed (' + result.value + - ')'); - } else { - self.log.log('info', 'The budget for ' + result.title + ' ' + result.url + ' ' + ' failed (' + result.value + - ') ' + result.description); - } }); callback();