diff --git a/addons/storyshots/src/index.js b/addons/storyshots/src/index.js index cf61cb08927c..2a6f80c20702 100644 --- a/addons/storyshots/src/index.js +++ b/addons/storyshots/src/index.js @@ -1,11 +1,13 @@ -import renderer from 'react-test-renderer'; import path from 'path'; import readPkgUp from 'read-pkg-up'; import addons from '@storybook/addons'; import runWithRequireContext from './require_context'; import createChannel from './storybook-channel-mock'; +import { snapshot } from './test-bodies'; const { describe, it, expect } = global; +export { snapshot, renderOnly } from './test-bodies'; + let storybook; let configPath; @@ -59,6 +61,8 @@ export default function testStorySnapshots(options = {}) { // Added not to break existing storyshots configs (can be removed in a future major release) options.storyNameRegex = options.storyNameRegex || options.storyRegex; + options.test = options.test || snapshot; + for (const group of stories) { if (options.storyKindRegex && !group.kind.match(options.storyKindRegex)) { continue; @@ -73,9 +77,7 @@ export default function testStorySnapshots(options = {}) { it(story.name, () => { const context = { kind: group.kind, story: story.name }; - const renderedStory = story.render(context); - const tree = renderer.create(renderedStory).toJSON(); - expect(tree).toMatchSnapshot(); + options.test({ story, context }); }); } }); diff --git a/addons/storyshots/src/test-bodies.js b/addons/storyshots/src/test-bodies.js new file mode 100644 index 000000000000..0da64358a671 --- /dev/null +++ b/addons/storyshots/src/test-bodies.js @@ -0,0 +1,13 @@ +import renderer from 'react-test-renderer'; +import shallow from 'react-test-renderer/shallow'; + +export function snapshot({ story, context }) { + const storyElement = story.render(context); + const tree = renderer.create(storyElement).toJSON(); + expect(tree).toMatchSnapshot(); +} + +export function renderOnly({ story, context }) { + const storyElement = story.render(context); + const tree = renderer.create(storyElement); +}