testcafe
Version:
Automated browser testing for the modern web development stack.
83 lines • 9.66 kB
JavaScript
;
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==