UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

79 lines 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 }); const chalk_1 = __importDefault(require("chalk")); const lodash_1 = require("lodash"); const log_update_async_hook_1 = __importDefault(require("log-update-async-hook")); const create_stack_filter_1 = __importDefault(require("../errors/create-stack-filter")); exports.default = { messages: [], debugLogging: false, streamsOverridden: false, _overrideStream(stream) { const initialWrite = stream.write; stream.write = (chunk, encoding, cb) => { if (this.debugLogging) initialWrite.call(stream, chunk, encoding, cb); else { this.debugLogging = true; log_update_async_hook_1.default.clear(); log_update_async_hook_1.default.done(); initialWrite.call(stream, chunk, encoding, cb); setTimeout(() => this._showAllBreakpoints(), 0); this.debugLogging = false; } }; }, _overrideStreams() { this._overrideStream(process.stdout); this._overrideStream(process.stderr); this.streamsOverridden = true; }, _getMessageAsString() { let string = ''; for (const message of this.messages) string += message.frame; return string; }, _showAllBreakpoints() { if (!this.messages.length) return; this.debugLogging = true; log_update_async_hook_1.default(this._getMessageAsString()); this.debugLogging = false; }, showBreakpoint(testRunId, userAgent, callsite, testError) { if (!this.streamsOverridden) this._overrideStreams(); // NOTE: Raw API does not have callsite. const hasCallsite = callsite && callsite.renderSync; const callsiteStr = hasCallsite ? callsite.renderSync({ frameSize: 1, stackFilter: create_stack_filter_1.default(Error.stackTraceLimit), stack: false }) : ''; const frame = `\n` + `----\n` + `${userAgent}\n` + chalk_1.default.yellow(testError ? 'DEBUGGER PAUSE ON FAILED TEST:' : 'DEBUGGER PAUSE:') + `\n` + `${testError ? testError : callsiteStr}\n` + `----\n`; const message = { testRunId, frame }; const index = lodash_1.findIndex(this.messages, { testRunId }); if (index === -1) this.messages.push(message); else this.messages[index] = message; this._showAllBreakpoints(); }, hideBreakpoint(testRunId) { const index = lodash_1.findIndex(this.messages, { testRunId }); if (index !== -1) this.messages.splice(index, 1); this._showAllBreakpoints(); } }; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vdGlmaWNhdGlvbnMvZGVidWctbG9nZ2VyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLG1DQUFtQztBQUNuQyxrRkFBOEM7QUFDOUMsd0ZBQThEO0FBRTlELGtCQUFlO0lBQ1gsUUFBUSxFQUFFLEVBQUU7SUFFWixZQUFZLEVBQUUsS0FBSztJQUVuQixpQkFBaUIsRUFBRSxLQUFLO0lBRXhCLGVBQWUsQ0FBRSxNQUFNO1FBQ25CLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFbEMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxJQUFJLENBQUMsWUFBWTtnQkFDakIsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDOUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBRXpCLCtCQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLCtCQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRWpCLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBRS9DLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7YUFDN0I7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVE7WUFDL0IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFNUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDckIsT0FBTztRQUVYLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLCtCQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYyxDQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFNUIsd0NBQXdDO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDO1FBRXBELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNsRCxTQUFTLEVBQUksQ0FBQztZQUNkLFdBQVcsRUFBRSw2QkFBaUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQ3JELEtBQUssRUFBUSxLQUFLO1NBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVIsTUFBTSxLQUFLLEdBQUcsSUFBSTtZQUNOLFFBQVE7WUFDUixHQUFHLFNBQVMsSUFBSTtZQUNoQixlQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSTtZQUNyRixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUk7WUFDMUMsUUFBUSxDQUFDO1FBRXJCLE1BQU0sT0FBTyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFLLGtCQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFeEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7O1lBRTVCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBRW5DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUUsU0FBUztRQUNyQixNQUFNLEtBQUssR0FBRyxrQkFBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXRELElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBmaW5kSW5kZXggfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZ1VwZGF0ZSBmcm9tICdsb2ctdXBkYXRlLWFzeW5jLWhvb2snO1xuaW1wb3J0IGNyZWF0ZVN0YWNrRmlsdGVyIGZyb20gJy4uL2Vycm9ycy9jcmVhdGUtc3RhY2stZmlsdGVyJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1lc3NhZ2VzOiBbXSxcblxuICAgIGRlYnVnTG9nZ2luZzogZmFsc2UsXG5cbiAgICBzdHJlYW1zT3ZlcnJpZGRlbjogZmFsc2UsXG5cbiAgICBfb3ZlcnJpZGVTdHJlYW0gKHN0cmVhbSkge1xuICAgICAgICBjb25zdCBpbml0aWFsV3JpdGUgPSBzdHJlYW0ud3JpdGU7XG5cbiAgICAgICAgc3RyZWFtLndyaXRlID0gKGNodW5rLCBlbmNvZGluZywgY2IpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnTG9nZ2luZylcbiAgICAgICAgICAgICAgICBpbml0aWFsV3JpdGUuY2FsbChzdHJlYW0sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgbG9nVXBkYXRlLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgbG9nVXBkYXRlLmRvbmUoKTtcblxuICAgICAgICAgICAgICAgIGluaXRpYWxXcml0ZS5jYWxsKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBjYik7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3Nob3dBbGxCcmVha3BvaW50cygpLCAwKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIF9vdmVycmlkZVN0cmVhbXMgKCkge1xuICAgICAgICB0aGlzLl9vdmVycmlkZVN0cmVhbShwcm9jZXNzLnN0ZG91dCk7XG4gICAgICAgIHRoaXMuX292ZXJyaWRlU3RyZWFtKHByb2Nlc3Muc3RkZXJyKTtcblxuICAgICAgICB0aGlzLnN0cmVhbXNPdmVycmlkZGVuID0gdHJ1ZTtcbiAgICB9LFxuXG4gICAgX2dldE1lc3NhZ2VBc1N0cmluZyAoKSB7XG4gICAgICAgIGxldCBzdHJpbmcgPSAnJztcblxuICAgICAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgdGhpcy5tZXNzYWdlcylcbiAgICAgICAgICAgIHN0cmluZyArPSBtZXNzYWdlLmZyYW1lO1xuXG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgfSxcblxuICAgIF9zaG93QWxsQnJlYWtwb2ludHMgKCkge1xuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZGVidWdMb2dnaW5nID0gdHJ1ZTtcbiAgICAgICAgbG9nVXBkYXRlKHRoaXMuX2dldE1lc3NhZ2VBc1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dpbmcgPSBmYWxzZTtcbiAgICB9LFxuXG4gICAgc2hvd0JyZWFrcG9pbnQgKHRlc3RSdW5JZCwgdXNlckFnZW50LCBjYWxsc2l0ZSwgdGVzdEVycm9yKSB7XG4gICAgICAgIGlmICghdGhpcy5zdHJlYW1zT3ZlcnJpZGRlbilcbiAgICAgICAgICAgIHRoaXMuX292ZXJyaWRlU3RyZWFtcygpO1xuXG4gICAgICAgIC8vIE5PVEU6IFJhdyBBUEkgZG9lcyBub3QgaGF2ZSBjYWxsc2l0ZS5cbiAgICAgICAgY29uc3QgaGFzQ2FsbHNpdGUgPSBjYWxsc2l0ZSAmJiBjYWxsc2l0ZS5yZW5kZXJTeW5jO1xuXG4gICAgICAgIGNvbnN0IGNhbGxzaXRlU3RyID0gaGFzQ2FsbHNpdGUgPyBjYWxsc2l0ZS5yZW5kZXJTeW5jKHtcbiAgICAgICAgICAgIGZyYW1lU2l6ZTogICAxLFxuICAgICAgICAgICAgc3RhY2tGaWx0ZXI6IGNyZWF0ZVN0YWNrRmlsdGVyKEVycm9yLnN0YWNrVHJhY2VMaW1pdCksXG4gICAgICAgICAgICBzdGFjazogICAgICAgZmFsc2VcbiAgICAgICAgfSkgOiAnJztcblxuICAgICAgICBjb25zdCBmcmFtZSA9IGBcXG5gICtcbiAgICAgICAgICAgICAgICAgICAgYC0tLS1cXG5gICtcbiAgICAgICAgICAgICAgICAgICAgYCR7dXNlckFnZW50fVxcbmAgK1xuICAgICAgICAgICAgICAgICAgICBjaGFsay55ZWxsb3codGVzdEVycm9yID8gJ0RFQlVHR0VSIFBBVVNFIE9OIEZBSUxFRCBURVNUOicgOiAnREVCVUdHRVIgUEFVU0U6JykgKyBgXFxuYCArXG4gICAgICAgICAgICAgICAgICAgIGAke3Rlc3RFcnJvciA/IHRlc3RFcnJvciA6IGNhbGxzaXRlU3RyfVxcbmAgK1xuICAgICAgICAgICAgICAgICAgICBgLS0tLVxcbmA7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHsgdGVzdFJ1bklkLCBmcmFtZSB9O1xuICAgICAgICBjb25zdCBpbmRleCAgID0gZmluZEluZGV4KHRoaXMubWVzc2FnZXMsIHsgdGVzdFJ1bklkIH0pO1xuXG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNbaW5kZXhdID0gbWVzc2FnZTtcblxuICAgICAgICB0aGlzLl9zaG93QWxsQnJlYWtwb2ludHMoKTtcbiAgICB9LFxuXG4gICAgaGlkZUJyZWFrcG9pbnQgKHRlc3RSdW5JZCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IGZpbmRJbmRleCh0aGlzLm1lc3NhZ2VzLCB7IHRlc3RSdW5JZCB9KTtcblxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKVxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIHRoaXMuX3Nob3dBbGxCcmVha3BvaW50cygpO1xuICAgIH1cbn07XG4iXX0=