@applitools/eyes-storybook
Version:
40 lines (33 loc) • 1.24 kB
JavaScript
;
const getStoryTitle = require('./getStoryTitle');
function filterStories({stories, config}) {
// Apply existing filters first
let filteredStories = stories.filter(story => filterStory(story, config));
// Apply sharding after other filters
if (config.shard) {
const {current, total} = config.shard;
filteredStories = filteredStories.filter((_story, index) => index % total === current - 1);
}
return filteredStories;
}
function filterStory(story, config) {
const storyTitle = getStoryTitle(story);
const localInclude =
story.parameters && story.parameters.eyes && story.parameters.eyes.hasOwnProperty('include')
? story.parameters.eyes.include
: undefined;
if (localInclude !== undefined) {
return localInclude;
} else if (typeof config.include === 'function') {
return config.include({...story, storyTitle});
} else if (typeof config.include === 'string') {
return config.include == storyTitle;
} else if (Object.prototype.toString.call(config.include) === '[object RegExp]') {
return config.include.test(storyTitle);
} else if (config.include !== undefined) {
return config.include;
} else {
return true;
}
}
module.exports = filterStories;