testcafe
Version:
Automated browser testing for the modern web development stack.
44 lines • 5.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const FILTERING_OPTIONS = {
testGrep: 'testGrep',
fixtureGrep: 'fixtureGrep',
testMeta: 'testMeta',
fixtureMeta: 'fixtureMeta',
test: 'test',
fixture: 'fixture',
};
function isAllFilteringOptionsAreUndefined(opts) {
return Object
.keys(FILTERING_OPTIONS)
.every(option => opts[option] === void 0);
}
function createFilterFn(opts) {
return (testName, fixtureName, fixturePath, testMeta, fixtureMeta) => {
if (opts.test && testName !== opts.test)
return false;
if (opts.testGrep && !opts.testGrep.test(testName))
return false;
if (opts.fixture && fixtureName !== opts.fixture)
return false;
if (opts.fixtureGrep && !opts.fixtureGrep.test(fixtureName))
return false;
if (opts.testMeta && !(0, lodash_1.isMatch)(testMeta, opts.testMeta))
return false;
if (opts.fixtureMeta && !(0, lodash_1.isMatch)(fixtureMeta, opts.fixtureMeta))
return false;
return true;
};
}
function default_1(opts) {
if (typeof opts === 'function')
return opts;
const filteringOpts = (0, lodash_1.pick)(opts, Object.keys(FILTERING_OPTIONS));
if (isAllFilteringOptionsAreUndefined(filteringOpts))
return void 0;
return Object.assign(createFilterFn(filteringOpts), filteringOpts);
}
exports.default = default_1;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZpbHRlci1mbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9nZXQtZmlsdGVyLWZuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQXVDO0FBRXZDLE1BQU0saUJBQWlCLEdBQUc7SUFDdEIsUUFBUSxFQUFLLFVBQVU7SUFDdkIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsUUFBUSxFQUFLLFVBQVU7SUFDdkIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsSUFBSSxFQUFTLE1BQU07SUFDbkIsT0FBTyxFQUFNLFNBQVM7Q0FDekIsQ0FBQztBQUVGLFNBQVMsaUNBQWlDLENBQUUsSUFBSTtJQUM1QyxPQUFPLE1BQU07U0FDUixJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FDdkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFFLElBQUk7SUFDekIsT0FBTyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNqRSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxJQUFJO1lBQ25DLE9BQU8sS0FBSyxDQUFDO1FBRWpCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QyxPQUFPLEtBQUssQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksV0FBVyxLQUFLLElBQUksQ0FBQyxPQUFPO1lBQzVDLE9BQU8sS0FBSyxDQUFDO1FBRWpCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN2RCxPQUFPLEtBQUssQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFBLGdCQUFPLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEQsT0FBTyxLQUFLLENBQUM7UUFFakIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBQSxnQkFBTyxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzNELE9BQU8sS0FBSyxDQUFDO1FBRWpCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxtQkFBeUIsSUFBSTtJQUN6QixJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVU7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFFaEIsTUFBTSxhQUFhLEdBQUcsSUFBQSxhQUFJLEVBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRWpFLElBQUksaUNBQWlDLENBQUMsYUFBYSxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDLENBQUM7SUFFbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBVkQsNEJBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc01hdGNoLCBwaWNrIH0gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgRklMVEVSSU5HX09QVElPTlMgPSB7XG4gICAgdGVzdEdyZXA6ICAgICd0ZXN0R3JlcCcsXG4gICAgZml4dHVyZUdyZXA6ICdmaXh0dXJlR3JlcCcsXG4gICAgdGVzdE1ldGE6ICAgICd0ZXN0TWV0YScsXG4gICAgZml4dHVyZU1ldGE6ICdmaXh0dXJlTWV0YScsXG4gICAgdGVzdDogICAgICAgICd0ZXN0JyxcbiAgICBmaXh0dXJlOiAgICAgJ2ZpeHR1cmUnLFxufTtcblxuZnVuY3Rpb24gaXNBbGxGaWx0ZXJpbmdPcHRpb25zQXJlVW5kZWZpbmVkIChvcHRzKSB7XG4gICAgcmV0dXJuIE9iamVjdFxuICAgICAgICAua2V5cyhGSUxURVJJTkdfT1BUSU9OUylcbiAgICAgICAgLmV2ZXJ5KG9wdGlvbiA9PiBvcHRzW29wdGlvbl0gPT09IHZvaWQgMCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbHRlckZuIChvcHRzKSB7XG4gICAgcmV0dXJuICh0ZXN0TmFtZSwgZml4dHVyZU5hbWUsIGZpeHR1cmVQYXRoLCB0ZXN0TWV0YSwgZml4dHVyZU1ldGEpID0+IHtcbiAgICAgICAgaWYgKG9wdHMudGVzdCAmJiB0ZXN0TmFtZSAhPT0gb3B0cy50ZXN0KVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmIChvcHRzLnRlc3RHcmVwICYmICFvcHRzLnRlc3RHcmVwLnRlc3QodGVzdE5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmIChvcHRzLmZpeHR1cmUgJiYgZml4dHVyZU5hbWUgIT09IG9wdHMuZml4dHVyZSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAob3B0cy5maXh0dXJlR3JlcCAmJiAhb3B0cy5maXh0dXJlR3JlcC50ZXN0KGZpeHR1cmVOYW1lKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAob3B0cy50ZXN0TWV0YSAmJiAhaXNNYXRjaCh0ZXN0TWV0YSwgb3B0cy50ZXN0TWV0YSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgaWYgKG9wdHMuZml4dHVyZU1ldGEgJiYgIWlzTWF0Y2goZml4dHVyZU1ldGEsIG9wdHMuZml4dHVyZU1ldGEpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChvcHRzKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4gb3B0cztcblxuICAgIGNvbnN0IGZpbHRlcmluZ09wdHMgPSBwaWNrKG9wdHMsIE9iamVjdC5rZXlzKEZJTFRFUklOR19PUFRJT05TKSk7XG5cbiAgICBpZiAoaXNBbGxGaWx0ZXJpbmdPcHRpb25zQXJlVW5kZWZpbmVkKGZpbHRlcmluZ09wdHMpKVxuICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oY3JlYXRlRmlsdGVyRm4oZmlsdGVyaW5nT3B0cyksIGZpbHRlcmluZ09wdHMpO1xufVxuIl19