A minimal test runner that runs tests directly in the browser
- Modern platform features like esm & async / await
- Test with the real DOM & Browser APIs
- First class Typescript support & live reload: The test runner uses vite!
-
Easy and concise way to write tests
export const aTest = () => assert(value !== 0);
Motivation behind this test runner
- Install
npm i -D vite browser-unit-test
- Create scaffolding
npx browser-unit-test init
# or: pnpm exec browser-unit-test init
- Run tests
npx vite test
# or: pnpm exec vite test
Pro tip: Use browser debugging to see your test results directly in your IDE: e.g. VSCode browser debugging
Tests are just functions that are exported:
export const aTest = () => assert(value !== 0);
By default all the files that have a .test.js
or a .test.ts
ending in the /test
folder get executed by the runner.
Are asserts like this assert(value !== 0)
really a good idea?
- For readability: yes
- For logging: normally no
You normally don't get the context of why the assertion failed when you use this pattern. But this library provides a small transform, which prints you the actual values for both sides of the comparison.
The test results will be displayed in the browser console, and are grouped by file and function.
If you build code for targeting a web-browser. Why run unit tests in node.js? Because all the API are different and the logging and inspection is so great. Surely not 😄. That is reason for this library, to define and run unit tests directly in the browser. (Note: there is currently no support for CI. It is only meant to run during development)