aboutsummaryrefslogtreecommitdiff
path: root/test/README.md
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-22 23:21:48 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-22 23:21:48 -0700
commit729d445b6885f69dd2c6355f38707bd42851c791 (patch)
treef87a7c408929ea3f57bbb7ace380cf869da83c0e /test/README.md
parent25f820c6bf1d8ec6d444ef579cc036b8c0607b75 (diff)
downloadbun-jarred/rename.tar.gz
bun-jarred/rename.tar.zst
bun-jarred/rename.zip
change the directory structurejarred/rename
Diffstat (limited to 'test/README.md')
-rw-r--r--test/README.md138
1 files changed, 138 insertions, 0 deletions
diff --git a/test/README.md b/test/README.md
new file mode 100644
index 000000000..292d23cf2
--- /dev/null
+++ b/test/README.md
@@ -0,0 +1,138 @@
+# Tests in Bun
+
+Bun currently has four different kinds of tests
+
+To run the tests:
+
+```bash
+make test-all
+bun wiptest
+```
+
+### Browser tests
+
+Browser tests run end-to-end inside of Puppeteer and execute code transpiled by `bun dev`. These tests are in [./snippets](./snippets).
+
+The interface is:
+
+```js
+// this function is called after import()
+// if testDone() is never called, the test fails
+export function test() {
+ return testDone(import.meta.url);
+}
+```
+
+On success, it saves a snapshot to [./snapshots](./snapshots) which is checked into git.
+
+#### Adding a new test
+
+1. Create a new file in the `snippets` directory.
+2. Append the filename to [./scripts/snippets.json](./scripts/snippets.json)
+3. Run `bun dev` inside this folder in one terminal window
+4. Run `make integration-test-dev`
+
+These tests are run twice. Once with HMR enabled and once with HMR disabled. HMR changes the output enough to warrant it's own special treatment.
+
+#### Running the tests
+
+To run the browser tests with HMR on a production build:
+
+```bash
+make test-with-hmr
+```
+
+To run the browser tests without HMR on a production build:
+
+```bash
+make test-with-no-hmr
+```
+
+To run the browser tests with HMR on a debug build:
+
+```bash
+make test-dev-with-hmr
+```
+
+To run the browser tests without HMR on a debug build:
+
+```bash
+make test-dev-no-hmr
+```
+
+To run the browser tests on whatever version of bun is running on port 3000:
+
+```bash
+make integration-test-dev
+```
+
+These were the first tests bun started with
+
+### Runtime tests
+
+These tests are in [./bun.js](./bun.js) and are files which are either `.test.js` or `.test.ts` files.
+
+These test that the runtime behaves as expected. These also test the transpiler, both because test files are transpiled and directly by running the transpiler via `Bun.Transpiler`.
+
+#### Adding a new test
+
+1. Create a new file in [./bun.js](./bun.js/) with `.test` in the name.
+
+These test use `bun:test` as the import (though you can also import from `vitest` or jest and it will work).
+
+This will eventually be a public test runner for bun, but the reporter isn't very good yet and it doesn't run in parallel.
+
+The syntax intends for Jest compatibility.
+
+```ts
+import { describe, expect, it } from "bun:test";
+
+describe("Example", () => {
+ it("should work", () => {
+ expect(1).toBe(1);
+ });
+});
+```
+
+#### Running the tests
+
+Run `bun wiptest ${part-of-file-name}`
+
+If you run the test in the top-level bun repo directory, it will take an extra couple seconds because `bun wiptest` will scan through all of WebKit recursively. Consider running it in the `bun.js` directory instead.
+
+### CLI tests
+
+These run the bash files in the `apps` directory.
+
+They check end-to-end that the CLI works as expected.
+
+```bash
+# Install dependencies for running tests
+# Does not run tests
+make test-install
+
+# Check a Create React App created via `bun create react ./foo` returns HTML
+make test-create-react
+
+# Check a Next.js app created via `bun create next ./foo` SSRs successfully
+make test-create-next
+
+# Check that bun run works for the same CLI args passed to npm run
+make test-bun-run
+
+# Check that "react" installed via bun install loads successfully
+# and that deleting/adding updates the lockfile as expected
+make test-bun-install
+
+# Check that serving public paths works correctly
+# and that files which should be transpiled are transpiled and files which shouldn't be aren't
+make test-bun-dev
+```
+
+### Zig tests
+
+These tests live in various `.zig` files throughout Bun's codebase, leveraging Zig's builtin `test` keyword.
+
+Currently, they're not run automatically nor is there a simple way to run all of them.
+
+This is an area bun needs to improve in.