jest-fs-snapshot

Jest matcher for filesystem snapshotting.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
jest-fs-snapshot
790.2.13 years ago5 years agoMinified + gzip package size for jest-fs-snapshot in KB

Readme

jest-fs-snapshot · !npm12 !Build Status34
Jest matcher for filesystem snapshotting.

Table of Contents

- toMatchFilesystemSnapshot

Installation

yarn add jest-fs-snapshot

Getting Started

  1. Extend Jest's expect

import { toMatchFilesystemSnapshot } from 'jest-fs-snapshot';

expect.extend({ toMatchFilesystemSnapshot });

  1. Use it in your tests!

test('if build directory matches snapshot', () => {
  const pathToBuildDir = path.resolve(process.cwd(), '.build');
  expect(pathToBuildDir).toMatchFilesystemSnapshot();
});

This will create a __fs_snapshots__ folder next to your test file with a snapshot file. On next runs it will chech if the snapshot against the source directory and with throw on mismatches.

API

.toMatchFilesystemSnapshot(pathToSnapshot, options)

Arguments

  1. pathToSnapshot (String): An optional full path to a snapshot file.
  2. options (Object): An optional object with additional configurations.
1. `customCompare` _({check: Function, compare: Function}[])_: Any custom compare function will be applied only if
   the check method returns true. If multiple checks return true, the first hit will be used.

Example

const diff = require('jest-diff');

const snapshotOptions = {
  customCompare: [
    {
      check: path => path.endsWith('package.json'),
      compare: (actualBuffer, expectedBuffer) => {
        const actual = JSON.parse(actualBuffer);
        const expected = JSON.parse(expectedBuffer);

        // we want to ignore the peerModules
        delete actual.peerModules;
        delete expected.peerModules;

        return diff(actual, expected);
      },
    },
    {
      // test.js files will be ignored
      check: path => path.endsWith('.test.js'),
      compare: () => true,
    },
  ],
};

describe('...', () => {
  it('...', () => {
    /**
     * ...
     */
    expect(pathToBuildDir).toMatchFilesystemSnapshot(undefined, snapshotOptions);
  });
});

Credits

Many files for encodings fixture have been taken from https://github.com/mbbill/fencview.

License

This package is released using the MIT license. For more information see the license file.