Jest matcher to write snapshots to a separate file instead of the default snapshot file used by Jest. Writing a snapshot to a separate file means you have proper syntax highlighting in the output file, and better readability without those pesky escape characters. It's also useful if you have binary content.
npm install --save-dev jest-file-snapshotor
yarn add --dev jest-file-snapshotExtend Jest's expect:
import { toMatchFile } from 'jest-file-snapshot';
expect.extend({ toMatchFile });Then use it in your tests:
it('matches content of file on disk', () => {
expect(content).toMatchFile();
});The content passed can be of type string or a Buffer. The comparison be done using Buffer.equals() instead of === if a Buffer is passed.
The matcher takes two optional arguments:
filepath: path to the file whose content should be matched, e.g.expect(content).toMatchFile(path.join(__dirname, 'output.md'))options: additional options object for the matcher, with following properties:diff: options forjest-difffileExtension: optional file extension to use for the snapshot file.
You should also exclude the output files from Jest's watcher so that updating the snapshot doesn't re-run the tests again.
For example, by default toMatchFile uses a folder named __file_snapshots__ which you can exclude by adding the following under the jest key in package.json:
"watchPathIgnorePatterns": [
"__file_snapshots__"
]Make sure your code passes the unit tests, ESLint and TypeScript. Run the following to verify:
yarn test
yarn lint
yarn typescriptTo fix formatting errors, run the following:
yarn lint -- --fix