UNPKG

@plasma-platform/tm-perfomance-check

Version:

Check page perfomance metrics on test machine

201 lines (171 loc) 5.56 kB
#!/usr/bin/env node 'use strict'; require('babel-polyfill'); var _isomorphicFetch = require('isomorphic-fetch'); var _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch); var _commandLineArgs = require('command-line-args'); var _commandLineArgs2 = _interopRequireDefault(_commandLineArgs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function() { var gen = fn.apply(this, arguments); return new Promise(function(resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then( function(value) { step('next', value); }, function(err) { step('throw', err); }, ); } } return step('next'); }); }; } var config = require('../config/config.json'); // eslint-disable-line var optionDefinitions = [ { name: 'verbose', alias: 'v', type: String }, // Return all metrics { name: 'fps', type: String }, // fps checks { name: 'dom', type: String }, // dom ready time { name: 'load', type: String }, // full load time { name: 'error', type: String }, // throw error if metrics are fail { name: 'url', type: String }, // url of resource { name: 'serviceURL', type: String }, ]; var options = (0, _commandLineArgs2.default)(optionDefinitions); if (options.serviceURL !== undefined) config.serviceURL = options.serviceURL; if (options.url === undefined) { console.log('No url provided'); process.exit(5); } console.log(options); function logFPS(result) { if (result.framesPerSec_raf < config.framesPerSec_raf) { console.log( 'FPS is too low. ' + Math.ceil(result.framesPerSec_raf) + 'fps, but ' + config.framesPerSec_raf + 'fps minimum.', ); // eslint-disable-line if (options.error !== undefined) process.exit(2); } else { console.log('FPS is ' + Math.ceil(result.framesPerSec_raf) + '.'); // eslint-disable-line } } function logLoad(result) { if (result.loadTime > config.loadTime) { console.log( 'Max full page load time exceeded. ' + result.loadTime + 'ms, but ' + config.loadTime + 'ms maximum.', ); // eslint-disable-line if (options.error !== undefined) process.exit(3); } else { console.log('Load time is ' + result.loadTime + 'ms.'); // eslint-disable-line } } function logDOM(result) { if (result.domReadyTime > config.domReadyTime) { console.log( 'DOM ready time exceeded. ' + result.domReadyTime + 'ms, but ' + config.domReadyTime + 'ms maximum.', ); // eslint-disable-line if (options.error !== undefined) process.exit(4); } else { console.log('DOM ready time is ' + result.domReadyTime + 'ms.'); // eslint-disable-line } } _asyncToGenerator( /*#__PURE__*/ regeneratorRuntime.mark(function _callee() { var response, result; return regeneratorRuntime.wrap( function _callee$(_context) { while (1) { switch ((_context.prev = _context.next)) { case 0: response = void 0; result = void 0; _context.prev = 2; _context.next = 5; return (0, _isomorphicFetch2.default)(config.serviceURL + '?url=' + options.url); case 5: response = _context.sent; _context.next = 12; break; case 8: _context.prev = 8; _context.t0 = _context['catch'](2); console.log(_context.t0.message); // eslint-disable-line process.exit(1); case 12: if (!response.ok) { console.log(response.statusCode); // eslint-disable-line process.exit(1); } _context.prev = 13; _context.next = 16; return response.json(); case 16: result = _context.sent; _context.next = 23; break; case 19: _context.prev = 19; _context.t1 = _context['catch'](13); console.log(_context.t1.message); // eslint-disable-line process.exit(1); case 23: if (result.framesPerSec_raf === undefined) { console.log('JSON parse problem'); // eslint-disable-line process.exit(1); } if (options.verbose !== undefined) { console.log(result); // eslint-disable-line process.exit(0); } if (options.fps !== undefined) { logFPS(result); } else if (options.load !== undefined) { logLoad(result); } else if (options.dom !== undefined) { logDOM(result); } else { logFPS(result); logLoad(result); logDOM(result); } process.exit(0); case 27: case 'end': return _context.stop(); } } }, _callee, undefined, [[2, 8], [13, 19]], ); }), )(); //# sourceMappingURL=index.js.map