@storybook/addon-jest
Version:
Storybook Jest addon: Show Jest report in Storybook's addon panel
14 lines (8 loc) • 1.65 kB
JavaScript
;
var previewApi = require('storybook/preview-api');
var upath = require('upath');
var invariant = require('tiny-invariant');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var invariant__default = /*#__PURE__*/_interopDefault(invariant);
var ADDON_ID="storybookjs/test",ADD_TESTS=`${ADDON_ID}/add_tests`;function defineJestParameter(parameters){let{jest,fileName:filePath}=parameters;if(typeof jest=="string")return [jest];if(jest&&Array.isArray(jest))return jest;if(jest===void 0&&typeof filePath=="string"){let lastPath=filePath.split("/").pop();return invariant__default.default(lastPath!=null,"split should always return at least one value"),[lastPath.split(".")[0]]}return null}var findTestResults=(testFiles,jestTestResults,jestTestFilesExt)=>Object.values(testFiles).map(name=>{let fileName=`${upath.sep}${name}${jestTestFilesExt}`;if(jestTestResults&&jestTestResults.testResults){let fileNamePattern=new RegExp(fileName);return {fileName,name,result:jestTestResults.testResults.find(test=>!!upath.normalize(test.name).match(fileNamePattern))}}return {fileName,name}}),emitAddTests=({kind,story,testFiles,options})=>{previewApi.addons.getChannel().emit(ADD_TESTS,{kind,storyName:story,tests:findTestResults(testFiles,options.results,options.filesExt)});},withTests=userOptions=>{let options={...{filesExt:"((\\.specs?)|(\\.tests?))?(\\.[jt]sx?)?$"},...userOptions};return (...args)=>{let[storyFn,{kind,parameters={}}]=args,testFiles=defineJestParameter(parameters);return testFiles!==null&&emitAddTests({kind,story:storyFn,testFiles,options}),storyFn()}};
exports.withTests = withTests;