npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

jest-snapshots

v1.1.2

Published

Jest snapshot test helper for React components with various props sets.

Downloads

22

Readme

jest-snapshots

npm

Jest snapshot test helper for React components with various props sets.

Used to DRY up and reduce boilerplate in tests. Low barrier to entry = less effort = encourage more tests. If no props are provided, they will be generated via react-fake-props.

You may need enzyme-to-json in your Jest configuration to use this library.

Install

yarn add --dev jest-snapshots (copy) npm install --save-dev jest-snapshots (copy)

Use

import snapshots from 'jest-snapshots'
import TestComponent from './TestComponent'

snapshots(TestComponent, {
  'with none': {},
  'with one': { one: 'something' },
  'with two': { one: 'something', two: 'and more' }
})

Which, without jest-snapshots, would be effectively the same as writing tests manually as follows (but about half the noise; 11 vs. 5 lines, 401 vs. 220 characters):

import React from 'react'
import { shallow } from 'enzyme'
import TestComponent from './TestComponent'

describe('TestComponent snapshots', () => {
  it('with none', () => {
    expect(shallow(<TestComponent />)).toMatchSnapshot()
  })
  it('with one', () => {
    expect(shallow(<TestComponent one="something" />)).toMatchSnapshot()
  })
  it('with two', () => {
    expect(shallow(<TestComponent one="something" two="and more" />)).toMatchSnapshot()
  })
})

Alternatively, you can pass an array of props sets, rather than provide names as keys (indexes will be used):

import snapshots from 'jest-snapshots'
import TestComponent from './TestComponent'

snapshots(TestComponent, [
  {},
  { one: 'something' },
  { one: 'something', two: 'and more' }
])

Or you can pass just a component reference, which will result in a single snapshot using no props (equivalent to passing [{}]):

snapshots(TestComponent)

To have jest-snapshots auto-generate props via react-fake-props, you must provide a file path to the component, rather than a class/function reference. There are two ways to achieve this. In either case, a .js suffix is assumed and added automatically if the path doesn't end in .js/.jsx/.ts/.tsx. You can pass an array including __dirname and it will be joined automatically.

import snapshots from 'jest-snapshots'

snapshots([__dirname, 'TestComponent'])

Or you can pass an explicit path:

import { join } from 'path'
import snapshots from 'jest-snapshots'

snapshots(join(__dirname, 'TestComponent'))

Finally, here are more examples with additional options:

import snapshots from 'jest-snapshots'
import TestComponent from './TestComponent'

snapshots({
  component: TestComponent,
  mount: true, // Use enzyme's `mount` instead of `shallow`.
  props: {
    'with one': { one: 'something' },
    'with two': { one: 'something', two: 'and more' }
  }
})

snapshots({
  component: [__dirname, 'TestComponent'],
  // Pass options to `react-fake-props`, such as to generate optional props:
  fakePropsOptions: {
    optional: true
  }
})