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.
- package/bun.d.ts +102 -6
- package/docs/README.md +28 -0
- package/docs/bundler/bytecode.mdx +465 -0
- package/docs/bundler/{css.md → css.mdx} +97 -101
- package/docs/bundler/esbuild.mdx +253 -0
- package/docs/bundler/{executables.md → executables.mdx} +130 -221
- package/docs/bundler/fullstack.mdx +1064 -0
- package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
- package/docs/bundler/{html.md → html-static.mdx} +148 -111
- package/docs/bundler/index.mdx +1499 -0
- package/docs/bundler/loaders.mdx +356 -0
- package/docs/bundler/{macros.md → macros.mdx} +83 -84
- package/docs/bundler/minifier.mdx +1306 -0
- package/docs/bundler/plugins.mdx +411 -0
- package/docs/feedback.mdx +85 -0
- package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
- package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
- package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
- package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
- package/docs/guides/deployment/aws-lambda.mdx +204 -0
- package/docs/guides/deployment/digital-ocean.mdx +161 -0
- package/docs/guides/deployment/google-cloud-run.mdx +197 -0
- package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
- package/docs/guides/deployment/render.mdx +82 -0
- package/docs/guides/deployment/vercel.mdx +99 -0
- package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
- package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
- package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
- package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
- package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
- package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
- package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
- package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
- package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
- package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
- package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
- package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
- package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
- package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
- package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
- package/docs/guides/ecosystem/prisma.mdx +164 -0
- package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
- package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
- package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
- package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
- package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
- package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
- package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
- package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
- package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
- package/docs/guides/ecosystem/upstash.mdx +87 -0
- package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
- package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
- package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
- package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
- package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
- package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
- package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
- package/docs/guides/http/{hot.md → hot.mdx} +9 -7
- package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
- package/docs/guides/http/{server.md → server.mdx} +4 -2
- package/docs/guides/http/{simple.md → simple.mdx} +4 -2
- package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
- package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
- package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
- package/docs/guides/http/{tls.md → tls.mdx} +5 -3
- package/docs/guides/index.mdx +10 -0
- package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
- package/docs/guides/install/add-git.mdx +38 -0
- package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
- package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
- package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
- package/docs/guides/install/{add.md → add.mdx} +12 -10
- package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
- package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
- package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
- package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
- package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
- package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
- package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
- package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
- package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
- package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
- package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
- package/docs/guides/process/{argv.md → argv.mdx} +17 -9
- package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
- package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
- package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
- package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
- package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
- package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
- package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
- package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
- package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
- package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
- package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
- package/docs/guides/read-file/{json.md → json.mdx} +4 -2
- package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
- package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
- package/docs/guides/read-file/{string.md → string.mdx} +3 -1
- package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
- package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
- package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
- package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
- package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
- package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
- package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
- package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
- package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
- package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
- package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
- package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
- package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
- package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
- package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
- package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
- package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
- package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
- package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
- package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
- package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
- package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
- package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
- package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
- package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
- package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
- package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
- package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
- package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
- package/docs/guides/test/{bail.md → bail.mdx} +7 -5
- package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
- package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
- package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
- package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
- package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
- package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
- package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
- package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
- package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
- package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
- package/docs/guides/test/spy-on.mdx +49 -0
- package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
- package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
- package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
- package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
- package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
- package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
- package/docs/guides/util/{base64.md → base64.mdx} +3 -1
- package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
- package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
- package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
- package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
- package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
- package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
- package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
- package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
- package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
- package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
- package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
- package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
- package/docs/guides/util/{main.md → main.mdx} +19 -8
- package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
- package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
- package/docs/guides/util/{version.md → version.mdx} +6 -4
- package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
- package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
- package/docs/guides/websocket/{context.md → context.mdx} +9 -12
- package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
- package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
- package/docs/guides/write-file/{append.md → append.mdx} +3 -1
- package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
- package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
- package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
- package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
- package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
- package/docs/guides/write-file/{response.md → response.mdx} +3 -1
- package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
- package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
- package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
- package/docs/{index.md → index.mdx} +97 -41
- package/docs/installation.mdx +365 -0
- package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
- package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
- package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
- package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
- package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
- package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
- package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
- package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
- package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
- package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
- package/docs/pm/cli/remove.mdx +16 -0
- package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
- package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
- package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
- package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
- package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
- package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
- package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
- package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
- package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
- package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
- package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
- package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
- package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
- package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
- package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
- package/docs/project/{contributing.md → contributing.mdx} +56 -60
- package/docs/project/feedback.mdx +20 -0
- package/docs/project/license.mdx +78 -0
- package/docs/project/roadmap.mdx +8 -0
- package/docs/quickstart.mdx +240 -0
- package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
- package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
- package/docs/runtime/bun-apis.mdx +59 -0
- package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
- package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
- package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
- package/docs/{api/color.md → runtime/color.mdx} +6 -1
- package/docs/{api/console.md → runtime/console.mdx} +17 -7
- package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
- package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
- package/docs/runtime/environment-variables.mdx +214 -0
- package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
- package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
- package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
- package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
- package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
- package/docs/runtime/globals.mdx +72 -0
- package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
- package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
- package/docs/runtime/http/cookies.mdx +79 -0
- package/docs/runtime/http/error-handling.mdx +40 -0
- package/docs/runtime/http/metrics.mdx +36 -0
- package/docs/runtime/http/routing.mdx +289 -0
- package/docs/runtime/http/server.mdx +647 -0
- package/docs/runtime/http/tls.mdx +101 -0
- package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
- package/docs/{cli/run.md → runtime/index.mdx} +70 -108
- package/docs/runtime/jsx.mdx +115 -0
- package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
- package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
- package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
- package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
- package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
- package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
- package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
- package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
- package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
- package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
- package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
- package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
- package/docs/runtime/{shell.md → shell.mdx} +52 -20
- package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
- package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
- package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
- package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
- package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
- package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
- package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
- package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
- package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
- package/docs/runtime/web-apis.mdx +29 -0
- package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
- package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
- package/docs/snippets/cli/add.mdx +166 -0
- package/docs/snippets/cli/build.mdx +196 -0
- package/docs/snippets/cli/feedback.mdx +17 -0
- package/docs/snippets/cli/init.mdx +84 -0
- package/docs/snippets/cli/install.mdx +173 -0
- package/docs/snippets/cli/link.mdx +163 -0
- package/docs/snippets/cli/outdated.mdx +140 -0
- package/docs/snippets/cli/patch.mdx +171 -0
- package/docs/snippets/cli/publish.mdx +198 -0
- package/docs/snippets/cli/remove.mdx +146 -0
- package/docs/snippets/cli/run.mdx +293 -0
- package/docs/snippets/cli/test.mdx +100 -0
- package/docs/snippets/cli/update.mdx +144 -0
- package/docs/snippets/product-card.mdx +32 -0
- package/docs/snippets/product-tiles.mdx +94 -0
- package/docs/test/code-coverage.mdx +409 -0
- package/docs/test/configuration.mdx +467 -0
- package/docs/test/{time.md → dates-times.mdx} +23 -20
- package/docs/test/{discovery.md → discovery.mdx} +15 -10
- package/docs/test/dom.mdx +226 -0
- package/docs/{cli/test.md → test/index.mdx} +77 -94
- package/docs/test/lifecycle.mdx +348 -0
- package/docs/test/mocks.mdx +637 -0
- package/docs/test/{reporters.md → reporters.mdx} +15 -15
- package/docs/test/runtime-behavior.mdx +342 -0
- package/docs/test/snapshots.mdx +434 -0
- package/docs/test/writing-tests.mdx +635 -0
- package/docs/typescript.mdx +54 -0
- package/package.json +8 -6
- package/test.d.ts +2 -2
- package/docs/api/file.md +0 -19
- package/docs/api/globals.md +0 -387
- package/docs/api/http.md +0 -1408
- package/docs/api/import-meta.md +0 -69
- package/docs/benchmarks.md +0 -120
- package/docs/bun-flavored-toml.md +0 -42
- package/docs/bundler/css_modules.md +0 -145
- package/docs/bundler/fullstack.md +0 -418
- package/docs/bundler/index.md +0 -1735
- package/docs/bundler/intro.md +0 -75
- package/docs/bundler/vs-esbuild.md +0 -1127
- package/docs/cli/bun-completions.md +0 -3
- package/docs/cli/bun-install.md +0 -349
- package/docs/cli/bun-upgrade.md +0 -39
- package/docs/cli/info.md +0 -65
- package/docs/cli/patch-commit.md +0 -11
- package/docs/cli/remove.md +0 -7
- package/docs/cli/unlink.md +0 -9
- package/docs/contributing/upgrading-webkit.md +0 -57
- package/docs/ecosystem/elysia.md +0 -24
- package/docs/ecosystem/express.md +0 -37
- package/docs/ecosystem/hono.md +0 -18
- package/docs/ecosystem/react.md +0 -65
- package/docs/ecosystem/stric.md +0 -38
- package/docs/guides/ecosystem/prisma.md +0 -141
- package/docs/guides/ecosystem/render.md +0 -79
- package/docs/guides/install/add-git.md +0 -36
- package/docs/guides/test/spy-on.md +0 -46
- package/docs/install/index.md +0 -248
- package/docs/installation.md +0 -327
- package/docs/project/asan.md +0 -124
- package/docs/project/internals/build-process-for-ci.md +0 -75
- package/docs/project/licensing.md +0 -73
- package/docs/project/roadmap.md +0 -87
- package/docs/quickstart.md +0 -157
- package/docs/runtime/bun-apis.md +0 -207
- package/docs/runtime/env.md +0 -253
- package/docs/runtime/index.md +0 -312
- package/docs/runtime/jsx.md +0 -385
- package/docs/runtime/loaders.md +0 -130
- package/docs/runtime/plugins.md +0 -561
- package/docs/runtime/typescript.md +0 -139
- package/docs/runtime/web-apis.md +0 -128
- package/docs/test/configuration.md +0 -154
- package/docs/test/coverage.md +0 -142
- package/docs/test/dom.md +0 -75
- package/docs/test/examples/concurrent-test-glob.md +0 -132
- package/docs/test/hot.md +0 -15
- package/docs/test/lifecycle.md +0 -81
- package/docs/test/mocks.md +0 -313
- package/docs/test/runtime-behavior.md +0 -95
- package/docs/test/snapshots.md +0 -68
- package/docs/test/writing.md +0 -825
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Set a code coverage threshold with the Bun test runner
|
|
3
|
+
sidebarTitle: Coverage threshold
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Bun's test runner supports built-in code coverage reporting via the `--coverage` flag.
|
|
6
8
|
|
|
7
|
-
```sh
|
|
8
|
-
|
|
9
|
+
```sh terminal icon="terminal"
|
|
10
|
+
bun test --coverage
|
|
11
|
+
```
|
|
9
12
|
|
|
13
|
+
```txt
|
|
10
14
|
test.test.ts:
|
|
11
15
|
✓ math > add [0.71ms]
|
|
12
16
|
✓ math > multiply [0.03ms]
|
|
@@ -28,7 +32,7 @@ All files | 66.67 | 77.78 |
|
|
|
28
32
|
|
|
29
33
|
To set a minimum coverage threshold, add the following line to your `bunfig.toml`. This requires that 90% of your codebase is covered by tests.
|
|
30
34
|
|
|
31
|
-
```toml
|
|
35
|
+
```toml bunfig.toml icon="settings"
|
|
32
36
|
[test]
|
|
33
37
|
# to require 90% line-level and function-level coverage
|
|
34
38
|
coverageThreshold = 0.9
|
|
@@ -38,8 +42,11 @@ coverageThreshold = 0.9
|
|
|
38
42
|
|
|
39
43
|
If your test suite does not meet this threshold, `bun test` will exit with a non-zero exit code to signal a failure.
|
|
40
44
|
|
|
41
|
-
```sh
|
|
42
|
-
|
|
45
|
+
```sh terminal icon="terminal"
|
|
46
|
+
bun test --coverage
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```txt
|
|
43
50
|
<test output>
|
|
44
51
|
$ echo $?
|
|
45
52
|
1 # this is the exit code of the previous command
|
|
@@ -49,7 +56,7 @@ $ echo $?
|
|
|
49
56
|
|
|
50
57
|
Different thresholds can be set for line-level and function-level coverage.
|
|
51
58
|
|
|
52
|
-
```toml
|
|
59
|
+
```toml bunfig.toml icon="settings"
|
|
53
60
|
[test]
|
|
54
61
|
# to set different thresholds for lines and functions
|
|
55
62
|
coverageThreshold = { lines = 0.5, functions = 0.7 }
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Generate code coverage reports with the Bun test runner
|
|
3
|
+
sidebarTitle: Coverage reports
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Bun's test runner supports built-in _code coverage reporting_. This makes it easy to see how much of the codebase is covered by tests and find areas that are not currently well-tested.
|
|
@@ -10,8 +12,11 @@ Pass the `--coverage` flag to `bun test` to enable this feature. This will print
|
|
|
10
12
|
|
|
11
13
|
The coverage report lists the source files that were executed during the test run, the percentage of functions and lines that were executed, and the line ranges that were not executed during the run.
|
|
12
14
|
|
|
13
|
-
```sh
|
|
14
|
-
|
|
15
|
+
```sh terminal icon="terminal"
|
|
16
|
+
bun test --coverage
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```txt
|
|
15
20
|
|
|
16
21
|
test.test.ts:
|
|
17
22
|
✓ math > add [0.71ms]
|
|
@@ -34,7 +39,7 @@ All files | 66.67 | 77.78 |
|
|
|
34
39
|
|
|
35
40
|
To always enable coverage reporting by default, add the following line to your `bunfig.toml`:
|
|
36
41
|
|
|
37
|
-
```toml
|
|
42
|
+
```toml bunfig.toml icon="settings"
|
|
38
43
|
[test]
|
|
39
44
|
coverage = true # always enable coverage
|
|
40
45
|
```
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Write browser DOM tests with Bun and happy-dom
|
|
3
|
+
sidebarTitle: DOM tests
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
You can write and run browser tests with Bun's test runner in conjunction with [Happy DOM](https://github.com/capricorn86/happy-dom). Happy DOM implements mocked versions of browser APIs like `document` and `location`.
|
|
@@ -8,15 +10,15 @@ You can write and run browser tests with Bun's test runner in conjunction with [
|
|
|
8
10
|
|
|
9
11
|
To get started, install `happy-dom`.
|
|
10
12
|
|
|
11
|
-
```sh
|
|
12
|
-
|
|
13
|
+
```sh terminal icon="terminal"
|
|
14
|
+
bun add -d @happy-dom/global-registrator
|
|
13
15
|
```
|
|
14
16
|
|
|
15
17
|
---
|
|
16
18
|
|
|
17
19
|
This module exports a "registrator" that injects the mocked browser APIs to the global scope.
|
|
18
20
|
|
|
19
|
-
```ts
|
|
21
|
+
```ts happydom.ts icon="/icons/typescript.svg"
|
|
20
22
|
import { GlobalRegistrator } from "@happy-dom/global-registrator";
|
|
21
23
|
|
|
22
24
|
GlobalRegistrator.register();
|
|
@@ -28,7 +30,7 @@ We need to make sure this file is executed before any of our test files. That's
|
|
|
28
30
|
|
|
29
31
|
The `./happydom.ts` file should contain the registration code above.
|
|
30
32
|
|
|
31
|
-
```toml
|
|
33
|
+
```toml bunfig.toml icon="settings"
|
|
32
34
|
[test]
|
|
33
35
|
preload = "./happydom.ts"
|
|
34
36
|
```
|
|
@@ -37,7 +39,7 @@ preload = "./happydom.ts"
|
|
|
37
39
|
|
|
38
40
|
Now running `bun test` inside our project will automatically execute `happydom.ts` first. We can start writing tests that use browser APIs.
|
|
39
41
|
|
|
40
|
-
```ts
|
|
42
|
+
```ts dom.test.ts icon="/icons/typescript.svg"
|
|
41
43
|
import { test, expect } from "bun:test";
|
|
42
44
|
|
|
43
45
|
test("set button text", () => {
|
|
@@ -51,8 +53,11 @@ test("set button text", () => {
|
|
|
51
53
|
|
|
52
54
|
With Happy DOM properly configured, this test runs as expected.
|
|
53
55
|
|
|
54
|
-
```sh
|
|
55
|
-
|
|
56
|
+
```sh terminal icon="terminal"
|
|
57
|
+
bun test
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```txt
|
|
56
61
|
|
|
57
62
|
dom.test.ts:
|
|
58
63
|
✓ set button text [0.82ms]
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Migrate from Jest to Bun's test runner
|
|
3
|
+
sidebarTitle: Migrate from Jest
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
In many cases, Bun's test runner can run Jest test suites with no code changes. Just run `bun test` instead of `npx jest`, `yarn test`, etc.
|
|
6
8
|
|
|
7
|
-
```sh
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
```sh terminal icon="terminal"
|
|
10
|
+
npx jest # [!code --]
|
|
11
|
+
yarn test # [!code --]
|
|
12
|
+
bun test # [!code ++]
|
|
11
13
|
```
|
|
12
14
|
|
|
13
15
|
---
|
|
@@ -19,9 +21,9 @@ There's often no need for code changes.
|
|
|
19
21
|
|
|
20
22
|
But if you'd rather switch to the `bun:test` imports, you can do that too.
|
|
21
23
|
|
|
22
|
-
```ts
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
```ts title="test.ts" icon="/icons/typescript.svg"
|
|
25
|
+
import { test, expect } from "@jest/globals"; // [!code --]
|
|
26
|
+
import { test, expect } from "bun:test"; // [!code ++]
|
|
25
27
|
```
|
|
26
28
|
|
|
27
29
|
---
|
|
@@ -34,7 +36,7 @@ Add this directive to _just one file_ in your project, such as:
|
|
|
34
36
|
- Your test `preload.ts` setup file (if using `preload` in bunfig.toml)
|
|
35
37
|
- Any single `.ts` file that TypeScript includes in your compilation
|
|
36
38
|
|
|
37
|
-
```ts
|
|
39
|
+
```ts title="global.d.ts" icon="/icons/typescript.svg"
|
|
38
40
|
/// <reference types="bun-types/test-globals" />
|
|
39
41
|
```
|
|
40
42
|
|
|
@@ -42,7 +44,7 @@ Add this directive to _just one file_ in your project, such as:
|
|
|
42
44
|
|
|
43
45
|
Once added, all test files in your project automatically get TypeScript support for Jest globals:
|
|
44
46
|
|
|
45
|
-
```ts
|
|
47
|
+
```ts math.test.ts icon="/icons/typescript.svg"
|
|
46
48
|
describe("my test suite", () => {
|
|
47
49
|
test("should work", () => {
|
|
48
50
|
expect(1 + 1).toBe(2);
|
|
@@ -72,7 +74,7 @@ If you're using `testEnvironment: "jsdom"` to run your tests in a browser-like e
|
|
|
72
74
|
|
|
73
75
|
At the moment jsdom does not work in Bun due to its internal use of V8 APIs. Track support for it [here](https://github.com/oven-sh/bun/issues/3554).
|
|
74
76
|
|
|
75
|
-
```toml
|
|
77
|
+
```toml bunfig.toml
|
|
76
78
|
[test]
|
|
77
79
|
preload = ["./happy-dom.ts"]
|
|
78
80
|
```
|
|
@@ -81,44 +83,24 @@ preload = ["./happy-dom.ts"]
|
|
|
81
83
|
|
|
82
84
|
Replace `bail` in your Jest config with the `--bail` CLI flag.
|
|
83
85
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
- const config: Config = {
|
|
88
|
-
- bail: 3
|
|
89
|
-
- };
|
|
90
|
-
``` -->
|
|
91
|
-
|
|
92
|
-
```sh
|
|
93
|
-
$ bun test --bail=3
|
|
86
|
+
```sh terminal icon="terminal"
|
|
87
|
+
bun test --bail=3
|
|
94
88
|
```
|
|
95
89
|
|
|
96
90
|
---
|
|
97
91
|
|
|
98
92
|
Replace `collectCoverage` with the `--coverage` CLI flag.
|
|
99
93
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
- const config: Config = {
|
|
104
|
-
- collectCoverageFrom: [
|
|
105
|
-
- '**/*.{js,jsx}',
|
|
106
|
-
- '!**/node_modules/**',
|
|
107
|
-
- '!**/vendor/**',
|
|
108
|
-
- ],
|
|
109
|
-
- };
|
|
110
|
-
``` -->
|
|
111
|
-
|
|
112
|
-
```sh
|
|
113
|
-
$ bun test --coverage
|
|
94
|
+
```sh terminal icon="terminal"
|
|
95
|
+
bun test --coverage
|
|
114
96
|
```
|
|
115
97
|
|
|
116
98
|
---
|
|
117
99
|
|
|
118
100
|
Replace `testTimeout` with the `--test-timeout` CLI flag.
|
|
119
101
|
|
|
120
|
-
```sh
|
|
121
|
-
|
|
102
|
+
```sh terminal icon="terminal"
|
|
103
|
+
bun test --timeout 10000
|
|
122
104
|
```
|
|
123
105
|
|
|
124
106
|
---
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Mock functions in `bun test`
|
|
3
|
+
sidebarTitle: Mock functions
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Create mocks with the `mock` function from `bun:test`.
|
|
6
8
|
|
|
7
|
-
```ts
|
|
9
|
+
```ts test.ts icon="/icons/typescript.svg"
|
|
8
10
|
import { test, expect, mock } from "bun:test";
|
|
9
11
|
|
|
10
12
|
const random = mock(() => Math.random());
|
|
@@ -14,7 +16,7 @@ const random = mock(() => Math.random());
|
|
|
14
16
|
|
|
15
17
|
The mock function can accept arguments.
|
|
16
18
|
|
|
17
|
-
```ts
|
|
19
|
+
```ts test.ts icon="/icons/typescript.svg"
|
|
18
20
|
import { test, expect, mock } from "bun:test";
|
|
19
21
|
|
|
20
22
|
const random = mock((multiplier: number) => multiplier * Math.random());
|
|
@@ -24,7 +26,7 @@ const random = mock((multiplier: number) => multiplier * Math.random());
|
|
|
24
26
|
|
|
25
27
|
The result of `mock()` is a new function that's been decorated with some additional properties.
|
|
26
28
|
|
|
27
|
-
```ts
|
|
29
|
+
```ts test.ts icon="/icons/typescript.svg"
|
|
28
30
|
import { mock } from "bun:test";
|
|
29
31
|
|
|
30
32
|
const random = mock((multiplier: number) => multiplier * Math.random());
|
|
@@ -46,7 +48,7 @@ random.mock.results;
|
|
|
46
48
|
|
|
47
49
|
These extra properties make it possible to write `expect` assertions about usage of the mock function, including how many times it was called, the arguments, and the return values.
|
|
48
50
|
|
|
49
|
-
```ts
|
|
51
|
+
```ts test.ts icon="/icons/typescript.svg"
|
|
50
52
|
import { test, expect, mock } from "bun:test";
|
|
51
53
|
|
|
52
54
|
const random = mock((multiplier: number) => multiplier * Math.random());
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Re-run tests multiple times with the Bun test runner
|
|
3
|
+
sidebarTitle: Re-run tests
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Use the `--rerun-each` flag to re-run every test multiple times with the Bun test runner. This is useful for finding flaky or non-deterministic tests.
|
|
6
8
|
|
|
7
|
-
```sh
|
|
9
|
+
```sh terminal icon="terminal"
|
|
8
10
|
# re-run each test 10 times
|
|
9
|
-
|
|
11
|
+
bun test --rerun-each 10
|
|
10
12
|
```
|
|
11
13
|
|
|
12
14
|
---
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Run your tests with the Bun test runner
|
|
3
|
+
sidebarTitle: Run tests
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Bun has a built-in [test runner](https://bun.sh/docs/cli/test) with a Jest-like `expect` API.
|
|
@@ -8,7 +10,7 @@ Bun has a built-in [test runner](https://bun.sh/docs/cli/test) with a Jest-like
|
|
|
8
10
|
|
|
9
11
|
To use it, run the `bun test` command from your project directory. The test runner will recursively search for all files in the directory that match the following patterns and execute the tests they contain.
|
|
10
12
|
|
|
11
|
-
```txt
|
|
13
|
+
```txt File Tree icon="folder-tree"
|
|
12
14
|
*.test.{js|jsx|ts|tsx}
|
|
13
15
|
*_test.{js|jsx|ts|tsx}
|
|
14
16
|
*.spec.{js|jsx|ts|tsx}
|
|
@@ -19,10 +21,11 @@ To use it, run the `bun test` command from your project directory. The test runn
|
|
|
19
21
|
|
|
20
22
|
Here's what the output of a typical test run looks like. In this case, there are three tests files (`test.test.js`, `test2.test.js`, and `test3.test.js`) containing two tests each (`add` and `multiply`).
|
|
21
23
|
|
|
22
|
-
```sh
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
```sh terminal icon="terminal"
|
|
25
|
+
bun test
|
|
26
|
+
```
|
|
25
27
|
|
|
28
|
+
```txt
|
|
26
29
|
test.test.js:
|
|
27
30
|
✓ add [0.87ms]
|
|
28
31
|
✓ multiply [0.02ms]
|
|
@@ -45,10 +48,11 @@ Ran 6 tests across 3 files. [9.00ms]
|
|
|
45
48
|
|
|
46
49
|
To only run certain test files, pass a positional argument to `bun test`. The runner will only execute files that contain that argument in their path.
|
|
47
50
|
|
|
48
|
-
```sh
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
```sh terminal icon="terminal"
|
|
52
|
+
bun test test3
|
|
53
|
+
```
|
|
51
54
|
|
|
55
|
+
```txt
|
|
52
56
|
test3.test.js:
|
|
53
57
|
✓ add [1.40ms]
|
|
54
58
|
✓ multiply [0.03ms]
|
|
@@ -83,10 +87,11 @@ To filter which tests are executed by name, use the `-t`/`--test-name-pattern` f
|
|
|
83
87
|
|
|
84
88
|
Adding `-t add` will only run tests with "add" in the name. This works with test names defined with `test` or test suite names defined with `describe`.
|
|
85
89
|
|
|
86
|
-
```sh
|
|
87
|
-
|
|
88
|
-
|
|
90
|
+
```sh terminal icon="terminal"
|
|
91
|
+
bun test -t add
|
|
92
|
+
```
|
|
89
93
|
|
|
94
|
+
```txt
|
|
90
95
|
test.test.js:
|
|
91
96
|
✓ add [1.79ms]
|
|
92
97
|
» multiply
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Skip tests with the Bun test runner
|
|
3
|
+
sidebarTitle: Skip tests
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
To skip a test with the Bun test runner, use the `test.skip` function.
|
|
6
8
|
|
|
7
|
-
```ts
|
|
9
|
+
```ts test.ts icon="/icons/typescript.svg"
|
|
8
10
|
import { test } from "bun:test";
|
|
9
11
|
|
|
10
12
|
test.skip("unimplemented feature", () => {
|
|
@@ -16,9 +18,11 @@ test.skip("unimplemented feature", () => {
|
|
|
16
18
|
|
|
17
19
|
Running `bun test` will not execute this test. It will be marked as skipped in the terminal output.
|
|
18
20
|
|
|
19
|
-
```sh
|
|
20
|
-
|
|
21
|
+
```sh terminal icon="terminal"
|
|
22
|
+
bun test
|
|
23
|
+
```
|
|
21
24
|
|
|
25
|
+
```txt
|
|
22
26
|
test.test.ts:
|
|
23
27
|
✓ add [0.03ms]
|
|
24
28
|
✓ multiply [0.02ms]
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Use snapshot testing in `bun test`
|
|
3
|
+
sidebarTitle: Snapshot testing
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Bun's test runner supports Jest-style snapshot testing via `.toMatchSnapshot()`.
|
|
6
8
|
|
|
7
|
-
```ts
|
|
9
|
+
```ts snap.test.ts icon="/icons/typescript.svg"
|
|
8
10
|
import { test, expect } from "bun:test";
|
|
9
11
|
|
|
10
12
|
test("snapshot", () => {
|
|
@@ -16,10 +18,11 @@ test("snapshot", () => {
|
|
|
16
18
|
|
|
17
19
|
The first time this test is executed, Bun will evaluate the value passed into `expect()` and write it to disk in a directory called `__snapshots__` that lives alongside the test file. (Note the `snapshots: +1 added` line in the output.)
|
|
18
20
|
|
|
19
|
-
```sh
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
```sh terminal icon="terminal"
|
|
22
|
+
bun test test/snap
|
|
23
|
+
```
|
|
22
24
|
|
|
25
|
+
```txt
|
|
23
26
|
test/snap.test.ts:
|
|
24
27
|
✓ snapshot [1.48ms]
|
|
25
28
|
|
|
@@ -34,7 +37,7 @@ Ran 1 tests across 1 files. [82.00ms]
|
|
|
34
37
|
|
|
35
38
|
The `__snapshots__` directory contains a `.snap` file for each test file in the directory.
|
|
36
39
|
|
|
37
|
-
```txt
|
|
40
|
+
```txt File Tree icon="folder-tree"
|
|
38
41
|
test
|
|
39
42
|
├── __snapshots__
|
|
40
43
|
│ └── snap.test.ts.snap
|
|
@@ -45,7 +48,7 @@ test
|
|
|
45
48
|
|
|
46
49
|
The `snap.test.ts.snap` file is a JavaScript file that exports a serialized version of the value passed into `expect()`. The `{foo: "bar"}` object has been serialized to JSON.
|
|
47
50
|
|
|
48
|
-
```js
|
|
51
|
+
```js snap.test.ts.snap icon="file-code"
|
|
49
52
|
// Bun Snapshot v1, https://bun.sh/docs/test/snapshots
|
|
50
53
|
|
|
51
54
|
exports[`snapshot 1`] = `
|
|
@@ -59,10 +62,12 @@ exports[`snapshot 1`] = `
|
|
|
59
62
|
|
|
60
63
|
Later, when this test file is executed again, Bun will read the snapshot file and compare it to the value passed into `expect()`. If the values are different, the test will fail.
|
|
61
64
|
|
|
62
|
-
```sh
|
|
63
|
-
|
|
64
|
-
bun test v1.3.
|
|
65
|
+
```sh terminal icon="terminal"
|
|
66
|
+
bun test
|
|
67
|
+
bun test v1.3.1 (9c68abdb)
|
|
68
|
+
```
|
|
65
69
|
|
|
70
|
+
```txt
|
|
66
71
|
test/snap.test.ts:
|
|
67
72
|
✓ snapshot [1.05ms]
|
|
68
73
|
|
|
@@ -76,10 +81,12 @@ Ran 1 tests across 1 files. [101.00ms]
|
|
|
76
81
|
|
|
77
82
|
To update snapshots, use the `--update-snapshots` flag.
|
|
78
83
|
|
|
79
|
-
```sh
|
|
80
|
-
|
|
81
|
-
bun test v1.3.
|
|
84
|
+
```sh terminal icon="terminal"
|
|
85
|
+
bun test --update-snapshots
|
|
86
|
+
bun test v1.3.1 (9c68abdb)
|
|
87
|
+
```
|
|
82
88
|
|
|
89
|
+
```txt
|
|
83
90
|
test/snap.test.ts:
|
|
84
91
|
✓ snapshot [0.86ms]
|
|
85
92
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Spy on methods in `bun test`
|
|
3
|
+
sidebarTitle: Spy on methods
|
|
4
|
+
mode: center
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Use the `spyOn` utility to track method calls with Bun's test runner.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { test, expect, spyOn } from "bun:test";
|
|
11
|
+
|
|
12
|
+
const leo = {
|
|
13
|
+
name: "Leonardo",
|
|
14
|
+
sayHi(thing: string) {
|
|
15
|
+
console.log(`Sup I'm ${this.name} and I like ${thing}`);
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const spy = spyOn(leo, "sayHi");
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
Once the spy is created, it can be used to write `expect` assertions relating to method calls.
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import { test, expect, spyOn } from "bun:test";
|
|
28
|
+
|
|
29
|
+
const leo = {
|
|
30
|
+
name: "Leonardo",
|
|
31
|
+
sayHi(thing: string) {
|
|
32
|
+
console.log(`Sup I'm ${this.name} and I like ${thing}`);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const spy = spyOn(leo, "sayHi");
|
|
37
|
+
|
|
38
|
+
test("turtles", () => {
|
|
39
|
+
// [!code ++]
|
|
40
|
+
expect(spy).toHaveBeenCalledTimes(0); // [!code ++]
|
|
41
|
+
leo.sayHi("pizza"); // [!code ++]
|
|
42
|
+
expect(spy).toHaveBeenCalledTimes(1); // [!code ++]
|
|
43
|
+
expect(spy.mock.calls).toEqual([["pizza"]]); // [!code ++]
|
|
44
|
+
}); // [!code ++]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
See [Docs > Test Runner > Mocks](https://bun.sh/docs/test/mocks) for complete documentation on mocking with the Bun test runner.
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: "import, require, and test Svelte components with bun test"
|
|
3
|
+
sidebarTitle: Test Svelte
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
|
-
Bun's [Plugin API](/
|
|
7
|
+
Bun's [Plugin API](/runtime/plugins) lets you add custom loaders to your project. The `test.preload` option in `bunfig.toml` lets you configure your loader to start before your tests run.
|
|
6
8
|
|
|
7
9
|
Firstly, install `@testing-library/svelte`, `svelte`, and `@happy-dom/global-registrator`.
|
|
8
10
|
|
|
9
|
-
```bash
|
|
10
|
-
|
|
11
|
+
```bash terminal icon="terminal"
|
|
12
|
+
bun add @testing-library/svelte svelte@4 @happy-dom/global-registrator
|
|
11
13
|
```
|
|
12
14
|
|
|
13
15
|
Then, save this plugin in your project.
|
|
14
16
|
|
|
15
|
-
```ts
|
|
17
|
+
```ts svelte-loader.js icon="/icons/typescript.svg"
|
|
16
18
|
import { plugin } from "bun";
|
|
17
19
|
import { compile } from "svelte/compiler";
|
|
18
20
|
import { readFileSync } from "fs";
|
|
@@ -28,20 +30,14 @@ afterEach(async () => {
|
|
|
28
30
|
});
|
|
29
31
|
|
|
30
32
|
plugin({
|
|
31
|
-
|
|
33
|
+
title: "svelte loader",
|
|
32
34
|
setup(builder) {
|
|
33
35
|
builder.onLoad({ filter: /\.svelte(\?[^.]+)?$/ }, ({ path }) => {
|
|
34
36
|
try {
|
|
35
|
-
const source = readFileSync(
|
|
36
|
-
path.substring(
|
|
37
|
-
0,
|
|
38
|
-
path.includes("?") ? path.indexOf("?") : path.length
|
|
39
|
-
),
|
|
40
|
-
"utf-8"
|
|
41
|
-
);
|
|
37
|
+
const source = readFileSync(path.substring(0, path.includes("?") ? path.indexOf("?") : path.length), "utf-8");
|
|
42
38
|
|
|
43
39
|
const result = compile(source, {
|
|
44
|
-
|
|
40
|
+
filetitle: path,
|
|
45
41
|
generate: "client",
|
|
46
42
|
dev: false,
|
|
47
43
|
});
|
|
@@ -56,14 +52,13 @@ plugin({
|
|
|
56
52
|
});
|
|
57
53
|
},
|
|
58
54
|
});
|
|
59
|
-
|
|
60
55
|
```
|
|
61
56
|
|
|
62
57
|
---
|
|
63
58
|
|
|
64
59
|
Add this to `bunfig.toml` to tell Bun to preload the plugin, so it loads before your tests run.
|
|
65
60
|
|
|
66
|
-
```toml
|
|
61
|
+
```toml bunfig.toml icon="settings"
|
|
67
62
|
[test]
|
|
68
63
|
# Tell Bun to load this plugin before your tests run
|
|
69
64
|
preload = ["./svelte-loader.js"]
|
|
@@ -76,20 +71,20 @@ preload = ["./svelte-loader.js"]
|
|
|
76
71
|
|
|
77
72
|
Add an example `.svelte` file in your project.
|
|
78
73
|
|
|
79
|
-
```html
|
|
74
|
+
```html Counter.svelte icon="file-code"
|
|
80
75
|
<script>
|
|
81
76
|
export let initialCount = 0;
|
|
82
77
|
let count = initialCount;
|
|
83
78
|
</script>
|
|
84
79
|
|
|
85
|
-
<button on:click={()
|
|
80
|
+
<button on:click="{()" ="">(count += 1)}>+1</button>
|
|
86
81
|
```
|
|
87
82
|
|
|
88
83
|
---
|
|
89
84
|
|
|
90
85
|
Now you can `import` or `require` `*.svelte` files in your tests, and it will load the Svelte component as a JavaScript module.
|
|
91
86
|
|
|
92
|
-
```ts
|
|
87
|
+
```ts hello-svelte.test.ts icon="/icons/typescript.svg"
|
|
93
88
|
import { test, expect } from "bun:test";
|
|
94
89
|
import { render, fireEvent } from "@testing-library/svelte";
|
|
95
90
|
import Counter from "./Counter.svelte";
|
|
@@ -113,8 +108,6 @@ test("Counter increments when clicked", async () => {
|
|
|
113
108
|
|
|
114
109
|
Use `bun test` to run your tests.
|
|
115
110
|
|
|
116
|
-
```bash
|
|
117
|
-
|
|
111
|
+
```bash terminal icon="terminal"
|
|
112
|
+
bun test
|
|
118
113
|
```
|
|
119
|
-
|
|
120
|
-
---
|