@plasma-platform/tm-perfomance-check
Version:
Check page perfomance metrics on test machine
201 lines (171 loc) • 5.56 kB
JavaScript
;
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