Giter VIP home page Giter VIP logo

jest-matcher-react-shallow-snapshot's Introduction

jest-matcher-react-shallow-snapshot

A jest matcher for shallow rendered React component snapshots

CircleCI

About

This is a jest matcher that allows you to easily create shallow snapshots of React components will full support for:

  • React.memo
  • React.forwardRef
  • React.Fragment
  • React.createContext (Provider and Consumer)
  • ReactDOM.createPortal
  • Functional components
  • Component classes

The output of this matcher is far more informative than other existing solutions, providing context of memo wrapped components, fragments, etc, and does not require importing a renderer for each of your test files.

This relies on react-shallow-renderer under the hood, which you could use without the jest matcher if you prefer / are using another test suite.

Check out the react-shallow-renderer readme for some examples of the snapshot output.

Example

expect(<MyComponent />).toMatchReactShallowSnapshot();

Install

npm i @jakesidsmith/jest-matcher-react-shallow-snapshot -S

Configuration

Jest config

This library requires you to define a setupFilesAfterEnv entry in your jest config (or setupTestFrameworkScriptFile for older versions of jest).

This should point to a file which will be used to initialize custom matchers:

module.exports = {
  setupFilesAfterEnv: [
    '<rootDir>/path/to/custom-matchers.js'
  ]
};

If you don't already have a such a file you should create one, and then simply import this library in that file:

import '@jakesidsmith/jest-matcher-react-shallow-snapshot';

If you are using TypeScript, importing this file from your setup file should apply the types needed to call .toMatchReactShallowSnapshot. If it doesn't, then make sure that the setup file is included in your tsconfig.

Usage

Now you can simply render a react component and expect it to match your shallow snapshot:

expect(<MyComponent />).toMatchReactShallowSnapshot();

jest-matcher-react-shallow-snapshot's People

Contributors

jakesidsmith avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.