UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

45 lines 5.46 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 originalRequire = module_1.default.prototype.require; class LiveModeBootstrapper extends bootstrapper_1.default { constructor(runner, browserConnectionGateway) { super(browserConnectionGateway); this.runner = runner; } _getTests() { this._mockRequire(); return super._getTests() .then(result => { this._restoreRequire(); return result; }) .catch(err => { this._restoreRequire(); compiler_1.default.cleanUp(); this.runner.setBootstrappingError(err); }); } _mockRequire() { const runner = this.runner; // 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)) runner.emit(runner.REQUIRED_MODULE_FOUND_EVENT, { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpdmUvYm9vdHN0cmFwcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLG9EQUE0QjtBQUM1QiwwRUFBa0Q7QUFDbEQsMkRBQW1DO0FBRW5DLE1BQU0sZUFBZSxHQUFHLGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztBQUVqRCxNQUFNLG9CQUFxQixTQUFRLHNCQUFZO0lBQzNDLFlBQWEsTUFBTSxFQUFFLHdCQUF3QjtRQUN6QyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQixPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUU7YUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXZCLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUV2QixrQkFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRW5CLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsWUFBWTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFM0IseUVBQXlFO1FBQ3pFLGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFVLFFBQVE7WUFDekMsTUFBTSxRQUFRLEdBQUcsZ0JBQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWhFLElBQUksY0FBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBR2xFLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWU7UUFDWCxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO0lBQy9DLENBQUM7Q0FDSjtBQUVELGtCQUFlLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgTW9kdWxlIGZyb20gJ21vZHVsZSc7XG5pbXBvcnQgQm9vdHN0cmFwcGVyIGZyb20gJy4uL3J1bm5lci9ib290c3RyYXBwZXInO1xuaW1wb3J0IENvbXBpbGVyIGZyb20gJy4uL2NvbXBpbGVyJztcblxuY29uc3Qgb3JpZ2luYWxSZXF1aXJlID0gTW9kdWxlLnByb3RvdHlwZS5yZXF1aXJlO1xuXG5jbGFzcyBMaXZlTW9kZUJvb3RzdHJhcHBlciBleHRlbmRzIEJvb3RzdHJhcHBlciB7XG4gICAgY29uc3RydWN0b3IgKHJ1bm5lciwgYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5KSB7XG4gICAgICAgIHN1cGVyKGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSk7XG5cbiAgICAgICAgdGhpcy5ydW5uZXIgPSBydW5uZXI7XG4gICAgfVxuXG4gICAgX2dldFRlc3RzICgpIHtcbiAgICAgICAgdGhpcy5fbW9ja1JlcXVpcmUoKTtcblxuICAgICAgICByZXR1cm4gc3VwZXIuX2dldFRlc3RzKClcbiAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yZVJlcXVpcmUoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yZVJlcXVpcmUoKTtcblxuICAgICAgICAgICAgICAgIENvbXBpbGVyLmNsZWFuVXAoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucnVubmVyLnNldEJvb3RzdHJhcHBpbmdFcnJvcihlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX21vY2tSZXF1aXJlICgpIHtcbiAgICAgICAgY29uc3QgcnVubmVyID0gdGhpcy5ydW5uZXI7XG5cbiAgICAgICAgLy8gTk9ERTogd2UgcmVwbGFjZSB0aGUgYHJlcXVpcmVgIG1ldGhvZCB0byBhZGQgcmVxdWlyZWQgZmlsZXMgdG8gd2F0Y2hlclxuICAgICAgICBNb2R1bGUucHJvdG90eXBlLnJlcXVpcmUgPSBmdW5jdGlvbiAoZmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWUoZmlsZVBhdGgsIHRoaXMsIGZhbHNlKTtcblxuICAgICAgICAgICAgaWYgKHBhdGguaXNBYnNvbHV0ZShmaWxlbmFtZSkgfHwgL15cXC5cXC4/Wy9cXFxcXS8udGVzdChmaWxlbmFtZSkpXG4gICAgICAgICAgICAgICAgcnVubmVyLmVtaXQocnVubmVyLlJFUVVJUkVEX01PRFVMRV9GT1VORF9FVkVOVCwgeyBmaWxlbmFtZSB9KTtcblxuXG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxSZXF1aXJlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX3Jlc3RvcmVSZXF1aXJlICgpIHtcbiAgICAgICAgTW9kdWxlLnByb3RvdHlwZS5yZXF1aXJlID0gb3JpZ2luYWxSZXF1aXJlO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGl2ZU1vZGVCb290c3RyYXBwZXI7XG4iXX0=