UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

52 lines 7.34 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const testing_unit_1 = __importDefault(require("./testing-unit")); const type_assertions_1 = require("../../errors/runtime/type-assertions"); const wrap_test_function_1 = __importDefault(require("../wrap-test-function")); const assert_type_1 = __importDefault(require("../request-hooks/assert-type")); const lodash_1 = require("lodash"); class Test extends testing_unit_1.default { constructor(testFile) { super(testFile, 'test'); this.fixture = testFile.currentFixture; this.fn = null; this.beforeFn = null; this.afterFn = null; this.requestHooks = []; return this.apiOrigin; } _add(name, fn) { type_assertions_1.assertType(type_assertions_1.is.string, 'apiOrigin', 'The test name', name); type_assertions_1.assertType(type_assertions_1.is.function, 'apiOrigin', 'The test body', fn); type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'apiOrigin', `The fixture of '${name}' test`, this.fixture); this.name = name; this.fn = wrap_test_function_1.default(fn); this.requestHooks = lodash_1.union(this.requestHooks, Array.from(this.fixture.requestHooks)); if (this.testFile.collectedTests.indexOf(this) < 0) this.testFile.collectedTests.push(this); return this.apiOrigin; } _before$(fn) { type_assertions_1.assertType(type_assertions_1.is.function, 'before', 'test.before hook', fn); this.beforeFn = wrap_test_function_1.default(fn); return this.apiOrigin; } _after$(fn) { type_assertions_1.assertType(type_assertions_1.is.function, 'after', 'test.after hook', fn); this.afterFn = wrap_test_function_1.default(fn); return this.apiOrigin; } _requestHooks$(...hooks) { hooks = lodash_1.flattenDeep(hooks); assert_type_1.default(hooks); this.requestHooks = lodash_1.union(this.requestHooks, hooks); return this.apiOrigin; } } exports.default = Test; testing_unit_1.default._makeAPIListForChildClass(Test); module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL3Rlc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrRUFBeUM7QUFDekMsMEVBQXNFO0FBQ3RFLCtFQUFxRDtBQUNyRCwrRUFBaUU7QUFDakUsbUNBQXVEO0FBRXZELE1BQXFCLElBQUssU0FBUSxzQkFBVztJQUN6QyxZQUFhLFFBQVE7UUFDakIsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFFdkMsSUFBSSxDQUFDLEVBQUUsR0FBYSxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBTyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBUSxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFFdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLENBQUUsSUFBSSxFQUFFLEVBQUU7UUFDViw0QkFBVSxDQUFDLG9CQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsNEJBQVUsQ0FBQyxvQkFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFELDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixJQUFJLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekYsSUFBSSxDQUFDLElBQUksR0FBVyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLEVBQUUsR0FBYSw0QkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLGNBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXBGLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUSxDQUFFLEVBQUU7UUFDUiw0QkFBVSxDQUFDLG9CQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsUUFBUSxHQUFHLDRCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTyxDQUFFLEVBQUU7UUFDUCw0QkFBVSxDQUFDLG9CQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsT0FBTyxHQUFHLDRCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFFLEdBQUcsS0FBSztRQUNwQixLQUFLLEdBQUcsb0JBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QixxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QixJQUFJLENBQUMsWUFBWSxHQUFHLGNBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0NBQ0o7QUF0REQsdUJBc0RDO0FBRUQsc0JBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUZXN0aW5nVW5pdCBmcm9tICcuL3Rlc3RpbmctdW5pdCc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgd3JhcFRlc3RGdW5jdGlvbiBmcm9tICcuLi93cmFwLXRlc3QtZnVuY3Rpb24nO1xuaW1wb3J0IGFzc2VydFJlcXVlc3RIb29rVHlwZSBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2Fzc2VydC10eXBlJztcbmltcG9ydCB7IGZsYXR0ZW5EZWVwIGFzIGZsYXR0ZW4sIHVuaW9uIH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVzdCBleHRlbmRzIFRlc3RpbmdVbml0IHtcbiAgICBjb25zdHJ1Y3RvciAodGVzdEZpbGUpIHtcbiAgICAgICAgc3VwZXIodGVzdEZpbGUsICd0ZXN0Jyk7XG5cbiAgICAgICAgdGhpcy5maXh0dXJlID0gdGVzdEZpbGUuY3VycmVudEZpeHR1cmU7XG5cbiAgICAgICAgdGhpcy5mbiAgICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmJlZm9yZUZuICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuYWZ0ZXJGbiAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZXF1ZXN0SG9va3MgPSBbXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgX2FkZCAobmFtZSwgZm4pIHtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdhcGlPcmlnaW4nLCAnVGhlIHRlc3QgbmFtZScsIG5hbWUpO1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYXBpT3JpZ2luJywgJ1RoZSB0ZXN0IGJvZHknLCBmbik7XG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTnVsbE9iamVjdCwgJ2FwaU9yaWdpbicsIGBUaGUgZml4dHVyZSBvZiAnJHtuYW1lfScgdGVzdGAsIHRoaXMuZml4dHVyZSk7XG5cbiAgICAgICAgdGhpcy5uYW1lICAgICAgICAgPSBuYW1lO1xuICAgICAgICB0aGlzLmZuICAgICAgICAgICA9IHdyYXBUZXN0RnVuY3Rpb24oZm4pO1xuICAgICAgICB0aGlzLnJlcXVlc3RIb29rcyA9IHVuaW9uKHRoaXMucmVxdWVzdEhvb2tzLCBBcnJheS5mcm9tKHRoaXMuZml4dHVyZS5yZXF1ZXN0SG9va3MpKTtcblxuICAgICAgICBpZiAodGhpcy50ZXN0RmlsZS5jb2xsZWN0ZWRUZXN0cy5pbmRleE9mKHRoaXMpIDwgMClcbiAgICAgICAgICAgIHRoaXMudGVzdEZpbGUuY29sbGVjdGVkVGVzdHMucHVzaCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgX2JlZm9yZSQgKGZuKSB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdiZWZvcmUnLCAndGVzdC5iZWZvcmUgaG9vaycsIGZuKTtcblxuICAgICAgICB0aGlzLmJlZm9yZUZuID0gd3JhcFRlc3RGdW5jdGlvbihmbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIF9hZnRlciQgKGZuKSB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdhZnRlcicsICd0ZXN0LmFmdGVyIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5hZnRlckZuID0gd3JhcFRlc3RGdW5jdGlvbihmbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIF9yZXF1ZXN0SG9va3MkICguLi5ob29rcykge1xuICAgICAgICBob29rcyA9IGZsYXR0ZW4oaG9va3MpO1xuXG4gICAgICAgIGFzc2VydFJlcXVlc3RIb29rVHlwZShob29rcyk7XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0SG9va3MgPSB1bmlvbih0aGlzLnJlcXVlc3RIb29rcywgaG9va3MpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG59XG5cblRlc3RpbmdVbml0Ll9tYWtlQVBJTGlzdEZvckNoaWxkQ2xhc3MoVGVzdCk7XG4iXX0=