UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

83 lines 9.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const compiler_1 = __importDefault(require("../raw/compiler")); const factory_1 = require("./commands/factory"); const switch_to_iframe_1 = require("./commands/switch-to-iframe"); const switch_to_main_window_1 = require("./commands/switch-to-main-window"); const TEST_BASE = JSON.stringify({ fixtures: [ { name: 'New Fixture', tests: [ { name: 'New Test', commands: [], }, ], }, ], }); class DevToolsTestFileCompiler extends compiler_1.default { constructor() { super(...arguments); this.raw = { fixtures: [] }; } _hasTests() { return true; } get _fixture() { return this.raw.fixtures[0]; } get _test() { return this._fixture.tests[0]; } getSupportedExtension() { return '.json'; } compile(code, filename) { this.raw = JSON.parse(TEST_BASE); const preprocessedCode = this._preProcess(code, filename); if (!preprocessedCode) return []; return super.compile(preprocessedCode, filename); } _preProcess(code, filename) { let parsedCode = null; try { parsedCode = JSON.parse(code); } catch (err) { return null; } this._fixture.name = parsedCode.title; this._test.name = parsedCode.title; if (!parsedCode.steps) return null; parsedCode.steps.forEach((step, i) => this._processStep(step, filename, i)); return JSON.stringify(this.raw); } _processStep(step, filename, i) { const transformer = factory_1.CommandTransformerFactory.create(step, filename, i); if (transformer) { this._onBeforeCommandExecute(step); this._test.commands.push(transformer.transform()); this._onAfterCommandExecute(step); } } _onBeforeCommandExecute(step) { if (!step.frame) return; const frames = step.frame; for (const frame of frames) this._test.commands.push(new switch_to_iframe_1.SwitchToIframeCommandTransformer({ frame }, 0).transform()); } _onAfterCommandExecute(step) { this._test.commands.push(new switch_to_main_window_1.SwitchToMainWindowCommandTransformer(step, 0).transform()); } } exports.default = DevToolsTestFileCompiler; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvZGV2LXRvb2xzL2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0RBQWtEO0FBRWxELGdEQUErRDtBQUMvRCxrRUFBK0U7QUFDL0UsNEVBQXdGO0FBU3hGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0IsUUFBUSxFQUFFO1FBQ047WUFDSSxJQUFJLEVBQUcsYUFBYTtZQUNwQixLQUFLLEVBQUU7Z0JBQ0g7b0JBQ0ksSUFBSSxFQUFNLFVBQVU7b0JBQ3BCLFFBQVEsRUFBRSxFQUFFO2lCQUNmO2FBQ0o7U0FDSjtLQUNKO0NBQ0osQ0FBQyxDQUFDO0FBRUgsTUFBcUIsd0JBQXlCLFNBQVEsa0JBQW1CO0lBQXpFOztRQUNZLFFBQUcsR0FBaUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7SUF5RWpELENBQUM7SUF2RUcsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sQ0FBRSxJQUFZLEVBQUUsUUFBZ0I7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLGdCQUFnQjtZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUVkLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFFLElBQVksRUFBRSxRQUFnQjtRQUN2QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSTtZQUNBLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBTSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRXRDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztZQUNqQixPQUFPLElBQUksQ0FBQztRQUVoQixVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQTBCLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZLENBQUUsSUFBMEIsRUFBRSxRQUFlLEVBQUUsQ0FBUztRQUNoRSxNQUFNLFdBQVcsR0FBRyxtQ0FBeUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4RSxJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELHVCQUF1QixDQUFFLElBQTBCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUNYLE9BQU87UUFFWCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBaUIsQ0FBQztRQUV0QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU07WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksbURBQWdDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxzQkFBc0IsQ0FBRSxJQUEwQjtRQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSw0REFBb0MsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDO0NBQ0o7QUExRUQsMkNBMEVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJhd1Rlc3RGaWxlQ29tcGlsZXIgZnJvbSAnLi4vcmF3L2NvbXBpbGVyJztcbmltcG9ydCBUZXN0IGZyb20gJy4uLy4uLy4uLy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgeyBDb21tYW5kVHJhbnNmb3JtZXJGYWN0b3J5IH0gZnJvbSAnLi9jb21tYW5kcy9mYWN0b3J5JztcbmltcG9ydCB7IFN3aXRjaFRvSWZyYW1lQ29tbWFuZFRyYW5zZm9ybWVyIH0gZnJvbSAnLi9jb21tYW5kcy9zd2l0Y2gtdG8taWZyYW1lJztcbmltcG9ydCB7IFN3aXRjaFRvTWFpbldpbmRvd0NvbW1hbmRUcmFuc2Zvcm1lciB9IGZyb20gJy4vY29tbWFuZHMvc3dpdGNoLXRvLW1haW4td2luZG93JztcblxuaW1wb3J0IHtcbiAgICBEZXZUb29sc1JlY29yZGVyU3RlcCxcbiAgICBSYXdGaXh0dXJlLFxuICAgIFJhd1JlY29yZGluZyxcbiAgICBSYXdUZXN0LFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgVEVTVF9CQVNFID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZpeHR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICAnTmV3IEZpeHR1cmUnLFxuICAgICAgICAgICAgdGVzdHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICAgICAnTmV3IFRlc3QnLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kczogW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXZUb29sc1Rlc3RGaWxlQ29tcGlsZXIgZXh0ZW5kcyBSYXdUZXN0RmlsZUNvbXBpbGVyIHtcbiAgICBwcml2YXRlIHJhdzogUmF3UmVjb3JkaW5nID0geyBmaXh0dXJlczogW10gfTtcblxuICAgIF9oYXNUZXN0cyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGdldCBfZml4dHVyZSAoKTogUmF3Rml4dHVyZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhdy5maXh0dXJlc1swXTtcbiAgICB9XG5cbiAgICBnZXQgX3Rlc3QgKCk6IFJhd1Rlc3Qge1xuICAgICAgICByZXR1cm4gdGhpcy5fZml4dHVyZS50ZXN0c1swXTtcbiAgICB9XG5cbiAgICBnZXRTdXBwb3J0ZWRFeHRlbnNpb24gKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnLmpzb24nO1xuICAgIH1cblxuICAgIGNvbXBpbGUgKGNvZGU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IFRlc3RbXSB7XG4gICAgICAgIHRoaXMucmF3ID0gSlNPTi5wYXJzZShURVNUX0JBU0UpO1xuXG4gICAgICAgIGNvbnN0IHByZXByb2Nlc3NlZENvZGUgPSB0aGlzLl9wcmVQcm9jZXNzKGNvZGUsIGZpbGVuYW1lKTtcblxuICAgICAgICBpZiAoIXByZXByb2Nlc3NlZENvZGUpXG4gICAgICAgICAgICByZXR1cm4gW107XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmNvbXBpbGUocHJlcHJvY2Vzc2VkQ29kZSwgZmlsZW5hbWUpO1xuICAgIH1cblxuICAgIF9wcmVQcm9jZXNzIChjb2RlOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgbGV0IHBhcnNlZENvZGUgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwYXJzZWRDb2RlID0gSlNPTi5wYXJzZShjb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZpeHR1cmUubmFtZSA9IHBhcnNlZENvZGUudGl0bGU7XG4gICAgICAgIHRoaXMuX3Rlc3QubmFtZSAgICA9IHBhcnNlZENvZGUudGl0bGU7XG5cbiAgICAgICAgaWYgKCFwYXJzZWRDb2RlLnN0ZXBzKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcGFyc2VkQ29kZS5zdGVwcy5mb3JFYWNoKChzdGVwOiBEZXZUb29sc1JlY29yZGVyU3RlcCwgaTogbnVtYmVyKSA9PiB0aGlzLl9wcm9jZXNzU3RlcChzdGVwLCBmaWxlbmFtZSwgaSkpO1xuXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnJhdyk7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NTdGVwIChzdGVwOiBEZXZUb29sc1JlY29yZGVyU3RlcCwgZmlsZW5hbWU6c3RyaW5nLCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBDb21tYW5kVHJhbnNmb3JtZXJGYWN0b3J5LmNyZWF0ZShzdGVwLCBmaWxlbmFtZSwgaSk7XG5cbiAgICAgICAgaWYgKHRyYW5zZm9ybWVyKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkJlZm9yZUNvbW1hbmRFeGVjdXRlKHN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fdGVzdC5jb21tYW5kcy5wdXNoKHRyYW5zZm9ybWVyLnRyYW5zZm9ybSgpKTtcbiAgICAgICAgICAgIHRoaXMuX29uQWZ0ZXJDb21tYW5kRXhlY3V0ZShzdGVwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9vbkJlZm9yZUNvbW1hbmRFeGVjdXRlIChzdGVwOiBEZXZUb29sc1JlY29yZGVyU3RlcCk6IHZvaWQge1xuICAgICAgICBpZiAoIXN0ZXAuZnJhbWUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZnJhbWVzID0gc3RlcC5mcmFtZSBhcyBudW1iZXJbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGZyYW1lIG9mIGZyYW1lcylcbiAgICAgICAgICAgIHRoaXMuX3Rlc3QuY29tbWFuZHMucHVzaChuZXcgU3dpdGNoVG9JZnJhbWVDb21tYW5kVHJhbnNmb3JtZXIoeyBmcmFtZSB9LCAwKS50cmFuc2Zvcm0oKSk7XG4gICAgfVxuXG4gICAgX29uQWZ0ZXJDb21tYW5kRXhlY3V0ZSAoc3RlcDogRGV2VG9vbHNSZWNvcmRlclN0ZXApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGVzdC5jb21tYW5kcy5wdXNoKG5ldyBTd2l0Y2hUb01haW5XaW5kb3dDb21tYW5kVHJhbnNmb3JtZXIoc3RlcCwgMCkudHJhbnNmb3JtKCkpO1xuICAgIH1cbn1cbiJdfQ==