skills/bun-guides-test-run-tests/SKILL.md
Run your tests with the Bun test runner
npx skillsauth add jarle/bun-skills Bun Run your tests with the Bun test runnerInstall 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 has a built-in test runner with a Jest-like expect API.
To use it, run the bun test command from your project directory. The test runner will recursively search for all files in the directory that match the following patterns and execute the tests they contain.
*.test.{js|jsx|ts|tsx}
*_test.{js|jsx|ts|tsx}
*.spec.{js|jsx|ts|tsx}
*_spec.{js|jsx|ts|tsx}
Here's what the output of a typical test run looks like. In this case, there are three tests files (test.test.js, test2.test.js, and test3.test.js) containing two tests each (add and multiply).
bun test
test.test.js:
✓ add [0.87ms]
✓ multiply [0.02ms]
test2.test.js:
✓ add [0.72ms]
✓ multiply [0.01ms]
test3.test.js:
✓ add [0.54ms]
✓ multiply [0.01ms]
6 pass
0 fail
6 expect() calls
Ran 6 tests across 3 files. [9.00ms]
To only run certain test files, pass a positional argument to bun test. The runner will only execute files that contain that argument in their path.
bun test test3
test3.test.js:
✓ add [1.40ms]
✓ multiply [0.03ms]
2 pass
0 fail
2 expect() calls
Ran 2 tests across 1 files. [15.00ms]
All tests have a name, defined using the first parameter to the test function. Tests can also be grouped into suites with describe.
import { test, expect, describe } from "bun:test";
describe("math", () => {
test("add", () => {
expect(2 + 2).toEqual(4);
});
test("multiply", () => {
expect(2 * 2).toEqual(4);
});
});
To filter which tests are executed by name, use the -t/--test-name-pattern flag.
Adding -t add will only run tests with "add" in the name. This works with test names defined with test or test suite names defined with describe.
bun test -t add
test.test.js:
✓ add [1.79ms]
» multiply
test2.test.js:
✓ add [2.30ms]
» multiply
test3.test.js:
✓ add [0.32ms]
» multiply
3 pass
3 skip
0 fail
3 expect() calls
Ran 6 tests across 3 files. [59.00ms]
See Docs > Test Runner for complete documentation on the 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