UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

47 lines 5.84 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const module_1 = __importDefault(require("module")); const bootstrapper_1 = __importDefault(require("../runner/bootstrapper")); const compiler_1 = __importDefault(require("../compiler")); const cache_proxy_1 = __importDefault(require("./../compiler/test-file/cache-proxy")); const originalRequire = module_1.default.prototype.require; class LiveModeBootstrapper extends bootstrapper_1.default { constructor(runner, browserConnectionGateway, messageBus) { super({ browserConnectionGateway, messageBus }); this.runner = runner; cache_proxy_1.default.preventCaching(); } _getTests(id) { this._mockRequire(); return super._getTests(id) .then(result => { this._restoreRequire(); return result; }) .catch(err => { this._restoreRequire(); compiler_1.default.cleanUp(); this.runner.setBootstrappingError(err); }); } _mockRequire() { const controller = this.runner.controller; // NODE: we replace the `require` method to add required files to watcher module_1.default.prototype.require = function (filePath) { const filename = module_1.default._resolveFilename(filePath, this, false); if (path_1.default.isAbsolute(filename) || /^\.\.?[/\\]/.test(filename)) controller.addFileToWatches(filename); return originalRequire.apply(this, arguments); }; } _restoreRequire() { module_1.default.prototype.require = originalRequire; } } exports.default = LiveModeBootstrapper; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpdmUvYm9vdHN0cmFwcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLG9EQUE0QjtBQUM1QiwwRUFBa0Q7QUFDbEQsMkRBQW1DO0FBQ25DLHNGQUE2RDtBQUU3RCxNQUFNLGVBQWUsR0FBRyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7QUFFakQsTUFBTSxvQkFBcUIsU0FBUSxzQkFBWTtJQUMzQyxZQUFhLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxVQUFVO1FBQ3JELEtBQUssQ0FBQyxFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIscUJBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUyxDQUFFLEVBQUU7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzthQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFdkIsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXZCLGtCQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxZQUFZO1FBQ1IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFFMUMseUVBQXlFO1FBQ3pFLGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFVLFFBQVE7WUFDekMsTUFBTSxRQUFRLEdBQUcsZ0JBQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWhFLElBQUksY0FBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDekQsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRzFDLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWU7UUFDWCxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO0lBQy9DLENBQUM7Q0FDSjtBQUVELGtCQUFlLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgTW9kdWxlIGZyb20gJ21vZHVsZSc7XG5pbXBvcnQgQm9vdHN0cmFwcGVyIGZyb20gJy4uL3J1bm5lci9ib290c3RyYXBwZXInO1xuaW1wb3J0IENvbXBpbGVyIGZyb20gJy4uL2NvbXBpbGVyJztcbmltcG9ydCBjYWNoZVByb3h5IGZyb20gJy4vLi4vY29tcGlsZXIvdGVzdC1maWxlL2NhY2hlLXByb3h5JztcblxuY29uc3Qgb3JpZ2luYWxSZXF1aXJlID0gTW9kdWxlLnByb3RvdHlwZS5yZXF1aXJlO1xuXG5jbGFzcyBMaXZlTW9kZUJvb3RzdHJhcHBlciBleHRlbmRzIEJvb3RzdHJhcHBlciB7XG4gICAgY29uc3RydWN0b3IgKHJ1bm5lciwgYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LCBtZXNzYWdlQnVzKSB7XG4gICAgICAgIHN1cGVyKHsgYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LCBtZXNzYWdlQnVzIH0pO1xuXG4gICAgICAgIHRoaXMucnVubmVyID0gcnVubmVyO1xuXG4gICAgICAgIGNhY2hlUHJveHkucHJldmVudENhY2hpbmcoKTtcbiAgICB9XG5cbiAgICBfZ2V0VGVzdHMgKGlkKSB7XG4gICAgICAgIHRoaXMuX21vY2tSZXF1aXJlKCk7XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLl9nZXRUZXN0cyhpZClcbiAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yZVJlcXVpcmUoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yZVJlcXVpcmUoKTtcblxuICAgICAgICAgICAgICAgIENvbXBpbGVyLmNsZWFuVXAoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucnVubmVyLnNldEJvb3RzdHJhcHBpbmdFcnJvcihlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX21vY2tSZXF1aXJlICgpIHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IHRoaXMucnVubmVyLmNvbnRyb2xsZXI7XG5cbiAgICAgICAgLy8gTk9ERTogd2UgcmVwbGFjZSB0aGUgYHJlcXVpcmVgIG1ldGhvZCB0byBhZGQgcmVxdWlyZWQgZmlsZXMgdG8gd2F0Y2hlclxuICAgICAgICBNb2R1bGUucHJvdG90eXBlLnJlcXVpcmUgPSBmdW5jdGlvbiAoZmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWUoZmlsZVBhdGgsIHRoaXMsIGZhbHNlKTtcblxuICAgICAgICAgICAgaWYgKHBhdGguaXNBYnNvbHV0ZShmaWxlbmFtZSkgfHwgL15cXC5cXC4/Wy9cXFxcXS8udGVzdChmaWxlbmFtZSkpXG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5hZGRGaWxlVG9XYXRjaGVzKGZpbGVuYW1lKTtcblxuXG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxSZXF1aXJlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX3Jlc3RvcmVSZXF1aXJlICgpIHtcbiAgICAgICAgTW9kdWxlLnByb3RvdHlwZS5yZXF1aXJlID0gb3JpZ2luYWxSZXF1aXJlO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGl2ZU1vZGVCb290c3RyYXBwZXI7XG4iXX0=