skills/bun-guides-test-snapshot/SKILL.md
Use snapshot testing in `bun test`
npx skillsauth add jarle/bun-skills Bun Use snapshot testing in `bun test`Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
bun testBun's test runner supports Jest-style snapshot testing via .toMatchSnapshot().
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.)
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.
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.
// 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.
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.
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.
development
Using TypeScript with Bun, including type definitions and compiler options
development
Learn how to write tests using Bun's Jest-compatible API with support for async tests, timeouts, and various test modifiers
testing
Learn how to use snapshot testing in Bun to save and compare output between test runs
testing
Learn about Bun test's runtime integration, environment variables, timeouts, and error handling