Security News
Bun 1.2 Released with 90% Node.js Compatibility and Built-in S3 Object Support
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
jest-auto-snapshots
Advanced tools
Automatically generate prop fixtures and snapshot tests for your React components
import snap from 'jest-auto-snapshots';
import MyComponent from '../MyComponent';
snap(MyComponent);
↓
Snapshot tests are a very useful tool whenever you want to make sure your UI does not change unexpectedly.
jest
and enzyme-to-json
are great tools, but writing tests for all the different possible rendering states and maintaining props is tedious and unnecessary. Really, we just want to know when & where a snapshot changes and if the change was intentional.
arrays
or shapes
. This would just create way to many tests and should be handled manually (or, better yet, strive to make your component props as flat as possible). I'm open to a settings option to allow for this in future iterations, though..jsx
file with react-docgen.Component.propTypes
tree and checks for different conditions (required vs optional props, boolean props, etc).Important: This module requires jest, enzyme, and enzyme-to-json to be correctly configured and working in your project. jest-auto-snapshots
is supplemental to these tools and does not provide them for you.
npm i jest-auto-snapshots --save-dev
or yarn add jest-auto-snapshots --dev
MyComponent.jsx
const MyComponent = ({ stringProp, booleanProp, nodeProp }) => (
<div>
{booleanProp && <span>Hello</span>}
{stringProp}
{nodeProp}
</div>
);
MyComponent.propTypes = {
booleanProp: PropTypes.bool,
stringProp: PropTypes.string,
nodeProp: PropTypes.node,
};
MyComponent.test.js
import snap from 'jest-auto-snapshots';
import MyComponent from '../MyComponent';
snap(MyComponent);
MyComponent.test.js.snap
(generated from the example code above)// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`when boolean prop "booleanProp" is set to: "false" 1`] = `
<div>
jest-auto-snapshots String Fixture
<NodeFixture />
</div>
`;
exports[`when passed all props 1`] = `
<div>
<span>
Hello
</span>
jest-auto-snapshots String Fixture
<NodeFixture />
</div>
`;
exports[`when passed only required props 1`] = `
<div>
jest-auto-snapshots String Fixture
</div>
`;
For advanced examples highlighting different use cases, please check out the examples directory
snap(
component: <Component:required>,
config: <Object:optional>,
);
There are 2 ways to change configuration for the script. Either at the root level in your jest setup file or in each individual test. The params are the same for both:
{
/**
* by default jest-auto-snapshots populates all fixtures for props like string, bool, shape, etc.
* but you can override those fixtures with your own, or support custom prop types.
*/
fixtures: {
// propTypeName: propFixture,
// ...
},
/**
* jest-auto-snapshots needs to parse the actual component file
* in order to see which props it needs. By default, it expects
* your test file to be in a direftory next to your component. But
* if you prefer your tests to sit right nect to your component
* (or any other location) you can override the default with `relativePath`
*/
relativePath: '../',
/**
* optionally set the file extension for your component files (default is 'jsx')
*/
extension: 'js',
}
In your jest setup file:
const jestAutoSnapshots = require('jest-auto-snapshots');
jestAutoSnapshots.configure({
fixtures: {
customPropTypeExample: 'custom prop fixture example',
},
relativePath: './',
});
In your test file:
import snap from 'jest-auto-snapshots';
import CustomProps from '../CustomProps';
snap(CustomProps, {
fixtures: {
customPropTypeExample: 'custom prop fixture example',
},
relativePath: './',
});
Note: any of these config options supplied at the test level will override any config settings from your jest setup file.
FAQs
Fully automated Jest snapshot tests for React components
The npm package jest-auto-snapshots receives a total of 596 weekly downloads. As such, jest-auto-snapshots popularity was classified as not popular.
We found that jest-auto-snapshots demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
Security News
Biden's executive order pushes for AI-driven cybersecurity, software supply chain transparency, and stronger protections for federal and open source systems.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.