UNPKG

is-js-error

Version:

Check if a page contains a JavaScript error

104 lines (73 loc) 3.22 kB
'use strict'; 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); } });