UNPKG

@browserstack/testcafe

Version:

Automated browser testing for the modern web development stack.

87 lines 11.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const base_1 = __importDefault(require("../base")); const runtime_1 = require("../../../errors/runtime"); const types_1 = require("../../../errors/types"); const test_file_1 = __importDefault(require("../../../api/structure/test-file")); const fixture_1 = __importDefault(require("../../../api/structure/fixture")); const test_1 = __importDefault(require("../../../api/structure/test")); const from_object_1 = __importDefault(require("../../../test-run/commands/from-object")); class RawTestFileCompiler extends base_1.default { static _createTestFn(commands) { return async (t) => { for (let i = 0; i < commands.length; i++) { const callsite = commands[i] && commands[i].callsite; let command = null; try { command = from_object_1.default(commands[i], t.testRun); await t.testRun.executeCommand(command, callsite); } catch (err) { err.callsite = callsite; throw err; } } }; } static _assignCommonTestingUnitProperties(src, dest) { if (src.pageUrl) dest.page(src.pageUrl); if (src.authCredentials) dest.httpAuth(src.authCredentials); /* eslint-disable no-unused-expressions */ if (src.only) dest.only; if (src.skip) dest.skip; if (src.disablePageReloads) dest.disablePageReloads; if (src.enablePageReloads) dest.enablePageReloads; /* eslint-enable no-unused-expressions */ } static _addTest(testFile, src) { const test = new test_1.default(testFile); test(src.name, RawTestFileCompiler._createTestFn(src.commands)); RawTestFileCompiler._assignCommonTestingUnitProperties(src, test); if (src.beforeCommands) test.before(RawTestFileCompiler._createTestFn(src.beforeCommands)); if (src.afterCommands) test.after(RawTestFileCompiler._createTestFn(src.afterCommands)); return test; } static _addFixture(testFile, src) { const fixture = new fixture_1.default(testFile); fixture(src.name); RawTestFileCompiler._assignCommonTestingUnitProperties(src, fixture); if (src.beforeEachCommands) fixture.beforeEach(RawTestFileCompiler._createTestFn(src.beforeEachCommands)); if (src.afterEachCommands) fixture.afterEach(RawTestFileCompiler._createTestFn(src.afterEachCommands)); src.tests.forEach(testSrc => RawTestFileCompiler._addTest(testFile, testSrc)); } _hasTests() { return true; } getSupportedExtension() { return '.testcafe'; } compile(code, filename) { const testFile = new test_file_1.default(filename); let data = null; try { data = JSON.parse(code); data.fixtures.forEach(fixtureSrc => RawTestFileCompiler._addFixture(testFile, fixtureSrc)); return testFile.getTests(); } catch (err) { throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotParseRawFile, filename, err.toString()); } } } exports.default = RawTestFileCompiler; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBpbGVyL3Rlc3QtZmlsZS9mb3JtYXRzL3Jhdy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQUEyQztBQUMzQyxxREFBdUQ7QUFDdkQsaURBQXVEO0FBQ3ZELGlGQUF3RDtBQUN4RCw2RUFBcUQ7QUFDckQsdUVBQStDO0FBQy9DLHlGQUE2RTtBQUU3RSxNQUFxQixtQkFBb0IsU0FBUSxjQUFvQjtJQUNqRSxNQUFNLENBQUMsYUFBYSxDQUFFLFFBQVE7UUFDMUIsT0FBTyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3JELElBQUksT0FBTyxHQUFJLElBQUksQ0FBQztnQkFFcEIsSUFBSTtvQkFDQSxPQUFPLEdBQUcscUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFMUQsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7aUJBQ3JEO2dCQUNELE9BQU8sR0FBRyxFQUFFO29CQUNSLEdBQUcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO29CQUN4QixNQUFNLEdBQUcsQ0FBQztpQkFDYjthQUNKO1FBQ0wsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBRSxHQUFHLEVBQUUsSUFBSTtRQUNoRCxJQUFJLEdBQUcsQ0FBQyxPQUFPO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMs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QUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUN2RjtJQUNMLENBQUM7Q0FDSjtBQWxHRCxzQ0FrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGVzdEZpbGVDb21waWxlckJhc2UgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgVGVzdEZpbGUgZnJvbSAnLi4vLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0LWZpbGUnO1xuaW1wb3J0IEZpeHR1cmUgZnJvbSAnLi4vLi4vLi4vYXBpL3N0cnVjdHVyZS9maXh0dXJlJztcbmltcG9ydCBUZXN0IGZyb20gJy4uLy4uLy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgY3JlYXRlQ29tbWFuZEZyb21PYmplY3QgZnJvbSAnLi4vLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvZnJvbS1vYmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXdUZXN0RmlsZUNvbXBpbGVyIGV4dGVuZHMgVGVzdEZpbGVDb21waWxlckJhc2Uge1xuICAgIHN0YXRpYyBfY3JlYXRlVGVzdEZuIChjb21tYW5kcykge1xuICAgICAgICByZXR1cm4gYXN5bmMgdCA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbW1hbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FsbHNpdGUgPSBjb21tYW5kc1tpXSAmJiBjb21tYW5kc1tpXS5jYWxsc2l0ZTtcbiAgICAgICAgICAgICAgICBsZXQgY29tbWFuZCAgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGNyZWF0ZUNvbW1hbmRGcm9tT2JqZWN0KGNvbW1hbmRzW2ldLCB0LnRlc3RSdW4pO1xuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHQudGVzdFJ1bi5leGVjdXRlQ29tbWFuZChjb21tYW5kLCBjYWxsc2l0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyLmNhbGxzaXRlID0gY2FsbHNpdGU7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc3RhdGljIF9hc3NpZ25Db21tb25UZXN0aW5nVW5pdFByb3BlcnRpZXMgKHNyYywgZGVzdCkge1xuICAgICAgICBpZiAoc3JjLnBhZ2VVcmwpXG4gICAgICAgICAgICBkZXN0LnBhZ2Uoc3JjLnBhZ2VVcmwpO1xuXG4gICAgICAgIGlmIChzcmMuYXV0aENyZWRlbnRpYWxzKVxuICAgICAgICAgICAgZGVzdC5odHRwQXV0aChzcmMuYXV0aENyZWRlbnRpYWxzKTtcblxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9cbiAgICAgICAgaWYgKHNyYy5vbmx5KVxuICAgICAgICAgICAgZGVzdC5vbmx5O1xuXG4gICAgICAgIGlmIChzcmMuc2tpcClcbiAgICAgICAgICAgIGRlc3Quc2tpcDtcblxuICAgICAgICBpZiAoc3JjLmRpc2FibGVQYWdlUmVsb2FkcylcbiAgICAgICAgICAgIGRlc3QuZGlzYWJsZVBhZ2VSZWxvYWRzO1xuXG4gICAgICAgIGlmIChzcmMuZW5hYmxlUGFnZVJlbG9hZHMpXG4gICAgICAgICAgICBkZXN0LmVuYWJsZVBhZ2VSZWxvYWRzO1xuICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuICAgIH1cblxuICAgIHN0YXRpYyBfYWRkVGVzdCAodGVzdEZpbGUsIHNyYykge1xuICAgICAgICBjb25zdCB0ZXN0ID0gbmV3IFRlc3QodGVzdEZpbGUpO1xuXG4gICAgICAgIHRlc3Qoc3JjLm5hbWUsIFJhd1Rlc3RGaWxlQ29tcGlsZXIuX2NyZWF0ZVRlc3RGbihzcmMuY29tbWFuZHMpKTtcblxuICAgICAgICBSYXdUZXN0RmlsZUNvbXBpbGVyLl9hc3NpZ25Db21tb25UZXN0aW5nVW5pdFByb3BlcnRpZXMoc3JjLCB0ZXN0KTtcblxuICAgICAgICBpZiAoc3JjLmJlZm9yZUNvbW1hbmRzKVxuICAgICAgICAgICAgdGVzdC5iZWZvcmUoUmF3VGVzdEZpbGVDb21waWxlci5fY3JlYXRlVGVzdEZuKHNyYy5iZWZvcmVDb21tYW5kcykpO1xuXG4gICAgICAgIGlmIChzcmMuYWZ0ZXJDb21tYW5kcylcbiAgICAgICAgICAgIHRlc3QuYWZ0ZXIoUmF3VGVzdEZpbGVDb21waWxlci5fY3JlYXRlVGVzdEZuKHNyYy5hZnRlckNvbW1hbmRzKSk7XG5cbiAgICAgICAgcmV0dXJuIHRlc3Q7XG4gICAgfVxuXG4gICAgc3RhdGljIF9hZGRGaXh0dXJlICh0ZXN0RmlsZSwgc3JjKSB7XG4gICAgICAgIGNvbnN0IGZpeHR1cmUgPSBuZXcgRml4dHVyZSh0ZXN0RmlsZSk7XG5cbiAgICAgICAgZml4dHVyZShzcmMubmFtZSk7XG5cbiAgICAgICAgUmF3VGVzdEZpbGVDb21waWxlci5fYXNzaWduQ29tbW9uVGVzdGluZ1VuaXRQcm9wZXJ0aWVzKHNyYywgZml4dHVyZSk7XG5cbiAgICAgICAgaWYgKHNyYy5iZWZvcmVFYWNoQ29tbWFuZHMpXG4gICAgICAgICAgICBmaXh0dXJlLmJlZm9yZUVhY2goUmF3VGVzdEZpbGVDb21waWxlci5fY3JlYXRlVGVzdEZuKHNyYy5iZWZvcmVFYWNoQ29tbWFuZHMpKTtcblxuICAgICAgICBpZiAoc3JjLmFmdGVyRWFjaENvbW1hbmRzKVxuICAgICAgICAgICAgZml4dHVyZS5hZnRlckVhY2goUmF3VGVzdEZpbGVDb21waWxlci5fY3JlYXRlVGVzdEZuKHNyYy5hZnRlckVhY2hDb21tYW5kcykpO1xuXG4gICAgICAgIHNyYy50ZXN0cy5mb3JFYWNoKHRlc3RTcmMgPT4gUmF3VGVzdEZpbGVDb21waWxlci5fYWRkVGVzdCh0ZXN0RmlsZSwgdGVzdFNyYykpO1xuICAgIH1cblxuICAgIF9oYXNUZXN0cyAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGdldFN1cHBvcnRlZEV4dGVuc2lvbiAoKSB7XG4gICAgICAgIHJldHVybiAnLnRlc3RjYWZlJztcbiAgICB9XG5cbiAgICBjb21waWxlIChjb2RlLCBmaWxlbmFtZSkge1xuICAgICAgICBjb25zdCB0ZXN0RmlsZSA9IG5ldyBUZXN0RmlsZShmaWxlbmFtZSk7XG5cbiAgICAgICAgbGV0IGRhdGEgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShjb2RlKTtcblxuICAgICAgICAgICAgZGF0YS5maXh0dXJlcy5mb3JFYWNoKGZpeHR1cmVTcmMgPT4gUmF3VGVzdEZpbGVDb21waWxlci5fYWRkRml4dHVyZSh0ZXN0RmlsZSwgZml4dHVyZVNyYykpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGVzdEZpbGUuZ2V0VGVzdHMoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmNhbm5vdFBhcnNlUmF3RmlsZSwgZmlsZW5hbWUsIGVyci50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==