UNPKG

@browserstack/testcafe

Version:

Automated browser testing for the modern web development stack.

65 lines 7.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const error_stack_parser_1 = __importDefault(require("error-stack-parser")); const create_stack_filter_1 = __importDefault(require("./create-stack-filter")); const ORIGINAL_STACK_TRACE_LIMIT = Error.stackTraceLimit; const STACK_TRACE_LIMIT = 200; const STACK_TRACE_LINE_RE = /^\s+at\s+.*$/; exports.default = { isEnabled: false, _isStackTraceLine(stackLine) { return stackLine.match(STACK_TRACE_LINE_RE); }, _eraseOriginalStack(error) { if (!error.stack) { error.stack = ''; return; } const stackLines = error.stack.split('\n'); let stackLinesCount = 0; while (stackLinesCount < stackLines.length && this._isStackTraceLine(stackLines[stackLines.length - 1 - stackLinesCount])) stackLinesCount++; error.stack = stackLines.slice(0, stackLines.length - stackLinesCount).join('\n'); if (stackLinesCount > 0) error.stack += '\n'; }, _getFrames(error) { try { return error_stack_parser_1.default.parse(error); } catch (e) { return []; } }, _renderFrameInfo(frames) { return frames.map(frame => frame.getSource()).join('\n'); }, get enabled() { return this.isEnabled; }, set enabled(val) { if (this.isEnabled === val) return; this.isEnabled = val; // NOTE: Babel errors may have really deep stacks, // so we increase stack trace capacity if (this.isEnabled) Error.stackTraceLimit = STACK_TRACE_LIMIT; else Error.stackTraceLimit = ORIGINAL_STACK_TRACE_LIMIT; }, cleanError(error) { let frames = this._getFrames(error); if (!frames.length) return error; this._eraseOriginalStack(error); frames = frames.filter(create_stack_filter_1.default(ORIGINAL_STACK_TRACE_LIMIT)); error.stack += this._renderFrameInfo(frames); return error; } }; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY2xlYW5pbmctaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvc3RhY2stY2xlYW5pbmctaG9vay5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRFQUFrRDtBQUNsRCxnRkFBc0Q7QUFHdEQsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO0FBQ3pELE1BQU0saUJBQWlCLEdBQVksR0FBRyxDQUFDO0FBQ3ZDLE1BQU0sbUJBQW1CLEdBQVUsY0FBYyxDQUFDO0FBR2xELGtCQUFlO0lBQ1gsU0FBUyxFQUFFLEtBQUs7SUFFaEIsaUJBQWlCLENBQUUsU0FBUztRQUN4QixPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsbUJBQW1CLENBQUUsS0FBSztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtZQUNkLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLE9BQU87U0FDVjtRQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUV4QixPQUFPLGVBQWUsR0FBRyxVQUFVLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7WUFDckgsZUFBZSxFQUFFLENBQUM7UUFFdEIsS0FBSyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRixJQUFJLGVBQWUsR0FBRyxDQUFDO1lBQ25CLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUUsS0FBSztRQUNiLElBQUk7WUFDQSxPQUFPLDRCQUFnQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QztRQUNELE9BQU8sQ0FBQyxFQUFFO1lBQ04sT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxNQUFNO1FBQ3BCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBRSxHQUFHO1FBQ1osSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEdBQUc7WUFDdEIsT0FBTztRQUVYLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBRXJCLGtEQUFrRDtRQUNsRCxzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUztZQUNkLEtBQUssQ0FBQyxlQUFlLEdBQUcsaUJBQWlCLENBQUM7O1lBRTFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsMEJBQTBCLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBRSxLQUFLO1FBQ2IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDZCxPQUFPLEtBQUssQ0FBQztRQUVqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsNkJBQWlCLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1FBRXRFLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVycm9yU3RhY2tQYXJzZXIgZnJvbSAnZXJyb3Itc3RhY2stcGFyc2VyJztcbmltcG9ydCBjcmVhdGVTdGFja0ZpbHRlciBmcm9tICcuL2NyZWF0ZS1zdGFjay1maWx0ZXInO1xuXG5cbmNvbnN0IE9SSUdJTkFMX1NUQUNLX1RSQUNFX0xJTUlUID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0O1xuY29uc3QgU1RBQ0tfVFJBQ0VfTElNSVQgICAgICAgICAgPSAyMDA7XG5jb25zdCBTVEFDS19UUkFDRV9MSU5FX1JFICAgICAgICA9IC9eXFxzK2F0XFxzKy4qJC87XG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGlzRW5hYmxlZDogZmFsc2UsXG5cbiAgICBfaXNTdGFja1RyYWNlTGluZSAoc3RhY2tMaW5lKSB7XG4gICAgICAgIHJldHVybiBzdGFja0xpbmUubWF0Y2goU1RBQ0tfVFJBQ0VfTElORV9SRSk7XG4gICAgfSxcblxuICAgIF9lcmFzZU9yaWdpbmFsU3RhY2sgKGVycm9yKSB7XG4gICAgICAgIGlmICghZXJyb3Iuc3RhY2spIHtcbiAgICAgICAgICAgIGVycm9yLnN0YWNrID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGFja0xpbmVzID0gZXJyb3Iuc3RhY2suc3BsaXQoJ1xcbicpO1xuXG4gICAgICAgIGxldCBzdGFja0xpbmVzQ291bnQgPSAwO1xuXG4gICAgICAgIHdoaWxlIChzdGFja0xpbmVzQ291bnQgPCBzdGFja0xpbmVzLmxlbmd0aCAmJiB0aGlzLl9pc1N0YWNrVHJhY2VMaW5lKHN0YWNrTGluZXNbc3RhY2tMaW5lcy5sZW5ndGggLSAxIC0gc3RhY2tMaW5lc0NvdW50XSkpXG4gICAgICAgICAgICBzdGFja0xpbmVzQ291bnQrKztcblxuICAgICAgICBlcnJvci5zdGFjayA9IHN0YWNrTGluZXMuc2xpY2UoMCwgc3RhY2tMaW5lcy5sZW5ndGggLSBzdGFja0xpbmVzQ291bnQpLmpvaW4oJ1xcbicpO1xuXG4gICAgICAgIGlmIChzdGFja0xpbmVzQ291bnQgPiAwKVxuICAgICAgICAgICAgZXJyb3Iuc3RhY2sgKz0gJ1xcbic7XG4gICAgfSxcblxuICAgIF9nZXRGcmFtZXMgKGVycm9yKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JTdGFja1BhcnNlci5wYXJzZShlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBfcmVuZGVyRnJhbWVJbmZvIChmcmFtZXMpIHtcbiAgICAgICAgcmV0dXJuIGZyYW1lcy5tYXAoZnJhbWUgPT4gZnJhbWUuZ2V0U291cmNlKCkpLmpvaW4oJ1xcbicpO1xuICAgIH0sXG5cbiAgICBnZXQgZW5hYmxlZCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRW5hYmxlZDtcbiAgICB9LFxuXG4gICAgc2V0IGVuYWJsZWQgKHZhbCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQgPT09IHZhbClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLmlzRW5hYmxlZCA9IHZhbDtcblxuICAgICAgICAvLyBOT1RFOiBCYWJlbCBlcnJvcnMgbWF5IGhhdmUgcmVhbGx5IGRlZXAgc3RhY2tzLFxuICAgICAgICAvLyBzbyB3ZSBpbmNyZWFzZSBzdGFjayB0cmFjZSBjYXBhY2l0eVxuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQpXG4gICAgICAgICAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBTVEFDS19UUkFDRV9MSU1JVDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gT1JJR0lOQUxfU1RBQ0tfVFJBQ0VfTElNSVQ7XG4gICAgfSxcblxuICAgIGNsZWFuRXJyb3IgKGVycm9yKSB7XG4gICAgICAgIGxldCBmcmFtZXMgPSB0aGlzLl9nZXRGcmFtZXMoZXJyb3IpO1xuXG4gICAgICAgIGlmICghZnJhbWVzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcblxuICAgICAgICB0aGlzLl9lcmFzZU9yaWdpbmFsU3RhY2soZXJyb3IpO1xuXG4gICAgICAgIGZyYW1lcyA9IGZyYW1lcy5maWx0ZXIoY3JlYXRlU3RhY2tGaWx0ZXIoT1JJR0lOQUxfU1RBQ0tfVFJBQ0VfTElNSVQpKTtcblxuICAgICAgICBlcnJvci5zdGFjayArPSB0aGlzLl9yZW5kZXJGcmFtZUluZm8oZnJhbWVzKTtcblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxufTtcbiJdfQ==