bun-types 1.3.2-canary.20251105T140650 → 1.3.2

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 (370) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/README.md +28 -0
  3. package/docs/bundler/bytecode.mdx +465 -0
  4. package/docs/bundler/{css.md → css.mdx} +97 -101
  5. package/docs/bundler/esbuild.mdx +253 -0
  6. package/docs/bundler/{executables.md → executables.mdx} +130 -221
  7. package/docs/bundler/fullstack.mdx +1064 -0
  8. package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
  9. package/docs/bundler/{html.md → html-static.mdx} +148 -111
  10. package/docs/bundler/index.mdx +1499 -0
  11. package/docs/bundler/loaders.mdx +356 -0
  12. package/docs/bundler/{macros.md → macros.mdx} +83 -84
  13. package/docs/bundler/minifier.mdx +1306 -0
  14. package/docs/bundler/plugins.mdx +411 -0
  15. package/docs/feedback.mdx +85 -0
  16. package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
  17. package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
  18. package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
  19. package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
  20. package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
  21. package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
  22. package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
  23. package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
  24. package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
  25. package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
  26. package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
  27. package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
  28. package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
  29. package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
  30. package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
  31. package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
  32. package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
  33. package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
  34. package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
  35. package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
  36. package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
  37. package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
  38. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  39. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  40. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  41. package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
  42. package/docs/guides/deployment/render.mdx +82 -0
  43. package/docs/guides/deployment/vercel.mdx +99 -0
  44. package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
  45. package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
  46. package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
  47. package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
  48. package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
  49. package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
  50. package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
  51. package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
  52. package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
  53. package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
  54. package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
  55. package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
  56. package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
  57. package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
  58. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  59. package/docs/guides/ecosystem/prisma.mdx +164 -0
  60. package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
  61. package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
  62. package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
  63. package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
  64. package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
  65. package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
  66. package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
  67. package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
  68. package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
  69. package/docs/guides/ecosystem/upstash.mdx +87 -0
  70. package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
  71. package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
  72. package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
  73. package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
  74. package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
  75. package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
  76. package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
  77. package/docs/guides/http/{hot.md → hot.mdx} +9 -7
  78. package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
  79. package/docs/guides/http/{server.md → server.mdx} +4 -2
  80. package/docs/guides/http/{simple.md → simple.mdx} +4 -2
  81. package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
  82. package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
  83. package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
  84. package/docs/guides/http/{tls.md → tls.mdx} +5 -3
  85. package/docs/guides/index.mdx +10 -0
  86. package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
  87. package/docs/guides/install/add-git.mdx +38 -0
  88. package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
  89. package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
  90. package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
  91. package/docs/guides/install/{add.md → add.mdx} +12 -10
  92. package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
  93. package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
  94. package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
  95. package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
  96. package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
  97. package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
  98. package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
  99. package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
  100. package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
  101. package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
  102. package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
  103. package/docs/guides/process/{argv.md → argv.mdx} +17 -9
  104. package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
  105. package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
  106. package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
  107. package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
  108. package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
  109. package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
  110. package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
  111. package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
  112. package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
  113. package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
  114. package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
  115. package/docs/guides/read-file/{json.md → json.mdx} +4 -2
  116. package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
  117. package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
  118. package/docs/guides/read-file/{string.md → string.mdx} +3 -1
  119. package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
  120. package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
  121. package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
  122. package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
  123. package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
  124. package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
  125. package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
  126. package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
  127. package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
  128. package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
  129. package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
  130. package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
  131. package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
  132. package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
  133. package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
  134. package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
  135. package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
  136. package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
  137. package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
  138. package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
  139. package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
  140. package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
  141. package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
  142. package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
  143. package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
  144. package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
  145. package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
  146. package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
  147. package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
  148. package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
  149. package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
  150. package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
  151. package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
  152. package/docs/guides/test/{bail.md → bail.mdx} +7 -5
  153. package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
  154. package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
  155. package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
  156. package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
  157. package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
  158. package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
  159. package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
  160. package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
  161. package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
  162. package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
  163. package/docs/guides/test/spy-on.mdx +49 -0
  164. package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
  165. package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
  166. package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
  167. package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
  168. package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
  169. package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
  170. package/docs/guides/util/{base64.md → base64.mdx} +3 -1
  171. package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
  172. package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
  173. package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
  174. package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
  175. package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
  176. package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
  177. package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
  178. package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
  179. package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
  180. package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
  181. package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
  182. package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
  183. package/docs/guides/util/{main.md → main.mdx} +19 -8
  184. package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
  185. package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
  186. package/docs/guides/util/{version.md → version.mdx} +6 -4
  187. package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
  188. package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
  189. package/docs/guides/websocket/{context.md → context.mdx} +9 -12
  190. package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
  191. package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
  192. package/docs/guides/write-file/{append.md → append.mdx} +3 -1
  193. package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
  194. package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
  195. package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
  196. package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
  197. package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
  198. package/docs/guides/write-file/{response.md → response.mdx} +3 -1
  199. package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
  200. package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
  201. package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
  202. package/docs/{index.md → index.mdx} +97 -41
  203. package/docs/installation.mdx +365 -0
  204. package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
  205. package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
  206. package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
  207. package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
  208. package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
  209. package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
  210. package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
  211. package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
  212. package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
  213. package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
  214. package/docs/pm/cli/remove.mdx +16 -0
  215. package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
  216. package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
  217. package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
  218. package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
  219. package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
  220. package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
  221. package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
  222. package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
  223. package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
  224. package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
  225. package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
  226. package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
  227. package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
  228. package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
  229. package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
  230. package/docs/project/{contributing.md → contributing.mdx} +56 -60
  231. package/docs/project/feedback.mdx +20 -0
  232. package/docs/project/license.mdx +78 -0
  233. package/docs/project/roadmap.mdx +8 -0
  234. package/docs/quickstart.mdx +240 -0
  235. package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
  236. package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
  237. package/docs/runtime/bun-apis.mdx +59 -0
  238. package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
  239. package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
  240. package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
  241. package/docs/{api/color.md → runtime/color.mdx} +6 -1
  242. package/docs/{api/console.md → runtime/console.mdx} +17 -7
  243. package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
  244. package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
  245. package/docs/runtime/environment-variables.mdx +214 -0
  246. package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
  247. package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
  248. package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
  249. package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
  250. package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
  251. package/docs/runtime/globals.mdx +72 -0
  252. package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
  253. package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
  254. package/docs/runtime/http/cookies.mdx +79 -0
  255. package/docs/runtime/http/error-handling.mdx +40 -0
  256. package/docs/runtime/http/metrics.mdx +36 -0
  257. package/docs/runtime/http/routing.mdx +289 -0
  258. package/docs/runtime/http/server.mdx +647 -0
  259. package/docs/runtime/http/tls.mdx +101 -0
  260. package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
  261. package/docs/{cli/run.md → runtime/index.mdx} +70 -108
  262. package/docs/runtime/jsx.mdx +115 -0
  263. package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
  264. package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
  265. package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
  266. package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
  267. package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
  268. package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
  269. package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
  270. package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
  271. package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
  272. package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
  273. package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
  274. package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
  275. package/docs/runtime/{shell.md → shell.mdx} +52 -20
  276. package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
  277. package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
  278. package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
  279. package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
  280. package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
  281. package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
  282. package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
  283. package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
  284. package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
  285. package/docs/runtime/web-apis.mdx +29 -0
  286. package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
  287. package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
  288. package/docs/snippets/cli/add.mdx +166 -0
  289. package/docs/snippets/cli/build.mdx +196 -0
  290. package/docs/snippets/cli/feedback.mdx +17 -0
  291. package/docs/snippets/cli/init.mdx +84 -0
  292. package/docs/snippets/cli/install.mdx +173 -0
  293. package/docs/snippets/cli/link.mdx +163 -0
  294. package/docs/snippets/cli/outdated.mdx +140 -0
  295. package/docs/snippets/cli/patch.mdx +171 -0
  296. package/docs/snippets/cli/publish.mdx +198 -0
  297. package/docs/snippets/cli/remove.mdx +146 -0
  298. package/docs/snippets/cli/run.mdx +293 -0
  299. package/docs/snippets/cli/test.mdx +100 -0
  300. package/docs/snippets/cli/update.mdx +144 -0
  301. package/docs/snippets/product-card.mdx +32 -0
  302. package/docs/snippets/product-tiles.mdx +94 -0
  303. package/docs/test/code-coverage.mdx +409 -0
  304. package/docs/test/configuration.mdx +467 -0
  305. package/docs/test/{time.md → dates-times.mdx} +23 -20
  306. package/docs/test/{discovery.md → discovery.mdx} +15 -10
  307. package/docs/test/dom.mdx +226 -0
  308. package/docs/{cli/test.md → test/index.mdx} +77 -94
  309. package/docs/test/lifecycle.mdx +348 -0
  310. package/docs/test/mocks.mdx +637 -0
  311. package/docs/test/{reporters.md → reporters.mdx} +15 -15
  312. package/docs/test/runtime-behavior.mdx +342 -0
  313. package/docs/test/snapshots.mdx +434 -0
  314. package/docs/test/writing-tests.mdx +635 -0
  315. package/docs/typescript.mdx +54 -0
  316. package/package.json +8 -6
  317. package/test.d.ts +2 -2
  318. package/docs/api/file.md +0 -19
  319. package/docs/api/globals.md +0 -387
  320. package/docs/api/http.md +0 -1408
  321. package/docs/api/import-meta.md +0 -69
  322. package/docs/benchmarks.md +0 -120
  323. package/docs/bun-flavored-toml.md +0 -42
  324. package/docs/bundler/css_modules.md +0 -145
  325. package/docs/bundler/fullstack.md +0 -418
  326. package/docs/bundler/index.md +0 -1735
  327. package/docs/bundler/intro.md +0 -75
  328. package/docs/bundler/vs-esbuild.md +0 -1127
  329. package/docs/cli/bun-completions.md +0 -3
  330. package/docs/cli/bun-install.md +0 -349
  331. package/docs/cli/bun-upgrade.md +0 -39
  332. package/docs/cli/info.md +0 -65
  333. package/docs/cli/patch-commit.md +0 -11
  334. package/docs/cli/remove.md +0 -7
  335. package/docs/cli/unlink.md +0 -9
  336. package/docs/contributing/upgrading-webkit.md +0 -57
  337. package/docs/ecosystem/elysia.md +0 -24
  338. package/docs/ecosystem/express.md +0 -37
  339. package/docs/ecosystem/hono.md +0 -18
  340. package/docs/ecosystem/react.md +0 -65
  341. package/docs/ecosystem/stric.md +0 -38
  342. package/docs/guides/ecosystem/prisma.md +0 -141
  343. package/docs/guides/ecosystem/render.md +0 -79
  344. package/docs/guides/install/add-git.md +0 -36
  345. package/docs/guides/test/spy-on.md +0 -46
  346. package/docs/install/index.md +0 -248
  347. package/docs/installation.md +0 -327
  348. package/docs/project/asan.md +0 -124
  349. package/docs/project/internals/build-process-for-ci.md +0 -75
  350. package/docs/project/licensing.md +0 -73
  351. package/docs/project/roadmap.md +0 -87
  352. package/docs/quickstart.md +0 -157
  353. package/docs/runtime/bun-apis.md +0 -207
  354. package/docs/runtime/env.md +0 -253
  355. package/docs/runtime/index.md +0 -312
  356. package/docs/runtime/jsx.md +0 -385
  357. package/docs/runtime/loaders.md +0 -130
  358. package/docs/runtime/plugins.md +0 -561
  359. package/docs/runtime/typescript.md +0 -139
  360. package/docs/runtime/web-apis.md +0 -128
  361. package/docs/test/configuration.md +0 -154
  362. package/docs/test/coverage.md +0 -142
  363. package/docs/test/dom.md +0 -75
  364. package/docs/test/examples/concurrent-test-glob.md +0 -132
  365. package/docs/test/hot.md +0 -15
  366. package/docs/test/lifecycle.md +0 -81
  367. package/docs/test/mocks.md +0 -313
  368. package/docs/test/runtime-behavior.md +0 -95
  369. package/docs/test/snapshots.md +0 -68
  370. package/docs/test/writing.md +0 -825
@@ -0,0 +1,467 @@
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
+ ## Timeouts
95
+
96
+ ### Default Timeout
97
+
98
+ Set the default timeout for all tests:
99
+
100
+ ```toml title="bunfig.toml" icon="settings"
101
+ [test]
102
+ timeout = 10000 # 10 seconds (default is 5000ms)
103
+ ```
104
+
105
+ This applies to all tests unless overridden by individual test timeouts:
106
+
107
+ ```ts title="test.ts" icon="/icons/typescript.svg"
108
+ // This test will use the default timeout from bunfig.toml
109
+ test("uses default timeout", () => {
110
+ // test implementation
111
+ });
112
+
113
+ // This test overrides the default timeout
114
+ test("custom timeout", () => {
115
+ // test implementation
116
+ }, 30000); // 30 seconds
117
+ ```
118
+
119
+ ## Reporters
120
+
121
+ ### JUnit Reporter
122
+
123
+ Configure the JUnit reporter output file path directly in the config file:
124
+
125
+ ```toml title="bunfig.toml" icon="settings"
126
+ [test.reporter]
127
+ junit = "path/to/junit.xml" # Output path for JUnit XML report
128
+ ```
129
+
130
+ This complements the `--reporter=junit` and `--reporter-outfile` CLI flags:
131
+
132
+ ```bash terminal icon="terminal"
133
+ # Equivalent command line usage
134
+ bun test --reporter=junit --reporter-outfile=./junit.xml
135
+ ```
136
+
137
+ #### Multiple Reporters
138
+
139
+ You can use multiple reporters simultaneously:
140
+
141
+ ```bash terminal icon="terminal"
142
+ # CLI approach
143
+ bun test --reporter=junit --reporter-outfile=./junit.xml
144
+
145
+ # Config file approach
146
+ ```
147
+
148
+ ```toml title="bunfig.toml" icon="settings"
149
+ [test.reporter]
150
+ junit = "./reports/junit.xml"
151
+
152
+ [test]
153
+ # Also enable coverage reporting
154
+ coverage = true
155
+ coverageReporter = ["text", "lcov"]
156
+ ```
157
+
158
+ ## Memory Usage
159
+
160
+ ### smol Mode
161
+
162
+ Enable the `--smol` memory-saving mode specifically for the test runner:
163
+
164
+ ```toml title="bunfig.toml" icon="settings"
165
+ [test]
166
+ smol = true # Reduce memory usage during test runs
167
+ ```
168
+
169
+ This is equivalent to using the `--smol` flag on the command line:
170
+
171
+ ```bash terminal icon="terminal"
172
+ bun test --smol
173
+ ```
174
+
175
+ The `smol` mode reduces memory usage by:
176
+
177
+ - Using less memory for the JavaScript heap
178
+ - Being more aggressive about garbage collection
179
+ - Reducing buffer sizes where possible
180
+
181
+ This is useful for:
182
+
183
+ - CI environments with limited memory
184
+ - Large test suites that consume significant memory
185
+ - Development environments with memory constraints
186
+
187
+ ## Coverage Options
188
+
189
+ ### Basic Coverage Settings
190
+
191
+ ```toml title="bunfig.toml" icon="settings"
192
+ [test]
193
+ # Enable coverage by default
194
+ coverage = true
195
+
196
+ # Set coverage reporter
197
+ coverageReporter = ["text", "lcov"]
198
+
199
+ # Set coverage output directory
200
+ coverageDir = "./coverage"
201
+ ```
202
+
203
+ ### Skip Test Files from Coverage
204
+
205
+ Exclude files matching test patterns (e.g., `*.test.ts`) from the coverage report:
206
+
207
+ ```toml title="bunfig.toml" icon="settings"
208
+ [test]
209
+ coverageSkipTestFiles = true # Exclude test files from coverage reports
210
+ ```
211
+
212
+ ### Coverage Thresholds
213
+
214
+ The coverage threshold can be specified either as a number or as an object with specific thresholds:
215
+
216
+ ```toml title="bunfig.toml" icon="settings"
217
+ [test]
218
+ # Simple threshold - applies to lines, functions, and statements
219
+ coverageThreshold = 0.8
220
+
221
+ # Detailed thresholds
222
+ coverageThreshold = { lines = 0.9, functions = 0.8, statements = 0.85 }
223
+ ```
224
+
225
+ Setting any of these enables `fail_on_low_coverage`, causing the test run to fail if coverage is below the threshold.
226
+
227
+ #### Threshold Examples
228
+
229
+ ```toml title="bunfig.toml" icon="settings"
230
+ [test]
231
+ # Require 90% coverage across the board
232
+ coverageThreshold = 0.9
233
+
234
+ # Different requirements for different metrics
235
+ coverageThreshold = {
236
+ lines = 0.85, # 85% line coverage
237
+ functions = 0.90, # 90% function coverage
238
+ statements = 0.80 # 80% statement coverage
239
+ }
240
+ ```
241
+
242
+ ### Coverage Path Ignore Patterns
243
+
244
+ Exclude specific files or file patterns from coverage reports using glob patterns:
245
+
246
+ ```toml title="bunfig.toml" icon="settings"
247
+ [test]
248
+ # Single pattern
249
+ coveragePathIgnorePatterns = "**/*.spec.ts"
250
+
251
+ # Multiple patterns
252
+ coveragePathIgnorePatterns = [
253
+ "**/*.spec.ts",
254
+ "**/*.test.ts",
255
+ "src/utils/**",
256
+ "*.config.js",
257
+ "generated/**",
258
+ "vendor/**"
259
+ ]
260
+ ```
261
+
262
+ Files matching any of these patterns will be excluded from coverage calculation and reporting. See the [coverage documentation](/test/code-coverage) for more details and examples.
263
+
264
+ #### Common Ignore Patterns
265
+
266
+ ```toml title="bunfig.toml" icon="settings"
267
+ [test]
268
+ coveragePathIgnorePatterns = [
269
+ # Test files
270
+ "**/*.test.ts",
271
+ "**/*.spec.ts",
272
+ "**/*.e2e.ts",
273
+
274
+ # Configuration files
275
+ "*.config.js",
276
+ "*.config.ts",
277
+ "webpack.config.*",
278
+ "vite.config.*",
279
+
280
+ # Build output
281
+ "dist/**",
282
+ "build/**",
283
+ ".next/**",
284
+
285
+ # Generated code
286
+ "generated/**",
287
+ "**/*.generated.ts",
288
+
289
+ # Vendor/third-party
290
+ "vendor/**",
291
+ "third-party/**",
292
+
293
+ # Utilities that don't need testing
294
+ "src/utils/constants.ts",
295
+ "src/types/**"
296
+ ]
297
+ ```
298
+
299
+ ### Sourcemap Handling
300
+
301
+ 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.
302
+
303
+ ```toml title="bunfig.toml" icon="settings"
304
+ [test]
305
+ coverageIgnoreSourcemaps = true # Don't use sourcemaps for coverage analysis
306
+ ```
307
+
308
+ <Warning>
309
+ When using this option, you probably want to stick a `// @bun` comment at the top of the source file to opt out of the
310
+ transpilation process.
311
+ </Warning>
312
+
313
+ ## Install Settings Inheritance
314
+
315
+ 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.
316
+
317
+ ```toml title="bunfig.toml" icon="settings"
318
+ [install]
319
+ # These settings are inherited by bun test
320
+ registry = "https://npm.company.com/"
321
+ exact = true
322
+ prefer = "offline"
323
+
324
+ [test]
325
+ # Test-specific configuration
326
+ coverage = true
327
+ timeout = 10000
328
+ ```
329
+
330
+ ## Environment Variables
331
+
332
+ You can also set environment variables in your configuration that affect test behavior:
333
+
334
+ ```toml title="bunfig.toml" icon="settings"
335
+ [env]
336
+ NODE_ENV = "test"
337
+ DATABASE_URL = "postgresql://localhost:5432/test_db"
338
+ LOG_LEVEL = "error"
339
+
340
+ [test]
341
+ coverage = true
342
+ ```
343
+
344
+ ## Complete Configuration Example
345
+
346
+ Here's a comprehensive example showing all available test configuration options:
347
+
348
+ ```toml title="bunfig.toml" icon="settings"
349
+ [install]
350
+ # Install settings inherited by tests
351
+ registry = "https://registry.npmjs.org/"
352
+ exact = true
353
+
354
+ [env]
355
+ # Environment variables for tests
356
+ NODE_ENV = "test"
357
+ DATABASE_URL = "postgresql://localhost:5432/test_db"
358
+ API_URL = "http://localhost:3001"
359
+ LOG_LEVEL = "error"
360
+
361
+ [test]
362
+ # Test discovery
363
+ root = "src"
364
+ preload = ["./test-setup.ts", "./global-mocks.ts"]
365
+
366
+ # Execution settings
367
+ timeout = 10000
368
+ smol = true
369
+
370
+ # Coverage configuration
371
+ coverage = true
372
+ coverageReporter = ["text", "lcov"]
373
+ coverageDir = "./coverage"
374
+ coverageThreshold = { lines = 0.85, functions = 0.90, statements = 0.80 }
375
+ coverageSkipTestFiles = true
376
+ coveragePathIgnorePatterns = [
377
+ "**/*.spec.ts",
378
+ "src/utils/**",
379
+ "*.config.js",
380
+ "generated/**"
381
+ ]
382
+
383
+ # Advanced coverage settings
384
+ coverageIgnoreSourcemaps = false
385
+
386
+ # Reporter configuration
387
+ [test.reporter]
388
+ junit = "./reports/junit.xml"
389
+ ```
390
+
391
+ ## CLI Override Behavior
392
+
393
+ Command-line options always override configuration file settings:
394
+
395
+ ```toml title="bunfig.toml" icon="settings"
396
+ [test]
397
+ timeout = 5000
398
+ coverage = false
399
+ ```
400
+
401
+ ```bash terminal icon="terminal"
402
+ # These CLI flags override the config file
403
+ bun test --timeout 10000 --coverage
404
+ # timeout will be 10000ms and coverage will be enabled
405
+ ```
406
+
407
+ ## Conditional Configuration
408
+
409
+ You can use different configurations for different environments:
410
+
411
+ ```toml title="bunfig.toml" icon="settings"
412
+ [test]
413
+ # Default test configuration
414
+ coverage = false
415
+ timeout = 5000
416
+
417
+ # Override for CI environment
418
+ [test.ci]
419
+ coverage = true
420
+ coverageThreshold = 0.8
421
+ timeout = 30000
422
+ ```
423
+
424
+ Then in CI:
425
+
426
+ ```bash terminal icon="terminal"
427
+ # Use CI-specific settings
428
+ bun test --config=ci
429
+ ```
430
+
431
+ ## Validation and Troubleshooting
432
+
433
+ ### Invalid Configuration
434
+
435
+ Bun will warn about invalid configuration options:
436
+
437
+ ```toml title="bunfig.toml" icon="settings"
438
+ [test]
439
+ invalidOption = true # This will generate a warning
440
+ ```
441
+
442
+ ### Common Configuration Issues
443
+
444
+ 1. **Path Resolution**: Relative paths in config are resolved relative to the config file location
445
+ 2. **Pattern Matching**: Glob patterns use standard glob syntax
446
+ 3. **Type Mismatches**: Ensure numeric values are not quoted unless they should be strings
447
+
448
+ ```toml title="bunfig.toml" icon="settings"
449
+ [test]
450
+ # Correct
451
+ timeout = 10000
452
+
453
+ # Incorrect - will be treated as string
454
+ timeout = "10000"
455
+ ```
456
+
457
+ ### Debugging Configuration
458
+
459
+ To see what configuration is being used:
460
+
461
+ ```bash terminal icon="terminal"
462
+ # Show effective configuration
463
+ bun test --dry-run
464
+
465
+ # Verbose output to see configuration loading
466
+ bun test --verbose
467
+ ```
@@ -1,3 +1,8 @@
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
+
1
6
  `bun:test` lets you change what time it is in your tests.
2
7
 
3
8
  This works with any of the following:
@@ -6,13 +11,13 @@ This works with any of the following:
6
11
  - `new Date()`
7
12
  - `new Intl.DateTimeFormat().format()`
8
13
 
9
- Timers are not impacted yet, but may be in a future release of Bun.
14
+ <Note>Timers are not impacted yet, but may be in a future release of Bun.</Note>
10
15
 
11
- ## `setSystemTime`
16
+ ## setSystemTime
12
17
 
13
18
  To change the system time, use `setSystemTime`:
14
19
 
15
- ```ts
20
+ ```ts title="test.ts" icon="/icons/typescript.svg"
16
21
  import { setSystemTime, beforeAll, test, expect } from "bun:test";
17
22
 
18
23
  beforeAll(() => {
@@ -26,7 +31,7 @@ test("it is 2020", () => {
26
31
 
27
32
  To support existing tests that use Jest's `useFakeTimers` and `useRealTimers`, you can use `useFakeTimers` and `useRealTimers`:
28
33
 
29
- ```ts
34
+ ```ts title="test.ts" icon="/icons/typescript.svg"
30
35
  test("just like in jest", () => {
31
36
  jest.useFakeTimers();
32
37
  jest.setSystemTime(new Date("2020-01-01T00:00:00.000Z"));
@@ -51,15 +56,15 @@ test("unlike in jest", () => {
51
56
  });
52
57
  ```
53
58
 
54
- {% callout %}
55
- **Timers** — Note that we have not implemented builtin support for mocking timers yet, but this is on the roadmap.
56
- {% /callout %}
59
+ <Warning>
60
+ **Timers** — Note that we have not implemented builtin support for mocking timers yet, but this is on the roadmap.
61
+ </Warning>
57
62
 
58
- ### Reset the system time
63
+ ## Reset the system time
59
64
 
60
65
  To reset the system time, pass no arguments to `setSystemTime`:
61
66
 
62
- ```ts
67
+ ```ts title="test.ts" icon="/icons/typescript.svg"
63
68
  import { setSystemTime, expect, test } from "bun:test";
64
69
 
65
70
  test("it was 2020, for a moment.", () => {
@@ -74,11 +79,11 @@ test("it was 2020, for a moment.", () => {
74
79
  });
75
80
  ```
76
81
 
77
- ## Get mocked time with `jest.now()`
82
+ ## Get mocked time with jest.now()
78
83
 
79
84
  When you're using mocked time (with `setSystemTime` or `useFakeTimers`), you can use `jest.now()` to get the current mocked timestamp:
80
85
 
81
- ```ts
86
+ ```ts title="test.ts" icon="/icons/typescript.svg"
82
87
  import { test, expect, jest } from "bun:test";
83
88
 
84
89
  test("get the current mocked time", () => {
@@ -96,31 +101,29 @@ This is useful when you need to access the mocked time directly without creating
96
101
 
97
102
  ## Set the time zone
98
103
 
99
- 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`.
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`:
100
105
 
101
- ```sh
106
+ ```bash terminal icon="terminal"
102
107
  TZ=America/Los_Angeles bun test
103
108
  ```
104
109
 
105
110
  Or set `process.env.TZ` at runtime:
106
111
 
107
- ```ts
112
+ ```ts title="test.ts" icon="/icons/typescript.svg"
108
113
  import { test, expect } from "bun:test";
109
114
 
110
115
  test("Welcome to California!", () => {
111
116
  process.env.TZ = "America/Los_Angeles";
112
117
  expect(new Date().getTimezoneOffset()).toBe(420);
113
- expect(new Intl.DateTimeFormat().resolvedOptions().timeZone).toBe(
114
- "America/Los_Angeles",
115
- );
118
+ expect(new Intl.DateTimeFormat().resolvedOptions().timeZone).toBe("America/Los_Angeles");
116
119
  });
117
120
 
118
121
  test("Welcome to New York!", () => {
119
122
  // Unlike in Jest, you can set the timezone multiple times at runtime and it will work.
120
123
  process.env.TZ = "America/New_York";
121
124
  expect(new Date().getTimezoneOffset()).toBe(240);
122
- expect(new Intl.DateTimeFormat().resolvedOptions().timeZone).toBe(
123
- "America/New_York",
124
- );
125
+ expect(new Intl.DateTimeFormat().resolvedOptions().timeZone).toBe("America/New_York");
125
126
  });
126
127
  ```
128
+
129
+ <Info>Unlike in Jest, you can set the timezone multiple times at runtime and it will work.</Info>
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: "Finding tests"
3
+ description: "Learn how Bun's test runner discovers and filters test files in your project"
4
+ ---
5
+
1
6
  bun test's file discovery mechanism determines which files to run as tests. Understanding how it works helps you structure your test files effectively.
2
7
 
3
8
  ## Default Discovery Logic
@@ -23,16 +28,16 @@ By default, Bun test ignores:
23
28
 
24
29
  You can filter which test files run by passing additional positional arguments to `bun test`:
25
30
 
26
- ```bash
27
- $ bun test <filter> <filter> ...
31
+ ```bash terminal icon="terminal"
32
+ bun test <filter> <filter> ...
28
33
  ```
29
34
 
30
35
  Any test file with a path that contains one of the filters will run. These filters are simple substring matches, not glob patterns.
31
36
 
32
37
  For example, to run all tests in a `utils` directory:
33
38
 
34
- ```bash
35
- $ bun test utils
39
+ ```bash terminal icon="terminal"
40
+ bun test utils
36
41
  ```
37
42
 
38
43
  This would match files like `src/utils/string.test.ts` and `lib/utils/array_test.js`.
@@ -41,22 +46,22 @@ This would match files like `src/utils/string.test.ts` and `lib/utils/array_test
41
46
 
42
47
  To run a specific file in the test runner, make sure the path starts with `./` or `/` to distinguish it from a filter name:
43
48
 
44
- ```bash
45
- $ bun test ./test/specific-file.test.ts
49
+ ```bash terminal icon="terminal"
50
+ bun test ./test/specific-file.test.ts
46
51
  ```
47
52
 
48
53
  ### Filter by Test Name
49
54
 
50
55
  To filter tests by name rather than file path, use the `-t`/`--test-name-pattern` flag with a regex pattern:
51
56
 
52
- ```sh
57
+ ```sh terminal icon="terminal"
53
58
  # run all tests with "addition" in the name
54
- $ bun test --test-name-pattern addition
59
+ bun test --test-name-pattern addition
55
60
  ```
56
61
 
57
62
  The pattern is matched against a concatenated string of the test name prepended with the labels of all its parent describe blocks, separated by spaces. For example, a test defined as:
58
63
 
59
- ```js
64
+ ```ts title="math.test.ts" icon="/icons/typescript.svg"
60
65
  describe("Math", () => {
61
66
  describe("operations", () => {
62
67
  test("should add correctly", () => {
@@ -72,7 +77,7 @@ Would be matched against the string "Math operations should add correctly".
72
77
 
73
78
  By default, Bun looks for test files starting from the current working directory. You can change this with the `root` option in your `bunfig.toml`:
74
79
 
75
- ```toml
80
+ ```toml title="bunfig.toml" icon="settings"
76
81
  [test]
77
82
  root = "src" # Only scan for tests in the src directory
78
83
  ```