If you’ve ever felt like running your tests is like waiting for water to boil, you’re not alone. I’ve been there. For my latest project, ilamy Calendar (intro article here), I wanted to keep things simple and stick to one toolchain for everything: runtime, package manager, and testing. That led me to try Bun’s built-in test runner.
What happened next surprised me: I wrote some tests, ran the tests and saw my tests run instantly. I’m talking milliseconds.
I’ve used Jest before. I’ve used Vitest too. Jest, in particular, has always felt slow to me — slow enough to grab coffee while waiting for the test suite to finish. But I wanted real numbers to see just how much faster Bun was, so I ran a little experiment.
Disclaimer: These benchmarks are only the findings from my specific project. They might differ in your own setup, and the fastest option for me may not be the fastest for you. Everything here is based on my personal experience and opinions.
The Experiment
I set up Jest, Vitest, and Bun test in the same project. Then I ran:
- The same 223 tests
- Across 14 files
- Ten times for each runner
No code changes, just swapping the runner.
The Results
Here’s the average runtime across those ten runs:
Test Runner | Avg. Time (seconds) |
---|---|
Bun Test | ~2.15s |
Vitest | ~5.3s |
Jest | ~9.8s |
And here’s the raw data for the curious:
Jest:
Run # | Time (s) |
---|---|
1 | 12.689 |
2 | 10.299 |
3 | 9.521 |
4 | 9.392 |
5 | 9.542 |
6 | 10.265 |
7 | 9.469 |
8 | 9.670 |
9 | 9.584 |
10 | 9.374 |
Lowest: 9.374 | Highest: 12.689 | Average: 9.980
Vitest:
Run # | Time (s) |
---|---|
1 | 5.930 |
2 | 5.250 |
3 | 5.320 |
4 | 5.130 |
5 | 5.130 |
6 | 5.180 |
7 | 5.450 |
8 | 5.160 |
9 | 5.270 |
10 | 5.300 |
Lowest: 5.130 | Highest: 5.930 | Average: 5.312
Bun Test:
Run # | Time (s) |
---|---|
1 | 2.160 |
2 | 2.130 |
3 | 2.200 |
4 | 2.130 |
5 | 2.130 |
6 | 2.130 |
7 | 2.160 |
8 | 2.140 |
9 | 2.210 |
10 | 2.140 |
Lowest: 2.130 | Highest: 2.210 | Average: 2.153
The speed difference is so significant that even small projects benefit immediately. When you scale up to hundreds or thousands of tests, the time saved becomes massive.
Try It Yourself — Realtime Demo
I’ve set up a live demo where you can run tests with Jest, Vitest, and Bun side-by-side and see the difference for yourself:
💻 Demo and Source code: View on CodeSandbox
Migrating to Bun Test
If you’re using Jest or Vitest, migrating is surprisingly easy:
- Install Bun
curl -fsSL https://bun.sh/install | bash
- Run your tests
bun test
Most of your Jest-style tests will work out of the box. If you use custom mocks, setup files, or advanced Jest features, you might need minor adjustments, but Bun’s compatibility is improving rapidly.
Final Thoughts
I went into this expecting Bun to be fast. I didn’t expect it to be this fast. If you care about developer productivity, fast feedback loops, and less time watching spinners, you owe it to yourself to try Bun’s test runner.
It might just ruin other test runners for you.