What is @storybook/testing-library?
@storybook/testing-library is a package that integrates Storybook with Testing Library, allowing you to test your components in isolation within the Storybook environment. It provides utilities to render and interact with your components in a way that mimics how users would interact with them.
What are @storybook/testing-library's main functionalities?
Render Storybook Stories
This feature allows you to render a Storybook story directly in your tests. You can then use Testing Library queries to interact with the rendered component and make assertions.
import { render } from '@storybook/testing-library';
import { MyComponent } from './MyComponent.stories';
const { getByText } = render(<MyComponent />);
expect(getByText('Hello World')).toBeInTheDocument();
Interaction Testing
This feature allows you to simulate user interactions with your components, such as clicks, typing, and other events. You can then assert the expected changes in the component's state or output.
import { render, fireEvent } from '@storybook/testing-library';
import { MyButton } from './MyButton.stories';
const { getByRole } = render(<MyButton />);
const button = getByRole('button');
fireEvent.click(button);
expect(button).toHaveTextContent('Clicked');
Snapshot Testing
This feature allows you to create snapshots of your components as they are rendered in Storybook. You can use these snapshots to ensure that your components' output does not change unexpectedly.
import { render } from '@storybook/testing-library';
import { MyComponent } from './MyComponent.stories';
import { create } from 'react-test-renderer';
const tree = create(render(<MyComponent />)).toJSON();
expect(tree).toMatchSnapshot();
Other packages similar to @storybook/testing-library
jest
Jest is a JavaScript testing framework maintained by Facebook. It provides a complete and easy-to-set-up JavaScript testing solution. While Jest does not integrate directly with Storybook, it can be used alongside Testing Library to test React components.
enzyme
Enzyme is a JavaScript testing utility for React that makes it easier to assert, manipulate, and traverse your React components' output. Unlike @storybook/testing-library, Enzyme does not integrate with Storybook and uses a different approach for rendering and interacting with components.
cypress
Cypress is a front-end testing tool built for the modern web. It allows you to write end-to-end tests, integration tests, and unit tests. Cypress provides a different approach compared to @storybook/testing-library, focusing more on end-to-end testing rather than isolated component testing within Storybook.
v0.0.9 (Fri Feb 04 2022)
:tada: This release contains work from new contributors! :tada:
Thanks for all your work!
:heart: Yann Braga (@yannbf)
:heart: Gert Hengeveld (@ghengeveld)
:heart: Jean-Michel FRANCOIS (@jmfrancois)
:heart: Michael Shilman (@shilman)
🐛 Bug Fix
- deps: allow storybook 6.5 prerelease versions #13 (@yannbf)
- chore: add auto-release process #12 (@yannbf)
- chore: upgrade libs to be aligned with current stable version #11 (@jmfrancois)
- feat: support cjs and esm #6 (@yannbf)
- fix: change output target to commonjs #5 (@yannbf)
- fix: mutate screen object #4 (@yannbf)
- feat: add typescript support #1 (@yannbf)
⚠️ Pushed to main
Authors: 4