testcafe
Version:
Automated browser testing for the modern web development stack.
62 lines (61 loc) • 10.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.prepareSkipJsErrorsOptions = exports.ensureSkipJsErrorsCallbackWrapped = exports.isSkipJsErrorsOptionsObject = exports.isSkipJsErrorsCallbackWithOptionsObject = void 0;
const make_reg_exp_1 = require("../../utils/make-reg-exp");
const client_function_builder_1 = __importDefault(require("../../client-functions/client-function-builder"));
const SKIP_JS_ERRORS_OBJECT_FUNCTION = `
let { stack, pageUrl, message } = deps;
return stack.test(err.stack) && pageUrl.test(err.pageUrl) && message.test(err.message);
`;
function isSkipJsErrorsCallbackWithOptionsObject(obj) {
return !!obj && typeof obj === 'object' && 'fn' in obj;
}
exports.isSkipJsErrorsCallbackWithOptionsObject = isSkipJsErrorsCallbackWithOptionsObject;
function isSkipJsErrorsOptionsObject(obj) {
return !!obj && typeof obj === 'object' && !isSkipJsErrorsCallbackWithOptionsObject(obj);
}
exports.isSkipJsErrorsOptionsObject = isSkipJsErrorsOptionsObject;
function ensureSkipJsErrorsCallbackWrapped(options, dependencies = {}) {
if (typeof options === 'function')
return wrapSkipJsErrorsCallback(options, dependencies);
return options;
}
exports.ensureSkipJsErrorsCallbackWrapped = ensureSkipJsErrorsCallbackWrapped;
function wrapSkipJsErrorsCallback(options, dependencies) {
return { fn: options, dependencies };
}
function prepareSkipJsErrorsOptions(options) {
options = ensureSkipJsErrorsCallbackWrapped(options);
if (isSkipJsErrorsCallbackWithOptionsObject(options))
return createSkipJsErrorsCallbackFunction(options);
if (isSkipJsErrorsOptionsObject(options))
return createSkipJsErrorsObjectFunction(prepareOptionsObject(options));
return options;
}
exports.prepareSkipJsErrorsOptions = prepareSkipJsErrorsOptions;
function createSkipJsErrorsObjectFunction(deps) {
deps.message = deps.message || new RegExp('');
deps.stack = deps.stack || new RegExp('');
deps.pageUrl = deps.pageUrl || new RegExp('');
const func = new Function('err', SKIP_JS_ERRORS_OBJECT_FUNCTION);
const callbackWrapper = wrapSkipJsErrorsCallback(func, { deps });
return createSkipJsErrorsCallbackFunction(callbackWrapper);
}
function createSkipJsErrorsCallbackFunction({ fn, dependencies }) {
const methodName = 'skipJsErrors handler';
const options = { dependencies };
return new client_function_builder_1.default(fn, options, {
instantiation: methodName,
execution: methodName,
}).getCommand();
}
function prepareOptionsObject(opts) {
opts.message = (0, make_reg_exp_1.parseRegExpString)(opts.message);
opts.stack = (0, make_reg_exp_1.parseRegExpString)(opts.stack);
opts.pageUrl = (0, make_reg_exp_1.parseRegExpString)(opts.pageUrl);
return opts;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3NraXAtanMtZXJyb3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLDJEQUE2RDtBQUU3RCw2R0FBbUY7QUFFbkYsTUFBTSw4QkFBOEIsR0FBRzs7OztTQUk5QixDQUFDO0FBRVYsU0FBZ0IsdUNBQXVDLENBQUUsR0FBWTtJQUNqRSxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUM7QUFDM0QsQ0FBQztBQUZELDBGQUVDO0FBRUQsU0FBZ0IsMkJBQTJCLENBQUUsR0FBWTtJQUNyRCxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsdUNBQXVDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0YsQ0FBQztBQUZELGtFQUVDO0FBRUQsU0FBZ0IsaUNBQWlDLENBQUUsT0FBMkcsRUFBRSxlQUFnQyxFQUFFO0lBQzlMLElBQUksT0FBTyxPQUFPLEtBQUssVUFBVTtRQUM3QixPQUFPLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUUzRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBTEQsOEVBS0M7QUFFRCxTQUFTLHdCQUF3QixDQUFFLE9BQTZCLEVBQUUsWUFBNkI7SUFDM0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQWdCLDBCQUEwQixDQUFFLE9BQTJHO0lBQ25KLE9BQU8sR0FBRyxpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVyRCxJQUFJLHVDQUF1QyxDQUFDLE9BQU8sQ0FBQztRQUNoRCxPQUFPLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZELElBQUksMkJBQTJCLENBQUMsT0FBTyxDQUFDO1FBQ3BDLE9BQU8sZ0NBQWdDLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUUzRSxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBVkQsZ0VBVUM7QUFFRCxTQUFTLGdDQUFnQyxDQUFFLElBQStCO0lBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFLLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTlDLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSw4QkFBOEIsQ0FBeUIsQ0FBQztJQUV6RixNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sa0NBQWtDLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQVMsa0NBQWtDLENBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUF5QztJQUNwRyxNQUFNLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQztJQUMxQyxNQUFNLE9BQU8sR0FBTSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBRXBDLE9BQU8sSUFBSSxpQ0FBcUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFO1FBQzFDLGFBQWEsRUFBRSxVQUFVO1FBQ3pCLFNBQVMsRUFBTSxVQUFVO0tBQzVCLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNwQixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBRSxJQUErQjtJQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsZ0NBQWlCLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUssSUFBQSxnQ0FBaUIsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLGdDQUFpQixFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaWN0aW9uYXJ5LCBTa2lwSnNFcnJvcnNDYWxsYmFjaywgU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCwgU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCxcbn0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHBhcnNlUmVnRXhwU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFrZS1yZWctZXhwJztcbmltcG9ydCB7IEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQgfSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9leGVjdXRlLWNsaWVudC1mdW5jdGlvbic7XG5pbXBvcnQgQ2xpZW50RnVuY3Rpb25CdWlsZGVyIGZyb20gJy4uLy4uL2NsaWVudC1mdW5jdGlvbnMvY2xpZW50LWZ1bmN0aW9uLWJ1aWxkZXInO1xuXG5jb25zdCBTS0lQX0pTX0VSUk9SU19PQkpFQ1RfRlVOQ1RJT04gPSBgXG4gICAgICAgICAgICAgICAgbGV0IHsgc3RhY2ssIHBhZ2VVcmwsIG1lc3NhZ2UgfSA9IGRlcHM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhY2sudGVzdChlcnIuc3RhY2spICYmIHBhZ2VVcmwudGVzdChlcnIucGFnZVVybCkgJiYgbWVzc2FnZS50ZXN0KGVyci5tZXNzYWdlKTtcbiAgICAgICAgYDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCAob2JqOiB1bmtub3duKTogb2JqIGlzIFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3Qge1xuICAgIHJldHVybiAhIW9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAnZm4nIGluIG9iajtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCAob2JqOiB1bmtub3duKTogb2JqIGlzIFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3Qge1xuICAgIHJldHVybiAhIW9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAhaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0KG9iaik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTa2lwSnNFcnJvcnNDYWxsYmFja1dyYXBwZWQgKG9wdGlvbnM6IGJvb2xlYW4gfCBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2sgfCBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LCBkZXBlbmRlbmNpZXM6IERpY3Rpb25hcnk8YW55PiA9IHt9KTogU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB8IFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QgfCBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB3cmFwU2tpcEpzRXJyb3JzQ2FsbGJhY2sob3B0aW9ucywgZGVwZW5kZW5jaWVzKTtcblxuICAgIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiB3cmFwU2tpcEpzRXJyb3JzQ2FsbGJhY2sgKG9wdGlvbnM6IFNraXBKc0Vycm9yc0NhbGxiYWNrLCBkZXBlbmRlbmNpZXM6IERpY3Rpb25hcnk8YW55Pik6IFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3Qge1xuICAgIHJldHVybiB7IGZuOiBvcHRpb25zLCBkZXBlbmRlbmNpZXMgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVTa2lwSnNFcnJvcnNPcHRpb25zIChvcHRpb25zOiBib29sZWFuIHwgU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB8IFNraXBKc0Vycm9yc0NhbGxiYWNrIHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCk6IGJvb2xlYW4gfCBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kIHtcbiAgICBvcHRpb25zID0gZW5zdXJlU2tpcEpzRXJyb3JzQ2FsbGJhY2tXcmFwcGVkKG9wdGlvbnMpO1xuXG4gICAgaWYgKGlzU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdChvcHRpb25zKSlcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNraXBKc0Vycm9yc0NhbGxiYWNrRnVuY3Rpb24ob3B0aW9ucyk7XG5cbiAgICBpZiAoaXNTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0KG9wdGlvbnMpKVxuICAgICAgICByZXR1cm4gY3JlYXRlU2tpcEpzRXJyb3JzT2JqZWN0RnVuY3Rpb24ocHJlcGFyZU9wdGlvbnNPYmplY3Qob3B0aW9ucykpO1xuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNraXBKc0Vycm9yc09iamVjdEZ1bmN0aW9uIChkZXBzOiBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0KTogRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZCB7XG4gICAgZGVwcy5tZXNzYWdlID0gZGVwcy5tZXNzYWdlIHx8IG5ldyBSZWdFeHAoJycpO1xuICAgIGRlcHMuc3RhY2sgICA9IGRlcHMuc3RhY2sgfHwgbmV3IFJlZ0V4cCgnJyk7XG4gICAgZGVwcy5wYWdlVXJsID0gZGVwcy5wYWdlVXJsIHx8IG5ldyBSZWdFeHAoJycpO1xuXG4gICAgY29uc3QgZnVuYyA9IG5ldyBGdW5jdGlvbignZXJyJywgU0tJUF9KU19FUlJPUlNfT0JKRUNUX0ZVTkNUSU9OKSBhcyBTa2lwSnNFcnJvcnNDYWxsYmFjaztcblxuICAgIGNvbnN0IGNhbGxiYWNrV3JhcHBlciA9IHdyYXBTa2lwSnNFcnJvcnNDYWxsYmFjayhmdW5jLCB7IGRlcHMgfSk7XG5cbiAgICByZXR1cm4gY3JlYXRlU2tpcEpzRXJyb3JzQ2FsbGJhY2tGdW5jdGlvbihjYWxsYmFja1dyYXBwZXIpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTa2lwSnNFcnJvcnNDYWxsYmFja0Z1bmN0aW9uICh7IGZuLCBkZXBlbmRlbmNpZXMgfTogU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCk6IEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQge1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnc2tpcEpzRXJyb3JzIGhhbmRsZXInO1xuICAgIGNvbnN0IG9wdGlvbnMgICAgPSB7IGRlcGVuZGVuY2llcyB9O1xuXG4gICAgcmV0dXJuIG5ldyBDbGllbnRGdW5jdGlvbkJ1aWxkZXIoZm4sIG9wdGlvbnMsIHtcbiAgICAgICAgaW5zdGFudGlhdGlvbjogbWV0aG9kTmFtZSxcbiAgICAgICAgZXhlY3V0aW9uOiAgICAgbWV0aG9kTmFtZSxcbiAgICB9KS5nZXRDb21tYW5kKCk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVPcHRpb25zT2JqZWN0IChvcHRzOiBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0KTogU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB7XG4gICAgb3B0cy5tZXNzYWdlID0gcGFyc2VSZWdFeHBTdHJpbmcob3B0cy5tZXNzYWdlKTtcbiAgICBvcHRzLnN0YWNrICAgPSBwYXJzZVJlZ0V4cFN0cmluZyhvcHRzLnN0YWNrKTtcbiAgICBvcHRzLnBhZ2VVcmwgPSBwYXJzZVJlZ0V4cFN0cmluZyhvcHRzLnBhZ2VVcmwpO1xuXG4gICAgcmV0dXJuIG9wdHM7XG59XG4iXX0=