@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,366 @@
1
+ ---
2
+ title: "Lifecycle hooks"
3
+ description: "Learn how to use beforeAll, beforeEach, afterEach, and afterAll lifecycle hooks in Bun tests"
4
+ ---
5
+
6
+ The test runner supports the following lifecycle hooks. This is useful for loading test fixtures, mocking data, and configuring the test environment.
7
+
8
+ | Hook | Description |
9
+ | ---------------- | ---------------------------------------------------------- |
10
+ | `beforeAll` | Runs once before all tests. |
11
+ | `beforeEach` | Runs before each test. |
12
+ | `afterEach` | Runs after each test. |
13
+ | `afterAll` | Runs once after all tests. |
14
+ | `onTestFinished` | Runs after a single test finishes (after all `afterEach`). |
15
+
16
+ ## Per-Test Setup and Teardown
17
+
18
+ Perform per-test setup and teardown logic with `beforeEach` and `afterEach`.
19
+
20
+ ```ts title="test.ts" icon="/icons/typescript.svg"
21
+ import { beforeEach, afterEach, test } from "bun:test";
22
+
23
+ beforeEach(() => {
24
+ console.log("running test.");
25
+ });
26
+
27
+ afterEach(() => {
28
+ console.log("done with test.");
29
+ });
30
+
31
+ // tests...
32
+ test("example test", () => {
33
+ // This test will have beforeEach run before it
34
+ // and afterEach run after it
35
+ });
36
+ ```
37
+
38
+ ## Per-Scope Setup and Teardown
39
+
40
+ Perform per-scope setup and teardown logic with `beforeAll` and `afterAll`. The scope is determined by where the hook is defined.
41
+
42
+ ### Scoped to a Describe Block
43
+
44
+ To scope the hooks to a particular describe block:
45
+
46
+ ```ts title="test.ts" icon="/icons/typescript.svg"
47
+ import { describe, beforeAll, afterAll, test } from "bun:test";
48
+
49
+ describe("test group", () => {
50
+ beforeAll(() => {
51
+ // setup for this describe block
52
+ console.log("Setting up test group");
53
+ });
54
+
55
+ afterAll(() => {
56
+ // teardown for this describe block
57
+ console.log("Tearing down test group");
58
+ });
59
+
60
+ test("test 1", () => {
61
+ // test implementation
62
+ });
63
+
64
+ test("test 2", () => {
65
+ // test implementation
66
+ });
67
+ });
68
+ ```
69
+
70
+ ### Scoped to a Test File
71
+
72
+ To scope the hooks to an entire test file:
73
+
74
+ ```ts title="test.ts" icon="/icons/typescript.svg"
75
+ import { describe, beforeAll, afterAll, test } from "bun:test";
76
+
77
+ beforeAll(() => {
78
+ // setup for entire file
79
+ console.log("Setting up test file");
80
+ });
81
+
82
+ afterAll(() => {
83
+ // teardown for entire file
84
+ console.log("Tearing down test file");
85
+ });
86
+
87
+ describe("test group", () => {
88
+ test("test 1", () => {
89
+ // test implementation
90
+ });
91
+ });
92
+ ```
93
+
94
+ ### `onTestFinished`
95
+
96
+ Use `onTestFinished` to run a callback after a single test completes. It runs after all `afterEach` hooks.
97
+
98
+ ```ts title="test.ts" icon="/icons/typescript.svg"
99
+ import { test, onTestFinished } from "bun:test";
100
+
101
+ test("cleanup after test", () => {
102
+ onTestFinished(() => {
103
+ // runs after all afterEach hooks
104
+ console.log("test finished");
105
+ });
106
+ });
107
+ ```
108
+
109
+ Not supported in concurrent tests; use `test.serial` instead.
110
+
111
+ ## Global Setup and Teardown
112
+
113
+ To scope the hooks to an entire multi-file test run, define the hooks in a separate file.
114
+
115
+ ```ts title="setup.ts" icon="/icons/typescript.svg"
116
+ import { beforeAll, afterAll } from "bun:test";
117
+
118
+ beforeAll(() => {
119
+ // global setup
120
+ console.log("Global test setup");
121
+ // Initialize database connections, start servers, etc.
122
+ });
123
+
124
+ afterAll(() => {
125
+ // global teardown
126
+ console.log("Global test teardown");
127
+ // Close database connections, stop servers, etc.
128
+ });
129
+ ```
130
+
131
+ Then use `--preload` to run the setup script before any test files.
132
+
133
+ ```bash terminal icon="terminal"
134
+ bun test --preload ./setup.ts
135
+ ```
136
+
137
+ To avoid typing `--preload` every time you run tests, it can be added to your `bunfig.toml`:
138
+
139
+ ```toml title="bunfig.toml" icon="settings"
140
+ [test]
141
+ preload = ["./setup.ts"]
142
+ ```
143
+
144
+ ## Practical Examples
145
+
146
+ ### Database Setup
147
+
148
+ ```ts title="database-setup.ts" icon="/icons/typescript.svg"
149
+ import { beforeAll, afterAll, beforeEach, afterEach } from "bun:test";
150
+ import { createConnection, closeConnection, clearDatabase } from "./db";
151
+
152
+ let connection;
153
+
154
+ beforeAll(async () => {
155
+ // Connect to test database
156
+ connection = await createConnection({
157
+ host: "localhost",
158
+ database: "test_db",
159
+ });
160
+ });
161
+
162
+ afterAll(async () => {
163
+ // Close database connection
164
+ await closeConnection(connection);
165
+ });
166
+
167
+ beforeEach(async () => {
168
+ // Start with clean database for each test
169
+ await clearDatabase(connection);
170
+ });
171
+ ```
172
+
173
+ ### API Server Setup
174
+
175
+ ```ts title="server-setup.ts" icon="/icons/typescript.svg"
176
+ import { beforeAll, afterAll } from "bun:test";
177
+ import { startServer, stopServer } from "./server";
178
+
179
+ let server;
180
+
181
+ beforeAll(async () => {
182
+ // Start test server
183
+ server = await startServer({
184
+ port: 3001,
185
+ env: "test",
186
+ });
187
+ });
188
+
189
+ afterAll(async () => {
190
+ // Stop test server
191
+ await stopServer(server);
192
+ });
193
+ ```
194
+
195
+ ### Mock Setup
196
+
197
+ ```ts title="mock-setup.ts" icon="/icons/typescript.svg"
198
+ import { beforeEach, afterEach } from "bun:test";
199
+ import { mock } from "bun:test";
200
+
201
+ beforeEach(() => {
202
+ // Set up common mocks
203
+ mock.module("./api-client", () => ({
204
+ fetchUser: mock(() => Promise.resolve({ id: 1, name: "Test User" })),
205
+ createUser: mock(() => Promise.resolve({ id: 2 })),
206
+ }));
207
+ });
208
+
209
+ afterEach(() => {
210
+ // Clear all mocks after each test
211
+ mock.restore();
212
+ });
213
+ ```
214
+
215
+ ## Async Lifecycle Hooks
216
+
217
+ All lifecycle hooks support async functions:
218
+
219
+ ```ts title="test.ts" icon="/icons/typescript.svg"
220
+ import { beforeAll, afterAll, test } from "bun:test";
221
+
222
+ beforeAll(async () => {
223
+ // Async setup
224
+ await new Promise(resolve => setTimeout(resolve, 100));
225
+ console.log("Async setup complete");
226
+ });
227
+
228
+ afterAll(async () => {
229
+ // Async teardown
230
+ await new Promise(resolve => setTimeout(resolve, 100));
231
+ console.log("Async teardown complete");
232
+ });
233
+
234
+ test("async test", async () => {
235
+ // Test will wait for beforeAll to complete
236
+ await expect(Promise.resolve("test")).resolves.toBe("test");
237
+ });
238
+ ```
239
+
240
+ ## Nested Hooks
241
+
242
+ Hooks can be nested and will run in the appropriate order:
243
+
244
+ ```ts title="test.ts" icon="/icons/typescript.svg"
245
+ import { describe, beforeAll, beforeEach, afterEach, afterAll, test } from "bun:test";
246
+
247
+ beforeAll(() => console.log("File beforeAll"));
248
+ afterAll(() => console.log("File afterAll"));
249
+
250
+ describe("outer describe", () => {
251
+ beforeAll(() => console.log("Outer beforeAll"));
252
+ beforeEach(() => console.log("Outer beforeEach"));
253
+ afterEach(() => console.log("Outer afterEach"));
254
+ afterAll(() => console.log("Outer afterAll"));
255
+
256
+ describe("inner describe", () => {
257
+ beforeAll(() => console.log("Inner beforeAll"));
258
+ beforeEach(() => console.log("Inner beforeEach"));
259
+ afterEach(() => console.log("Inner afterEach"));
260
+ afterAll(() => console.log("Inner afterAll"));
261
+
262
+ test("nested test", () => {
263
+ console.log("Test running");
264
+ });
265
+ });
266
+ });
267
+ ```
268
+
269
+ ```txt
270
+ // Output order:
271
+ // File beforeAll
272
+ // Outer beforeAll
273
+ // Inner beforeAll
274
+ // Outer beforeEach
275
+ // Inner beforeEach
276
+ // Test running
277
+ // Inner afterEach
278
+ // Outer afterEach
279
+ // Inner afterAll
280
+ // Outer afterAll
281
+ // File afterAll
282
+ ```
283
+
284
+ ## Error Handling
285
+
286
+ If a lifecycle hook throws an error, it will affect test execution:
287
+
288
+ ```ts title="test.ts" icon="/icons/typescript.svg"
289
+ import { beforeAll, test } from "bun:test";
290
+
291
+ beforeAll(() => {
292
+ // If this throws, all tests in this scope will be skipped
293
+ throw new Error("Setup failed");
294
+ });
295
+
296
+ test("this test will be skipped", () => {
297
+ // This won't run because beforeAll failed
298
+ });
299
+ ```
300
+
301
+ For better error handling:
302
+
303
+ ```ts title="test.ts" icon="/icons/typescript.svg"
304
+ import { beforeAll, test, expect } from "bun:test";
305
+
306
+ beforeAll(async () => {
307
+ try {
308
+ await setupDatabase();
309
+ } catch (error) {
310
+ console.error("Database setup failed:", error);
311
+ throw error; // Re-throw to fail the test suite
312
+ }
313
+ });
314
+ ```
315
+
316
+ ## Best Practices
317
+
318
+ ### Keep Hooks Simple
319
+
320
+ ```ts title="test.ts" icon="/icons/typescript.svg"
321
+ // Good: Simple, focused setup
322
+ beforeEach(() => {
323
+ clearLocalStorage();
324
+ resetMocks();
325
+ });
326
+
327
+ // Avoid: Complex logic in hooks
328
+ beforeEach(async () => {
329
+ // Too much complex logic makes tests hard to debug
330
+ const data = await fetchComplexData();
331
+ await processData(data);
332
+ await setupMultipleServices(data);
333
+ });
334
+ ```
335
+
336
+ ### Use Appropriate Scope
337
+
338
+ ```ts title="test.ts" icon="/icons/typescript.svg"
339
+ // Good: File-level setup for shared resources
340
+ beforeAll(async () => {
341
+ await startTestServer();
342
+ });
343
+
344
+ // Good: Test-level setup for test-specific state
345
+ beforeEach(() => {
346
+ user = createTestUser();
347
+ });
348
+ ```
349
+
350
+ ### Clean Up Resources
351
+
352
+ ```ts title="test.ts" icon="/icons/typescript.svg"
353
+ import { afterAll, afterEach } from "bun:test";
354
+
355
+ afterEach(() => {
356
+ // Clean up after each test
357
+ document.body.innerHTML = "";
358
+ localStorage.clear();
359
+ });
360
+
361
+ afterAll(async () => {
362
+ // Clean up expensive resources
363
+ await closeDatabase();
364
+ await stopServer();
365
+ });
366
+ ```