UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

62 lines (61 loc) 10.1 kB
"use strict"; 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=