@depup/bun-types 1.3.11-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/CLAUDE.md +105 -0
  2. package/README.md +25 -0
  3. package/bun.d.ts +8712 -0
  4. package/bun.ns.d.ts +5 -0
  5. package/bundle.d.ts +74 -0
  6. package/changes.json +5 -0
  7. package/deprecated.d.ts +184 -0
  8. package/devserver.d.ts +187 -0
  9. package/docs/README.md +28 -0
  10. package/docs/bundler/bytecode.mdx +447 -0
  11. package/docs/bundler/css.mdx +1024 -0
  12. package/docs/bundler/esbuild.mdx +304 -0
  13. package/docs/bundler/executables.mdx +1318 -0
  14. package/docs/bundler/fullstack.mdx +1086 -0
  15. package/docs/bundler/hot-reloading.mdx +229 -0
  16. package/docs/bundler/html-static.mdx +498 -0
  17. package/docs/bundler/index.mdx +1840 -0
  18. package/docs/bundler/loaders.mdx +451 -0
  19. package/docs/bundler/macros.mdx +328 -0
  20. package/docs/bundler/minifier.mdx +1286 -0
  21. package/docs/bundler/plugins.mdx +477 -0
  22. package/docs/bundler/standalone-html.mdx +314 -0
  23. package/docs/feedback.mdx +75 -0
  24. package/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
  25. package/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
  26. package/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
  27. package/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
  28. package/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
  29. package/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
  30. package/docs/guides/binary/blob-to-dataview.mdx +16 -0
  31. package/docs/guides/binary/blob-to-stream.mdx +16 -0
  32. package/docs/guides/binary/blob-to-string.mdx +17 -0
  33. package/docs/guides/binary/blob-to-typedarray.mdx +16 -0
  34. package/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
  35. package/docs/guides/binary/buffer-to-blob.mdx +16 -0
  36. package/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
  37. package/docs/guides/binary/buffer-to-string.mdx +27 -0
  38. package/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
  39. package/docs/guides/binary/dataview-to-string.mdx +17 -0
  40. package/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
  41. package/docs/guides/binary/typedarray-to-blob.mdx +18 -0
  42. package/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
  43. package/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
  44. package/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
  45. package/docs/guides/binary/typedarray-to-string.mdx +18 -0
  46. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  47. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  48. package/docs/guides/deployment/google-cloud-run.mdx +194 -0
  49. package/docs/guides/deployment/railway.mdx +145 -0
  50. package/docs/guides/deployment/render.mdx +82 -0
  51. package/docs/guides/deployment/vercel.mdx +97 -0
  52. package/docs/guides/ecosystem/astro.mdx +82 -0
  53. package/docs/guides/ecosystem/discordjs.mdx +80 -0
  54. package/docs/guides/ecosystem/docker.mdx +151 -0
  55. package/docs/guides/ecosystem/drizzle.mdx +195 -0
  56. package/docs/guides/ecosystem/elysia.mdx +31 -0
  57. package/docs/guides/ecosystem/express.mdx +43 -0
  58. package/docs/guides/ecosystem/gel.mdx +261 -0
  59. package/docs/guides/ecosystem/hono.mdx +47 -0
  60. package/docs/guides/ecosystem/mongoose.mdx +92 -0
  61. package/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
  62. package/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
  63. package/docs/guides/ecosystem/nextjs.mdx +103 -0
  64. package/docs/guides/ecosystem/nuxt.mdx +96 -0
  65. package/docs/guides/ecosystem/pm2.mdx +55 -0
  66. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  67. package/docs/guides/ecosystem/prisma.mdx +164 -0
  68. package/docs/guides/ecosystem/qwik.mdx +114 -0
  69. package/docs/guides/ecosystem/react.mdx +52 -0
  70. package/docs/guides/ecosystem/remix.mdx +97 -0
  71. package/docs/guides/ecosystem/sentry.mdx +54 -0
  72. package/docs/guides/ecosystem/solidstart.mdx +62 -0
  73. package/docs/guides/ecosystem/ssr-react.mdx +49 -0
  74. package/docs/guides/ecosystem/stric.mdx +54 -0
  75. package/docs/guides/ecosystem/sveltekit.mdx +138 -0
  76. package/docs/guides/ecosystem/systemd.mdx +114 -0
  77. package/docs/guides/ecosystem/tanstack-start.mdx +791 -0
  78. package/docs/guides/ecosystem/upstash.mdx +87 -0
  79. package/docs/guides/ecosystem/vite.mdx +77 -0
  80. package/docs/guides/html-rewriter/extract-links.mdx +71 -0
  81. package/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
  82. package/docs/guides/http/cluster.mdx +69 -0
  83. package/docs/guides/http/fetch-unix.mdx +35 -0
  84. package/docs/guides/http/fetch.mdx +26 -0
  85. package/docs/guides/http/file-uploads.mdx +97 -0
  86. package/docs/guides/http/hot.mdx +28 -0
  87. package/docs/guides/http/proxy.mdx +50 -0
  88. package/docs/guides/http/server.mdx +48 -0
  89. package/docs/guides/http/simple.mdx +20 -0
  90. package/docs/guides/http/sse.mdx +91 -0
  91. package/docs/guides/http/stream-file.mdx +50 -0
  92. package/docs/guides/http/stream-iterator.mdx +49 -0
  93. package/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
  94. package/docs/guides/http/tls.mdx +32 -0
  95. package/docs/guides/index.mdx +10 -0
  96. package/docs/guides/install/add-dev.mdx +28 -0
  97. package/docs/guides/install/add-git.mdx +40 -0
  98. package/docs/guides/install/add-optional.mdx +27 -0
  99. package/docs/guides/install/add-peer.mdx +45 -0
  100. package/docs/guides/install/add-tarball.mdx +35 -0
  101. package/docs/guides/install/add.mdx +44 -0
  102. package/docs/guides/install/azure-artifacts.mdx +76 -0
  103. package/docs/guides/install/cicd.mdx +43 -0
  104. package/docs/guides/install/custom-registry.mdx +32 -0
  105. package/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
  106. package/docs/guides/install/git-diff-bun-lockfile.mdx +48 -0
  107. package/docs/guides/install/jfrog-artifactory.mdx +28 -0
  108. package/docs/guides/install/npm-alias.mdx +25 -0
  109. package/docs/guides/install/registry-scope.mdx +40 -0
  110. package/docs/guides/install/trusted.mdx +52 -0
  111. package/docs/guides/install/workspaces.mdx +70 -0
  112. package/docs/guides/install/yarnlock.mdx +51 -0
  113. package/docs/guides/process/argv.mdx +66 -0
  114. package/docs/guides/process/ctrl-c.mdx +18 -0
  115. package/docs/guides/process/ipc.mdx +69 -0
  116. package/docs/guides/process/nanoseconds.mdx +15 -0
  117. package/docs/guides/process/os-signals.mdx +31 -0
  118. package/docs/guides/process/spawn-stderr.mdx +34 -0
  119. package/docs/guides/process/spawn-stdout.mdx +28 -0
  120. package/docs/guides/process/spawn.mdx +43 -0
  121. package/docs/guides/process/stdin.mdx +62 -0
  122. package/docs/guides/read-file/arraybuffer.mdx +30 -0
  123. package/docs/guides/read-file/buffer.mdx +21 -0
  124. package/docs/guides/read-file/exists.mdx +18 -0
  125. package/docs/guides/read-file/json.mdx +19 -0
  126. package/docs/guides/read-file/mime.mdx +22 -0
  127. package/docs/guides/read-file/stream.mdx +28 -0
  128. package/docs/guides/read-file/string.mdx +24 -0
  129. package/docs/guides/read-file/uint8array.mdx +23 -0
  130. package/docs/guides/read-file/watch.mdx +66 -0
  131. package/docs/guides/runtime/build-time-constants.mdx +295 -0
  132. package/docs/guides/runtime/cicd.mdx +45 -0
  133. package/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
  134. package/docs/guides/runtime/define-constant.mdx +149 -0
  135. package/docs/guides/runtime/delete-directory.mdx +39 -0
  136. package/docs/guides/runtime/delete-file.mdx +21 -0
  137. package/docs/guides/runtime/heap-snapshot.mdx +28 -0
  138. package/docs/guides/runtime/import-html.mdx +15 -0
  139. package/docs/guides/runtime/import-json.mdx +46 -0
  140. package/docs/guides/runtime/import-json5.mdx +74 -0
  141. package/docs/guides/runtime/import-toml.mdx +32 -0
  142. package/docs/guides/runtime/import-yaml.mdx +104 -0
  143. package/docs/guides/runtime/read-env.mdx +37 -0
  144. package/docs/guides/runtime/set-env.mdx +51 -0
  145. package/docs/guides/runtime/shell.mdx +42 -0
  146. package/docs/guides/runtime/timezone.mdx +38 -0
  147. package/docs/guides/runtime/tsconfig-paths.mdx +31 -0
  148. package/docs/guides/runtime/typescript.mdx +51 -0
  149. package/docs/guides/runtime/vscode-debugger.mdx +47 -0
  150. package/docs/guides/runtime/web-debugger.mdx +103 -0
  151. package/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
  152. package/docs/guides/streams/node-readable-to-blob.mdx +13 -0
  153. package/docs/guides/streams/node-readable-to-json.mdx +14 -0
  154. package/docs/guides/streams/node-readable-to-string.mdx +14 -0
  155. package/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
  156. package/docs/guides/streams/to-array.mdx +16 -0
  157. package/docs/guides/streams/to-arraybuffer.mdx +16 -0
  158. package/docs/guides/streams/to-blob.mdx +16 -0
  159. package/docs/guides/streams/to-buffer.mdx +17 -0
  160. package/docs/guides/streams/to-json.mdx +16 -0
  161. package/docs/guides/streams/to-string.mdx +16 -0
  162. package/docs/guides/streams/to-typedarray.mdx +24 -0
  163. package/docs/guides/test/bail.mdx +24 -0
  164. package/docs/guides/test/concurrent-test-glob.mdx +146 -0
  165. package/docs/guides/test/coverage-threshold.mdx +67 -0
  166. package/docs/guides/test/coverage.mdx +49 -0
  167. package/docs/guides/test/happy-dom.mdx +73 -0
  168. package/docs/guides/test/migrate-from-jest.mdx +125 -0
  169. package/docs/guides/test/mock-clock.mdx +50 -0
  170. package/docs/guides/test/mock-functions.mdx +70 -0
  171. package/docs/guides/test/rerun-each.mdx +16 -0
  172. package/docs/guides/test/run-tests.mdx +116 -0
  173. package/docs/guides/test/skip-tests.mdx +43 -0
  174. package/docs/guides/test/snapshot.mdx +102 -0
  175. package/docs/guides/test/spy-on.mdx +49 -0
  176. package/docs/guides/test/svelte-test.mdx +113 -0
  177. package/docs/guides/test/testing-library.mdx +93 -0
  178. package/docs/guides/test/timeout.mdx +17 -0
  179. package/docs/guides/test/todo-tests.mdx +74 -0
  180. package/docs/guides/test/update-snapshots.mdx +49 -0
  181. package/docs/guides/test/watch-mode.mdx +24 -0
  182. package/docs/guides/util/base64.mdx +17 -0
  183. package/docs/guides/util/deep-equals.mdx +41 -0
  184. package/docs/guides/util/deflate.mdx +20 -0
  185. package/docs/guides/util/detect-bun.mdx +28 -0
  186. package/docs/guides/util/entrypoint.mdx +19 -0
  187. package/docs/guides/util/escape-html.mdx +24 -0
  188. package/docs/guides/util/file-url-to-path.mdx +16 -0
  189. package/docs/guides/util/gzip.mdx +20 -0
  190. package/docs/guides/util/hash-a-password.mdx +56 -0
  191. package/docs/guides/util/import-meta-dir.mdx +15 -0
  192. package/docs/guides/util/import-meta-file.mdx +15 -0
  193. package/docs/guides/util/import-meta-path.mdx +15 -0
  194. package/docs/guides/util/javascript-uuid.mdx +25 -0
  195. package/docs/guides/util/main.mdx +43 -0
  196. package/docs/guides/util/path-to-file-url.mdx +16 -0
  197. package/docs/guides/util/sleep.mdx +24 -0
  198. package/docs/guides/util/upgrade.mdx +93 -0
  199. package/docs/guides/util/version.mdx +23 -0
  200. package/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
  201. package/docs/guides/websocket/compression.mdx +33 -0
  202. package/docs/guides/websocket/context.mdx +79 -0
  203. package/docs/guides/websocket/pubsub.mdx +43 -0
  204. package/docs/guides/websocket/simple.mdx +38 -0
  205. package/docs/guides/write-file/append.mdx +54 -0
  206. package/docs/guides/write-file/basic.mdx +46 -0
  207. package/docs/guides/write-file/blob.mdx +30 -0
  208. package/docs/guides/write-file/cat.mdx +19 -0
  209. package/docs/guides/write-file/file-cp.mdx +18 -0
  210. package/docs/guides/write-file/filesink.mdx +54 -0
  211. package/docs/guides/write-file/response.mdx +19 -0
  212. package/docs/guides/write-file/stdout.mdx +23 -0
  213. package/docs/guides/write-file/stream.mdx +19 -0
  214. package/docs/guides/write-file/unlink.mdx +18 -0
  215. package/docs/index.mdx +133 -0
  216. package/docs/installation.mdx +372 -0
  217. package/docs/pm/bunx.mdx +91 -0
  218. package/docs/pm/catalogs.mdx +292 -0
  219. package/docs/pm/cli/add.mdx +179 -0
  220. package/docs/pm/cli/audit.mdx +60 -0
  221. package/docs/pm/cli/info.mdx +70 -0
  222. package/docs/pm/cli/install.mdx +591 -0
  223. package/docs/pm/cli/link.mdx +61 -0
  224. package/docs/pm/cli/outdated.mdx +197 -0
  225. package/docs/pm/cli/patch.mdx +69 -0
  226. package/docs/pm/cli/pm.mdx +323 -0
  227. package/docs/pm/cli/publish.mdx +131 -0
  228. package/docs/pm/cli/remove.mdx +16 -0
  229. package/docs/pm/cli/update.mdx +140 -0
  230. package/docs/pm/cli/why.mdx +84 -0
  231. package/docs/pm/filter.mdx +127 -0
  232. package/docs/pm/global-cache.mdx +72 -0
  233. package/docs/pm/isolated-installs.mdx +220 -0
  234. package/docs/pm/lifecycle.mdx +64 -0
  235. package/docs/pm/lockfile.mdx +64 -0
  236. package/docs/pm/npmrc.mdx +245 -0
  237. package/docs/pm/overrides.mdx +83 -0
  238. package/docs/pm/scopes-registries.mdx +35 -0
  239. package/docs/pm/security-scanner-api.mdx +95 -0
  240. package/docs/pm/workspaces.mdx +115 -0
  241. package/docs/project/benchmarking.mdx +296 -0
  242. package/docs/project/bindgen.mdx +223 -0
  243. package/docs/project/building-windows.mdx +143 -0
  244. package/docs/project/contributing.mdx +366 -0
  245. package/docs/project/feedback.mdx +20 -0
  246. package/docs/project/license.mdx +78 -0
  247. package/docs/project/roadmap.mdx +8 -0
  248. package/docs/quickstart.mdx +251 -0
  249. package/docs/runtime/archive.mdx +452 -0
  250. package/docs/runtime/auto-install.mdx +97 -0
  251. package/docs/runtime/binary-data.mdx +846 -0
  252. package/docs/runtime/bun-apis.mdx +60 -0
  253. package/docs/runtime/bunfig.mdx +765 -0
  254. package/docs/runtime/c-compiler.mdx +204 -0
  255. package/docs/runtime/child-process.mdx +659 -0
  256. package/docs/runtime/color.mdx +267 -0
  257. package/docs/runtime/console.mdx +67 -0
  258. package/docs/runtime/cookies.mdx +454 -0
  259. package/docs/runtime/cron.mdx +358 -0
  260. package/docs/runtime/csrf.mdx +171 -0
  261. package/docs/runtime/debugger.mdx +335 -0
  262. package/docs/runtime/environment-variables.mdx +231 -0
  263. package/docs/runtime/ffi.mdx +567 -0
  264. package/docs/runtime/file-io.mdx +306 -0
  265. package/docs/runtime/file-system-router.mdx +118 -0
  266. package/docs/runtime/file-types.mdx +482 -0
  267. package/docs/runtime/glob.mdx +181 -0
  268. package/docs/runtime/globals.mdx +72 -0
  269. package/docs/runtime/hashing.mdx +315 -0
  270. package/docs/runtime/html-rewriter.mdx +333 -0
  271. package/docs/runtime/http/cookies.mdx +79 -0
  272. package/docs/runtime/http/error-handling.mdx +40 -0
  273. package/docs/runtime/http/metrics.mdx +36 -0
  274. package/docs/runtime/http/routing.mdx +289 -0
  275. package/docs/runtime/http/server.mdx +672 -0
  276. package/docs/runtime/http/tls.mdx +101 -0
  277. package/docs/runtime/http/websockets.mdx +414 -0
  278. package/docs/runtime/index.mdx +223 -0
  279. package/docs/runtime/json5.mdx +271 -0
  280. package/docs/runtime/jsonl.mdx +188 -0
  281. package/docs/runtime/jsx.mdx +115 -0
  282. package/docs/runtime/markdown.mdx +381 -0
  283. package/docs/runtime/module-resolution.mdx +374 -0
  284. package/docs/runtime/networking/dns.mdx +111 -0
  285. package/docs/runtime/networking/fetch.mdx +484 -0
  286. package/docs/runtime/networking/tcp.mdx +239 -0
  287. package/docs/runtime/networking/udp.mdx +180 -0
  288. package/docs/runtime/node-api.mdx +19 -0
  289. package/docs/runtime/nodejs-compat.mdx +468 -0
  290. package/docs/runtime/plugins.mdx +419 -0
  291. package/docs/runtime/redis.mdx +583 -0
  292. package/docs/runtime/repl.mdx +176 -0
  293. package/docs/runtime/s3.mdx +881 -0
  294. package/docs/runtime/secrets.mdx +340 -0
  295. package/docs/runtime/semver.mdx +57 -0
  296. package/docs/runtime/shell.mdx +637 -0
  297. package/docs/runtime/sql.mdx +1404 -0
  298. package/docs/runtime/sqlite.mdx +721 -0
  299. package/docs/runtime/streams.mdx +232 -0
  300. package/docs/runtime/templating/create.mdx +269 -0
  301. package/docs/runtime/templating/init.mdx +58 -0
  302. package/docs/runtime/toml.mdx +238 -0
  303. package/docs/runtime/transpiler.mdx +288 -0
  304. package/docs/runtime/typescript.mdx +58 -0
  305. package/docs/runtime/utils.mdx +1010 -0
  306. package/docs/runtime/watch-mode.mdx +161 -0
  307. package/docs/runtime/web-apis.mdx +29 -0
  308. package/docs/runtime/workers.mdx +314 -0
  309. package/docs/runtime/yaml.mdx +470 -0
  310. package/docs/snippets/cli/add.mdx +166 -0
  311. package/docs/snippets/cli/build.mdx +197 -0
  312. package/docs/snippets/cli/bunx.mdx +49 -0
  313. package/docs/snippets/cli/feedback.mdx +17 -0
  314. package/docs/snippets/cli/init.mdx +84 -0
  315. package/docs/snippets/cli/install.mdx +173 -0
  316. package/docs/snippets/cli/link.mdx +163 -0
  317. package/docs/snippets/cli/outdated.mdx +140 -0
  318. package/docs/snippets/cli/patch.mdx +171 -0
  319. package/docs/snippets/cli/publish.mdx +198 -0
  320. package/docs/snippets/cli/remove.mdx +146 -0
  321. package/docs/snippets/cli/run.mdx +305 -0
  322. package/docs/snippets/cli/test.mdx +105 -0
  323. package/docs/snippets/cli/update.mdx +144 -0
  324. package/docs/test/code-coverage.mdx +409 -0
  325. package/docs/test/configuration.mdx +574 -0
  326. package/docs/test/dates-times.mdx +129 -0
  327. package/docs/test/discovery.mdx +90 -0
  328. package/docs/test/dom.mdx +226 -0
  329. package/docs/test/index.mdx +409 -0
  330. package/docs/test/lifecycle.mdx +366 -0
  331. package/docs/test/mocks.mdx +637 -0
  332. package/docs/test/reporters.mdx +126 -0
  333. package/docs/test/runtime-behavior.mdx +342 -0
  334. package/docs/test/snapshots.mdx +434 -0
  335. package/docs/test/writing-tests.mdx +672 -0
  336. package/docs/typescript.mdx +54 -0
  337. package/extensions.d.ts +40 -0
  338. package/fetch.d.ts +79 -0
  339. package/ffi.d.ts +1154 -0
  340. package/globals.d.ts +2067 -0
  341. package/html-rewriter.d.ts +186 -0
  342. package/index.d.ts +32 -0
  343. package/jsc.d.ts +233 -0
  344. package/jsx.d.ts +11 -0
  345. package/overrides.d.ts +376 -0
  346. package/package.json +53 -0
  347. package/redis.d.ts +3352 -0
  348. package/s3.d.ts +1354 -0
  349. package/security.d.ts +101 -0
  350. package/serve.d.ts +1296 -0
  351. package/shell.d.ts +380 -0
  352. package/sql.d.ts +887 -0
  353. package/sqlite.d.ts +1322 -0
  354. package/test-globals.d.ts +22 -0
  355. package/test.d.ts +2392 -0
  356. package/vendor/expect-type/branding.d.ts +283 -0
  357. package/vendor/expect-type/index.d.ts +1207 -0
  358. package/vendor/expect-type/messages.d.ts +395 -0
  359. package/vendor/expect-type/overloads.d.ts +669 -0
  360. package/vendor/expect-type/utils.d.ts +431 -0
  361. package/wasm.d.ts +193 -0
@@ -0,0 +1,574 @@
1
+ ---
2
+ title: "Test configuration"
3
+ description: "Learn how to configure Bun test behavior using bunfig.toml and command-line options"
4
+ ---
5
+
6
+ Configure `bun test` via `bunfig.toml` file and command-line options. This page documents the available configuration options for `bun test`.
7
+
8
+ ## Configuration File
9
+
10
+ You can configure `bun test` behavior by adding a `[test]` section to your `bunfig.toml` file:
11
+
12
+ ```toml title="bunfig.toml" icon="settings"
13
+ [test]
14
+ # Options go here
15
+ ```
16
+
17
+ ## Test Discovery
18
+
19
+ ### root
20
+
21
+ The `root` option specifies a root directory for test discovery, overriding the default behavior of scanning from the project root.
22
+
23
+ ```toml title="bunfig.toml" icon="settings"
24
+ [test]
25
+ root = "src" # Only scan for tests in the src directory
26
+ ```
27
+
28
+ This is useful when you want to:
29
+
30
+ - Limit test discovery to specific directories
31
+ - Exclude certain parts of your project from test scanning
32
+ - Organize tests in a specific subdirectory structure
33
+
34
+ #### Examples
35
+
36
+ ```toml title="bunfig.toml" icon="settings"
37
+ [test]
38
+ # Only run tests in the src directory
39
+ root = "src"
40
+
41
+ # Run tests in a specific test directory
42
+ root = "tests"
43
+
44
+ # Run tests in multiple specific directories (not currently supported - use patterns instead)
45
+ # root = ["src", "lib"] # This syntax is not supported
46
+ ```
47
+
48
+ ### Preload Scripts
49
+
50
+ Load scripts before running tests using the `preload` option:
51
+
52
+ ```toml title="bunfig.toml" icon="settings"
53
+ [test]
54
+ preload = ["./test-setup.ts", "./global-mocks.ts"]
55
+ ```
56
+
57
+ This is equivalent to using `--preload` on the command line:
58
+
59
+ ```bash terminal icon="terminal"
60
+ bun test --preload ./test-setup.ts --preload ./global-mocks.ts
61
+ ```
62
+
63
+ #### Common Preload Use Cases
64
+
65
+ ```ts title="test-setup.ts" icon="/icons/typescript.svg"
66
+ // Global test setup
67
+ import { beforeAll, afterAll } from "bun:test";
68
+
69
+ beforeAll(() => {
70
+ // Set up test database
71
+ setupTestDatabase();
72
+ });
73
+
74
+ afterAll(() => {
75
+ // Clean up
76
+ cleanupTestDatabase();
77
+ });
78
+ ```
79
+
80
+ ```ts title="global-mocks.ts" icon="/icons/typescript.svg"
81
+ // Global mocks
82
+ import { mock } from "bun:test";
83
+
84
+ // Mock environment variables
85
+ process.env.NODE_ENV = "test";
86
+ process.env.API_URL = "http://localhost:3001";
87
+
88
+ // Mock external dependencies
89
+ mock.module("./external-api", () => ({
90
+ fetchData: mock(() => Promise.resolve({ data: "test" })),
91
+ }));
92
+ ```
93
+
94
+ ### Path Ignore Patterns
95
+
96
+ Exclude files and directories from test discovery entirely using glob patterns. Unlike `coveragePathIgnorePatterns` which only affects coverage reports, `pathIgnorePatterns` prevents matching paths from being discovered and run as tests.
97
+
98
+ This is useful when your project contains submodules, vendored code, or other directories with `*.test.ts` files that you don't want `bun test` to pick up.
99
+
100
+ ```toml title="bunfig.toml" icon="settings"
101
+ [test]
102
+ # Single pattern
103
+ pathIgnorePatterns = "vendor/**"
104
+
105
+ # Multiple patterns
106
+ pathIgnorePatterns = [
107
+ "vendor/**",
108
+ "submodules/**",
109
+ "fixtures/**"
110
+ ]
111
+ ```
112
+
113
+ This is equivalent to using `--path-ignore-patterns` on the command line:
114
+
115
+ ```bash terminal icon="terminal"
116
+ bun test --path-ignore-patterns 'vendor/**' --path-ignore-patterns 'fixtures/**'
117
+ ```
118
+
119
+ Directories matching a pattern are pruned during scanning, so their contents are never traversed. This means ignoring a large directory tree is efficient -- Bun won't spend time reading files inside it.
120
+
121
+ #### Common Use Cases
122
+
123
+ ```toml title="bunfig.toml" icon="settings"
124
+ [test]
125
+ pathIgnorePatterns = [
126
+ # Git submodules with their own test suites
127
+ "submodules/**",
128
+
129
+ # Vendored dependencies
130
+ "vendor/**",
131
+ "third-party/**",
132
+
133
+ # Test fixtures that look like tests but aren't
134
+ "fixtures/**",
135
+ "**/test-data/**",
136
+
137
+ # Integration / E2E tests you want to run separately
138
+ "**/integration/**",
139
+ "e2e/**"
140
+ ]
141
+ ```
142
+
143
+ <Note>
144
+ Command-line `--path-ignore-patterns` flags override the `bunfig.toml` value entirely -- the two are not merged.
145
+ </Note>
146
+
147
+ ## Timeouts
148
+
149
+ ### Default Timeout
150
+
151
+ Set the default timeout for all tests:
152
+
153
+ ```toml title="bunfig.toml" icon="settings"
154
+ [test]
155
+ timeout = 10000 # 10 seconds (default is 5000ms)
156
+ ```
157
+
158
+ This applies to all tests unless overridden by individual test timeouts:
159
+
160
+ ```ts title="test.ts" icon="/icons/typescript.svg"
161
+ // This test will use the default timeout from bunfig.toml
162
+ test("uses default timeout", () => {
163
+ // test implementation
164
+ });
165
+
166
+ // This test overrides the default timeout
167
+ test("custom timeout", () => {
168
+ // test implementation
169
+ }, 30000); // 30 seconds
170
+ ```
171
+
172
+ ## Reporters
173
+
174
+ ### JUnit Reporter
175
+
176
+ Configure the JUnit reporter output file path directly in the config file:
177
+
178
+ ```toml title="bunfig.toml" icon="settings"
179
+ [test.reporter]
180
+ junit = "path/to/junit.xml" # Output path for JUnit XML report
181
+ ```
182
+
183
+ This complements the `--reporter=junit` and `--reporter-outfile` CLI flags:
184
+
185
+ ```bash terminal icon="terminal"
186
+ # Equivalent command line usage
187
+ bun test --reporter=junit --reporter-outfile=./junit.xml
188
+ ```
189
+
190
+ #### Multiple Reporters
191
+
192
+ You can use multiple reporters simultaneously:
193
+
194
+ ```bash terminal icon="terminal"
195
+ # CLI approach
196
+ bun test --reporter=junit --reporter-outfile=./junit.xml
197
+
198
+ # Config file approach
199
+ ```
200
+
201
+ ```toml title="bunfig.toml" icon="settings"
202
+ [test.reporter]
203
+ junit = "./reports/junit.xml"
204
+
205
+ [test]
206
+ # Also enable coverage reporting
207
+ coverage = true
208
+ coverageReporter = ["text", "lcov"]
209
+ ```
210
+
211
+ ## Memory Usage
212
+
213
+ ### smol Mode
214
+
215
+ Enable the `--smol` memory-saving mode specifically for the test runner:
216
+
217
+ ```toml title="bunfig.toml" icon="settings"
218
+ [test]
219
+ smol = true # Reduce memory usage during test runs
220
+ ```
221
+
222
+ This is equivalent to using the `--smol` flag on the command line:
223
+
224
+ ```bash terminal icon="terminal"
225
+ bun test --smol
226
+ ```
227
+
228
+ The `smol` mode reduces memory usage by:
229
+
230
+ - Using less memory for the JavaScript heap
231
+ - Being more aggressive about garbage collection
232
+ - Reducing buffer sizes where possible
233
+
234
+ This is useful for:
235
+
236
+ - CI environments with limited memory
237
+ - Large test suites that consume significant memory
238
+ - Development environments with memory constraints
239
+
240
+ ## Test execution
241
+
242
+ ### concurrentTestGlob
243
+
244
+ Automatically run test files matching a glob pattern with concurrent test execution enabled. This is useful for gradually migrating test suites to concurrent execution or for running specific test types concurrently.
245
+
246
+ ```toml title="bunfig.toml" icon="settings"
247
+ [test]
248
+ concurrentTestGlob = "**/concurrent-*.test.ts" # Run files matching this pattern concurrently
249
+ ```
250
+
251
+ Test files matching this pattern will behave as if the `--concurrent` flag was passed, running all tests within those files concurrently. This allows you to:
252
+
253
+ - Gradually migrate your test suite to concurrent execution
254
+ - Run integration tests concurrently while keeping unit tests sequential
255
+ - Separate fast concurrent tests from tests that require sequential execution
256
+
257
+ The `--concurrent` CLI flag will override this setting when specified, forcing all tests to run concurrently regardless of the glob pattern.
258
+
259
+ #### randomize
260
+
261
+ Run tests in random order to identify tests with hidden dependencies:
262
+
263
+ ```toml title="bunfig.toml" icon="settings"
264
+ [test]
265
+ randomize = true
266
+ ```
267
+
268
+ #### seed
269
+
270
+ Specify a seed for reproducible random test order. Requires `randomize = true`:
271
+
272
+ ```toml title="bunfig.toml" icon="settings"
273
+ [test]
274
+ randomize = true
275
+ seed = 2444615283
276
+ ```
277
+
278
+ #### retry
279
+
280
+ Default retry count for all tests. Failed tests will be retried up to this many times. Per-test `{ retry: N }` overrides this value. Default `0` (no retries).
281
+
282
+ ```toml title="bunfig.toml" icon="settings"
283
+ [test]
284
+ retry = 3
285
+ ```
286
+
287
+ The `--retry` CLI flag will override this setting when specified.
288
+
289
+ #### rerunEach
290
+
291
+ Re-run each test file multiple times to identify flaky tests:
292
+
293
+ ```toml title="bunfig.toml" icon="settings"
294
+ [test]
295
+ rerunEach = 3
296
+ ```
297
+
298
+ ## Coverage Options
299
+
300
+ ### Basic Coverage Settings
301
+
302
+ ```toml title="bunfig.toml" icon="settings"
303
+ [test]
304
+ # Enable coverage by default
305
+ coverage = true
306
+
307
+ # Set coverage reporter
308
+ coverageReporter = ["text", "lcov"]
309
+
310
+ # Set coverage output directory
311
+ coverageDir = "./coverage"
312
+ ```
313
+
314
+ ### Skip Test Files from Coverage
315
+
316
+ Exclude files matching test patterns (e.g., `*.test.ts`) from the coverage report:
317
+
318
+ ```toml title="bunfig.toml" icon="settings"
319
+ [test]
320
+ coverageSkipTestFiles = true # Exclude test files from coverage reports
321
+ ```
322
+
323
+ ### Coverage Thresholds
324
+
325
+ The coverage threshold can be specified either as a number or as an object with specific thresholds:
326
+
327
+ ```toml title="bunfig.toml" icon="settings"
328
+ [test]
329
+ # Simple threshold - applies to lines, functions, and statements
330
+ coverageThreshold = 0.8
331
+
332
+ # Detailed thresholds
333
+ coverageThreshold = { lines = 0.9, functions = 0.8, statements = 0.85 }
334
+ ```
335
+
336
+ Setting any of these enables `fail_on_low_coverage`, causing the test run to fail if coverage is below the threshold.
337
+
338
+ #### Threshold Examples
339
+
340
+ ```toml title="bunfig.toml" icon="settings"
341
+ [test]
342
+ # Require 90% coverage across the board
343
+ coverageThreshold = 0.9
344
+
345
+ # Different requirements for different metrics
346
+ coverageThreshold = {
347
+ lines = 0.85, # 85% line coverage
348
+ functions = 0.90, # 90% function coverage
349
+ statements = 0.80 # 80% statement coverage
350
+ }
351
+ ```
352
+
353
+ ### Coverage Path Ignore Patterns
354
+
355
+ Exclude specific files or file patterns from coverage reports using glob patterns:
356
+
357
+ ```toml title="bunfig.toml" icon="settings"
358
+ [test]
359
+ # Single pattern
360
+ coveragePathIgnorePatterns = "**/*.spec.ts"
361
+
362
+ # Multiple patterns
363
+ coveragePathIgnorePatterns = [
364
+ "**/*.spec.ts",
365
+ "**/*.test.ts",
366
+ "src/utils/**",
367
+ "*.config.js",
368
+ "generated/**",
369
+ "vendor/**"
370
+ ]
371
+ ```
372
+
373
+ Files matching any of these patterns will be excluded from coverage calculation and reporting. See the [coverage documentation](/docs/test/code-coverage) for more details and examples.
374
+
375
+ #### Common Ignore Patterns
376
+
377
+ ```toml title="bunfig.toml" icon="settings"
378
+ [test]
379
+ coveragePathIgnorePatterns = [
380
+ # Test files
381
+ "**/*.test.ts",
382
+ "**/*.spec.ts",
383
+ "**/*.e2e.ts",
384
+
385
+ # Configuration files
386
+ "*.config.js",
387
+ "*.config.ts",
388
+ "webpack.config.*",
389
+ "vite.config.*",
390
+
391
+ # Build output
392
+ "dist/**",
393
+ "build/**",
394
+ ".next/**",
395
+
396
+ # Generated code
397
+ "generated/**",
398
+ "**/*.generated.ts",
399
+
400
+ # Vendor/third-party
401
+ "vendor/**",
402
+ "third-party/**",
403
+
404
+ # Utilities that don't need testing
405
+ "src/utils/constants.ts",
406
+ "src/types/**"
407
+ ]
408
+ ```
409
+
410
+ ### Sourcemap Handling
411
+
412
+ Internally, Bun transpiles every file. That means code coverage must also go through sourcemaps before they can be reported. We expose this as a flag to allow you to opt out of this behavior, but it will be confusing because during the transpilation process, Bun may move code around and change variable names. This option is mostly useful for debugging coverage issues.
413
+
414
+ ```toml title="bunfig.toml" icon="settings"
415
+ [test]
416
+ coverageIgnoreSourcemaps = true # Don't use sourcemaps for coverage analysis
417
+ ```
418
+
419
+ <Warning>
420
+ When using this option, you probably want to stick a `// @bun` comment at the top of the source file to opt out of the
421
+ transpilation process.
422
+ </Warning>
423
+
424
+ ## Install Settings Inheritance
425
+
426
+ The `bun test` command inherits relevant network and installation configuration (registry, cafile, prefer, exact, etc.) from the `[install]` section of `bunfig.toml`. This is important if tests need to interact with private registries or require specific install behaviors triggered during the test run.
427
+
428
+ ```toml title="bunfig.toml" icon="settings"
429
+ [install]
430
+ # These settings are inherited by bun test
431
+ registry = "https://npm.company.com/"
432
+ exact = true
433
+ prefer = "offline"
434
+
435
+ [test]
436
+ # Test-specific configuration
437
+ coverage = true
438
+ timeout = 10000
439
+ ```
440
+
441
+ ## Environment Variables
442
+
443
+ Environment variables for tests should be set using `.env` files. Bun automatically loads `.env` files from your project root. For test-specific variables, create a `.env.test` file:
444
+
445
+ ```ini title=".env.test" icon="settings"
446
+ NODE_ENV=test
447
+ DATABASE_URL=postgresql://localhost:5432/test_db
448
+ LOG_LEVEL=error
449
+ ```
450
+
451
+ Then load it with `--env-file`:
452
+
453
+ ```bash terminal icon="terminal"
454
+ bun test --env-file=.env.test
455
+ ```
456
+
457
+ ## Complete Configuration Example
458
+
459
+ Here's a comprehensive example showing all available test configuration options:
460
+
461
+ ```toml title="bunfig.toml" icon="settings"
462
+ [install]
463
+ # Install settings inherited by tests
464
+ registry = "https://registry.npmjs.org/"
465
+ exact = true
466
+
467
+ [test]
468
+ # Test discovery
469
+ root = "src"
470
+ preload = ["./test-setup.ts", "./global-mocks.ts"]
471
+ pathIgnorePatterns = ["vendor/**", "submodules/**"]
472
+
473
+ # Execution settings
474
+ timeout = 10000
475
+ smol = true
476
+
477
+ # Coverage configuration
478
+ coverage = true
479
+ coverageReporter = ["text", "lcov"]
480
+ coverageDir = "./coverage"
481
+ coverageThreshold = { lines = 0.85, functions = 0.90, statements = 0.80 }
482
+ coverageSkipTestFiles = true
483
+ coveragePathIgnorePatterns = [
484
+ "**/*.spec.ts",
485
+ "src/utils/**",
486
+ "*.config.js",
487
+ "generated/**"
488
+ ]
489
+
490
+ # Advanced coverage settings
491
+ coverageIgnoreSourcemaps = false
492
+
493
+ # Reporter configuration
494
+ [test.reporter]
495
+ junit = "./reports/junit.xml"
496
+ ```
497
+
498
+ ## CLI Override Behavior
499
+
500
+ Command-line options always override configuration file settings:
501
+
502
+ ```toml title="bunfig.toml" icon="settings"
503
+ [test]
504
+ timeout = 5000
505
+ coverage = false
506
+ ```
507
+
508
+ ```bash terminal icon="terminal"
509
+ # These CLI flags override the config file
510
+ bun test --timeout 10000 --coverage
511
+ # timeout will be 10000ms and coverage will be enabled
512
+ ```
513
+
514
+ ## Conditional Configuration
515
+
516
+ You can use different configurations for different environments:
517
+
518
+ ```toml title="bunfig.toml" icon="settings"
519
+ [test]
520
+ # Default test configuration
521
+ coverage = false
522
+ timeout = 5000
523
+
524
+ # Override for CI environment
525
+ [test.ci]
526
+ coverage = true
527
+ coverageThreshold = 0.8
528
+ timeout = 30000
529
+ ```
530
+
531
+ Then in CI:
532
+
533
+ ```bash terminal icon="terminal"
534
+ # Use CI-specific settings
535
+ bun test --config=ci
536
+ ```
537
+
538
+ ## Validation and Troubleshooting
539
+
540
+ ### Invalid Configuration
541
+
542
+ Bun will warn about invalid configuration options:
543
+
544
+ ```toml title="bunfig.toml" icon="settings"
545
+ [test]
546
+ invalidOption = true # This will generate a warning
547
+ ```
548
+
549
+ ### Common Configuration Issues
550
+
551
+ 1. **Path Resolution**: Relative paths in config are resolved relative to the config file location
552
+ 2. **Pattern Matching**: Glob patterns use standard glob syntax
553
+ 3. **Type Mismatches**: Ensure numeric values are not quoted unless they should be strings
554
+
555
+ ```toml title="bunfig.toml" icon="settings"
556
+ [test]
557
+ # Correct
558
+ timeout = 10000
559
+
560
+ # Incorrect - will be treated as string
561
+ timeout = "10000"
562
+ ```
563
+
564
+ ### Debugging Configuration
565
+
566
+ To see what configuration is being used:
567
+
568
+ ```bash terminal icon="terminal"
569
+ # Show effective configuration
570
+ bun test --dry-run
571
+
572
+ # Verbose output to see configuration loading
573
+ bun test --verbose
574
+ ```
@@ -0,0 +1,129 @@
1
+ ---
2
+ title: "Dates and times"
3
+ description: "Learn how to manipulate time and dates in your Bun tests using setSystemTime and Jest compatibility functions"
4
+ ---
5
+
6
+ `bun:test` lets you change what time it is in your tests.
7
+
8
+ This works with any of the following:
9
+
10
+ - `Date.now`
11
+ - `new Date()`
12
+ - `new Intl.DateTimeFormat().format()`
13
+
14
+ <Note>Timers are not impacted yet, but may be in a future release of Bun.</Note>
15
+
16
+ ## setSystemTime
17
+
18
+ To change the system time, use `setSystemTime`:
19
+
20
+ ```ts title="test.ts" icon="/icons/typescript.svg"
21
+ import { setSystemTime, beforeAll, test, expect } from "bun:test";
22
+
23
+ beforeAll(() => {
24
+ setSystemTime(new Date("2020-01-01T00:00:00.000Z"));
25
+ });
26
+
27
+ test("it is 2020", () => {
28
+ expect(new Date().getFullYear()).toBe(2020);
29
+ });
30
+ ```
31
+
32
+ To support existing tests that use Jest's `useFakeTimers` and `useRealTimers`, you can use `useFakeTimers` and `useRealTimers`:
33
+
34
+ ```ts title="test.ts" icon="/icons/typescript.svg"
35
+ test("just like in jest", () => {
36
+ jest.useFakeTimers();
37
+ jest.setSystemTime(new Date("2020-01-01T00:00:00.000Z"));
38
+ expect(new Date().getFullYear()).toBe(2020);
39
+ jest.useRealTimers();
40
+ expect(new Date().getFullYear()).toBeGreaterThan(2020);
41
+ });
42
+
43
+ test("unlike in jest", () => {
44
+ const OriginalDate = Date;
45
+ jest.useFakeTimers();
46
+ if (typeof Bun === "undefined") {
47
+ // In Jest, the Date constructor changes
48
+ // That can cause all sorts of bugs because suddenly Date !== Date before the test.
49
+ expect(Date).not.toBe(OriginalDate);
50
+ expect(Date.now).not.toBe(OriginalDate.now);
51
+ } else {
52
+ // In bun:test, Date constructor does not change when you useFakeTimers
53
+ expect(Date).toBe(OriginalDate);
54
+ expect(Date.now).toBe(OriginalDate.now);
55
+ }
56
+ });
57
+ ```
58
+
59
+ <Warning>
60
+ **Timers** — Note that we have not implemented builtin support for mocking timers yet, but this is on the roadmap.
61
+ </Warning>
62
+
63
+ ## Reset the system time
64
+
65
+ To reset the system time, pass no arguments to `setSystemTime`:
66
+
67
+ ```ts title="test.ts" icon="/icons/typescript.svg"
68
+ import { setSystemTime, expect, test } from "bun:test";
69
+
70
+ test("it was 2020, for a moment.", () => {
71
+ // Set it to something!
72
+ setSystemTime(new Date("2020-01-01T00:00:00.000Z"));
73
+ expect(new Date().getFullYear()).toBe(2020);
74
+
75
+ // reset it!
76
+ setSystemTime();
77
+
78
+ expect(new Date().getFullYear()).toBeGreaterThan(2020);
79
+ });
80
+ ```
81
+
82
+ ## Get mocked time with jest.now()
83
+
84
+ When you're using mocked time (with `setSystemTime` or `useFakeTimers`), you can use `jest.now()` to get the current mocked timestamp:
85
+
86
+ ```ts title="test.ts" icon="/icons/typescript.svg"
87
+ import { test, expect, jest } from "bun:test";
88
+
89
+ test("get the current mocked time", () => {
90
+ jest.useFakeTimers();
91
+ jest.setSystemTime(new Date("2020-01-01T00:00:00.000Z"));
92
+
93
+ expect(Date.now()).toBe(1577836800000); // Jan 1, 2020 timestamp
94
+ expect(jest.now()).toBe(1577836800000); // Same value
95
+
96
+ jest.useRealTimers();
97
+ });
98
+ ```
99
+
100
+ This is useful when you need to access the mocked time directly without creating a new Date object.
101
+
102
+ ## Set the time zone
103
+
104
+ By default, the time zone for all `bun test` runs is set to UTC (`Etc/UTC`) unless overridden. To change the time zone, either pass the `$TZ` environment variable to `bun test`:
105
+
106
+ ```bash terminal icon="terminal"
107
+ TZ=America/Los_Angeles bun test
108
+ ```
109
+
110
+ Or set `process.env.TZ` at runtime:
111
+
112
+ ```ts title="test.ts" icon="/icons/typescript.svg"
113
+ import { test, expect } from "bun:test";
114
+
115
+ test("Welcome to California!", () => {
116
+ process.env.TZ = "America/Los_Angeles";
117
+ expect(new Date().getTimezoneOffset()).toBe(420);
118
+ expect(new Intl.DateTimeFormat().resolvedOptions().timeZone).toBe("America/Los_Angeles");
119
+ });
120
+
121
+ test("Welcome to New York!", () => {
122
+ // Unlike in Jest, you can set the timezone multiple times at runtime and it will work.
123
+ process.env.TZ = "America/New_York";
124
+ expect(new Date().getTimezoneOffset()).toBe(240);
125
+ expect(new Intl.DateTimeFormat().resolvedOptions().timeZone).toBe("America/New_York");
126
+ });
127
+ ```
128
+
129
+ <Info>Unlike in Jest, you can set the timezone multiple times at runtime and it will work.</Info>