rembrembdocs

Skip to main content

Bun home pagelight logodark logo

[Runtime

](../../../index.md)[Package Manager

](../../../pm/cli/install/index.md)[Bundler

](../../../bundler/index.md)[Test Runner

](../../../test/index.md)[Guides

](../../index.md)[Reference

](https://bun.com/reference)[Blog

](https://bun.com/blog)[Feedback

](../../../feedback/index.md)

Bun’s test runner supports Jest-style snapshot testing via .toMatchSnapshot().

https://mintcdn.com/bun-1dd33a4e/JUhaF6Mf68z_zHyy/icons/typescript.svg?fit=max&auto=format&n=JUhaF6Mf68z_zHyy&q=85&s=7ac549adaea8d5487d8fbd58cc3ea35bsnap.test.ts

import { test, expect } from "bun:test";

test("snapshot", () => {
  expect({ foo: "bar" }).toMatchSnapshot();
});

The first time this test is executed, Bun will evaluate the value passed into expect() and write it to disk in a directory called __snapshots__ that lives alongside the test file. (Note the snapshots: +1 added line in the output.)

terminal

bun test test/snap
test/snap.test.ts:
✓ snapshot [1.48ms]

 1 pass
 0 fail
 snapshots: +1 added
 1 expect() calls
Ran 1 tests across 1 files. [82.00ms]

The __snapshots__ directory contains a .snap file for each test file in the directory.

File Tree

test
├── __snapshots__
│   └── snap.test.ts.snap
└── snap.test.ts

The snap.test.ts.snap file is a JavaScript file that exports a serialized version of the value passed into expect(). The {foo: "bar"} object has been serialized to JSON.

snap.test.ts.snap

// Bun Snapshot v1, https://bun.com/docs/test/snapshots

exports[`snapshot 1`] = `
{
  "foo": "bar",
}
`;

Later, when this test file is executed again, Bun will read the snapshot file and compare it to the value passed into expect(). If the values are different, the test will fail.

terminal

bun test
bun test v1.3.3 (9c68abdb)
test/snap.test.ts:
✓ snapshot [1.05ms]

 1 pass
 0 fail
 1 snapshots, 1 expect() calls
Ran 1 tests across 1 files. [101.00ms]

To update snapshots, use the --update-snapshots flag.

terminal

bun test --update-snapshots
bun test v1.3.3 (9c68abdb)
test/snap.test.ts:
✓ snapshot [0.86ms]

 1 pass
 0 fail
 snapshots: +1 added  # the snapshot was regenerated
 1 expect() calls
Ran 1 tests across 1 files. [102.00ms]

See Docs > Test Runner > Snapshots for complete documentation on snapshots with the Bun test runner.

Was this page helpful?

Suggest editsRaise issue

[

Set the system time in Bun's test runner

Previous

](../mock-clock/index.md)[

Update snapshots in `bun test`

Next

](../update-snapshots/index.md)