Skip to content

Commit

Permalink
add lighthouse execution time to json results (#2241)
Browse files Browse the repository at this point in the history
* `timing` object on LHR; `timing.total` for total execution time
* add total time to `plots/`
  • Loading branch information
brendankenny committed May 13, 2017
1 parent 1797d9c commit 008c5d9
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 7 deletions.
4 changes: 3 additions & 1 deletion lighthouse-core/config/plots.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
"first-meaningful-paint",
"speed-index-metric",
"estimated-input-latency",
"time-to-interactive"
"time-to-interactive",
"first-interactive",
"consistently-interactive"
]
}
15 changes: 12 additions & 3 deletions lighthouse-core/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ const Config = require('./config/config');
*/

module.exports = function(url, flags = {}, configJSON) {
return new Promise((resolve, reject) => {
const startTime = Date.now();
return Promise.resolve().then(_ => {
if (!url) {
return reject(new Error('Lighthouse requires a URL'));
throw new Error('Lighthouse requires a URL');
}

// set logging preferences, assume quiet
Expand All @@ -53,7 +54,15 @@ module.exports = function(url, flags = {}, configJSON) {
const connection = new ChromeProtocol(flags.port);

// kick off a lighthouse run
resolve(Runner.run(connection, {url, flags, config}));
return Runner.run(connection, {url, flags, config})
.then(lighthouseResults => {
// Annotate with time to run lighthouse.
const endTime = Date.now();
lighthouseResults.timing = lighthouseResults.timing || {};
lighthouseResults.timing.total = endTime - startTime;

return lighthouseResults;
});
});
};

Expand Down
1 change: 1 addition & 0 deletions lighthouse-core/report/v2/renderer/report-renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ ReportRenderer.GroupJSON; // eslint-disable-line no-unused-expressions
* lighthouseVersion: string,
* userAgent: string,
* generatedTime: string,
* timing: {total: number},
* initialUrl: string,
* url: string,
* artifacts: {traces: !Object},
Expand Down
2 changes: 2 additions & 0 deletions lighthouse-core/test/index-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ describe('Module Tests', function() {
assert.ok(Array.isArray(results.aggregations));
assert.equal(results.aggregations.length, 0);
assert.ok(results.audits.viewport);
assert.ok(results.timing);
assert.equal(typeof results.timing.total, 'number');
});
});

Expand Down
13 changes: 11 additions & 2 deletions plots/analyze.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,17 @@ function analyzeSite(sitePath) {
*/
function readResult(lighthouseReportPath) {
const data = JSON.parse(fs.readFileSync(lighthouseReportPath));
return Metrics.metricsDefinitions.map(metric => ({
const metrics = Metrics.metricsDefinitions.map(metric => ({
name: metric.name,
id: metric.id,
timing: metric.getTiming(data.audits)
}));
const timings = Object.keys(constants.TIMING_NAME_MAP).map(timingName => ({
name: constants.TIMING_NAME_MAP[timingName],
id: 'timing' + timingName,
timing: data.timing[timingName]
}));
return [...metrics, ...timings];
}

/**
Expand All @@ -95,7 +101,10 @@ function readResult(lighthouseReportPath) {
* @return {!ResultsByMetric}
*/
function groupByMetrics(results) {
return Metrics.metricsDefinitions.map(metric => metric.name).reduce((acc, metricName, index) => {
const metricNames = Metrics.metricsDefinitions.map(metric => metric.name)
.concat(Object.keys(constants.TIMING_NAME_MAP).map(key => constants.TIMING_NAME_MAP[key]));

return metricNames.reduce((acc, metricName, index) => {
acc[metricName] = results.map(siteResult => ({
site: siteResult.site,
metrics: siteResult.results.map(runResult => ({
Expand Down
7 changes: 6 additions & 1 deletion plots/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,13 @@ const OUT_PATH = path.resolve(__dirname, 'out');
const LIGHTHOUSE_RESULTS_FILENAME = 'lighthouse.json';
const SCREENSHOTS_FILENAME = 'assets-0.screenshots.json';

const TIMING_NAME_MAP = {
'total': 'Lighthouse Execution'
};

module.exports = {
OUT_PATH,
LIGHTHOUSE_RESULTS_FILENAME,
SCREENSHOTS_FILENAME
SCREENSHOTS_FILENAME,
TIMING_NAME_MAP
};

0 comments on commit 008c5d9

Please sign in to comment.