All files / src/reports navtiming.js

100% Statements 10/10
100% Branches 0/0
100% Functions 8/8
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                  1x   1x               2x 3x           2x 3x             2x       3x             2x       3x          
'use strict';
/**
 * Report on Navigation Timing API metrics.
 *
 * @module reports/navtiming
 * @see {@link Report}
 * @see <https://www.w3.org/TR/navigation-timing-2/>
 */
 
const compute = require( '../compute' );
 
module.exports = {
	probes: [
		'navtiming'
	],
	metrics: {
		responseStart: {
			caption: 'Time to first byte',
			unit: 'ms',
			analyse: ( series ) => compute.stats( series.navtiming.responseStart ),
			compare: ( a, b ) => compute.diffStdev( a, b )
		},
 
		loadEventEnd: {
			caption: 'Total page load time',
			unit: 'ms',
			analyse: ( series ) => compute.stats( series.navtiming.loadEventEnd ),
			compare: ( a, b ) => compute.diffStdev( a, b ),
			threshold: 100
		},
 
		processing: {
			caption: 'Time from responseEnd to domComplete',
			unit: 'ms',
			analyse: ( series ) => compute.stats( compute.subtract(
				series.navtiming.domComplete,
				series.navtiming.responseEnd
			) ),
			compare: ( a, b ) => compute.diffStdev( a, b ),
			threshold: 100
		},
 
		onLoad: {
			caption: 'Time from loadEventStart to loadEventEnd',
			unit: 'ms',
			analyse: ( series ) => compute.stats( compute.subtract(
				series.navtiming.loadEventEnd,
				series.navtiming.loadEventStart
			) ),
			compare: ( a, b ) => compute.diffStdev( a, b ),
			threshold: 10
		}
	}
};