A custom matcher for Bun tests to compare SVG snapshots.
The fastest way to get started is to use the CLI to initialize your project:
bunx bun-match-svg init
This will:
- Create an example test in
tests/svg.test.ts
- Set up automatic preloading by creating:
tests/fixtures/preload.ts
bunfig.toml
You can then run the example test:
bun test
bun add -D bun-match-svg
Import the library in your test file:
import "bun-match-svg"
test("your SVG test", () => {
const svgContent = generateSomeSvg() // Your function to generate SVG
expect(svgContent).toMatchSvgSnapshot(import.meta.path, "uniqueName")
})
The toMatchSvgSnapshot
matcher takes two arguments:
-
import.meta.path
: The path of the current test file. -
uniqueName
(optional): A unique name for the snapshot. If not provided, it will use the test file name.
To make toMatchSvgSnapshot
available in all your test files without importing it in each one:
- Create a file
tests/fixtures/preload.ts
with the following content:
import "bun-match-svg"
- Define a
bunfig.toml
file in your project root with:
[test]
preload = ["./tests/fixtures/preload.ts"]
Now toMatchSvgSnapshot
will be automatically available in every test file.
- On first run, it creates a snapshot of your SVG.
- On subsequent runs, it compares the current SVG with the snapshot.
- If differences are found, it generates a diff image.
To update existing snapshots, run your tests with:
bun test --update-snapshots
Or set the environment variable:
BUN_UPDATE_SNAPSHOTS=1 bun test
The matcher uses looks-same
for comparison with these default settings:
strict: false
tolerance: 2
There currently isn't a way to configure this, but PRs welcome!
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.