[](https://circleci.com/gh/igor-dv/jest-specific-snapshot)
npm install jest-specific-snapshot
---
Jest matcher for multiple snapshot files per test
You can read about the implementation here
``sh`
npm i -D jest-specific-snapshot
`js
const path = require('path');
// extend jest to have 'toMatchSpecificSnapshot' matcher
require('jest-specific-snapshot');
test('test', () => {
// provides snapshot file with absolute file
const pathToSnap = path.resolve(process.cwd(), './example/specific/dir/my.shot');
expect(100).toMatchSpecificSnapshot(pathToSnap);
//same snapshot but with relative file
expect(14).toMatchSpecificSnapshot('./specific/dir/my.shot');
// another snapshot file in the same test
expect(19).toMatchSpecificSnapshot('./specific/another_dir/another.shot');
});
`
`js
// extend jest to have 'toMatchSpecificSnapshot' matcher
const addSerializer = require('jest-specific-snapshot').addSerializer;
addSerializer(/ Add custom serializer here /);
test('test', () => {
expect(/ thing that matches the custom serializer /).toMatchSpecificSnapshot(
'./specific/custom_serializer/test.shot'
);
});
`
`js
const toMatchSpecificSnapshot = require('jest-specific-snapshot').toMatchSpecificSnapshot;
expect.extend({
toMatchDecoratedSpecificSnapshot(received, snapshotFile) {
// You can modify received data or create dynamic snapshot path
const data = doSomeThing(received);
return toMatchSpecificSnapshot.call(this, data, snapshotFile);
},
});
`
1. Snapshot files should have an extension other than .snap, since it conflicts with jest.--updateSnapshot
2. In order to handle the (-u) parameter provided from CLI, there is an abuse of the SnapshotState._updateSnapshot private field. TBD - try to use the globalConfig to get this state..toMatchSpecificSnapshot
3. does ignore a custom serializers strategy. In order to support custom serializers, you should use the addSerializer` method explicitly.