Security News
New Python Packaging Proposal Aims to Solve Phantom Dependency Problem with SBOMs
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
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
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
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
Security News
Socket CEO Feross Aboukhadijeh discusses open source security challenges, including zero-day attacks and supply chain risks, on the Cyber Security Council podcast.
Security News
Research
Socket researchers uncover how threat actors weaponize Out-of-Band Application Security Testing (OAST) techniques across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.