@browserstack/testcafe
Version:
Automated browser testing for the modern web development stack.
65 lines • 7.57 kB
JavaScript
;
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==