is-js-error
Version:
Check if a page contains a JavaScript error
104 lines (73 loc) • 3.22 kB
JavaScript
;
require('babel-polyfill');
var _meow = require('meow');
var _meow2 = _interopRequireDefault(_meow);
var _logSymbols = require('log-symbols');
var _logSymbols2 = _interopRequireDefault(_logSymbols);
var _normalizeUrl = require('normalize-url');
var _normalizeUrl2 = _interopRequireDefault(_normalizeUrl);
var _vo = require('vo');
var _vo2 = _interopRequireDefault(_vo);
var _nightmare = require('nightmare');
var _nightmare2 = _interopRequireDefault(_nightmare);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _marked = [checkHasError].map(regeneratorRuntime.mark);
var normalizeOptions = {
normalizeProtocol: true,
stripFragment: false,
stripWWW: false
};
var parseURL = function parseURL(url) {
return (0, _normalizeUrl2.default)(url, normalizeOptions);
};
function checkHasError(url, maxWait) {
var night, isJSError, isLoaded, isLoadError;
return regeneratorRuntime.wrap(function checkHasError$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
night = (0, _nightmare2.default)({ show: false });
isJSError = false;
isLoaded = false;
isLoadError = false;
night.on('did-finish-load', function () {
isLoaded = true;
});
night.on('did-fail-load', function () {
isLoadError = true;
});
night.on('page', function (type, message, stack) {
if (type === 'error') {
isJSError = true;
console.log(message, stack);
}
});
_context.next = 9;
return night.goto(url).wait(maxWait).end();
case 9:
return _context.abrupt('return', !isLoaded || isLoadError || isJSError);
case 10:
case 'end':
return _context.stop();
}
}
}, _marked[0], this);
}
var checkURL = (0, _vo2.default)([checkHasError]);
var cli = (0, _meow2.default)('\n Example\n $ is-js-error example.com\n ' + _logSymbols2.default.success + ' OK\n $ is-js-error example.com --wait 3000\n ' + _logSymbols2.default.success + ' OK\n\n Options\n --help, Display this help\n --version, Display the version number\n --wait [ms], Wait for a given period before reporting no error.\n');
if (cli.input.length === 0) {
console.error('Specify a URL');
process.exit(1);
}
var url = parseURL(cli.input[0]);
var maxWait = cli.flags.wait ? Math.max(parseInt(cli.flags.wait, 10), 1000) : 1000;
checkURL(url, maxWait, function (err, results) {
if (err) {
console.log(_logSymbols2.default.warning + ' ' + err);
process.exit(1);
} else {
var hasError = results[0];
console.log(hasError ? _logSymbols2.default.error + ' KO' : _logSymbols2.default.success + ' OK');
process.exit(hasError ? 2 : 0);
}
});