Run tests in a browser environment from the command line.
The interface is inspired by tape-run. Just pipe some JS into the tap-ssc
command, and your tests will run in a browser environment.
Instead of electron, a dependency of tape-run
, this uses @socketsupply/socket to create a browser-like environment.
npm i -D @nichoth/tap-ssc
Bundle your client side JS, then pipe it into this tool, which is installed as the tap-ssc
command.
Your tests will be running in a browser environment, but all tap output will go to the terminal.
Use it as a part of package.json
scripts:
"scripts": {
"test": "esbuild --bundle test/index.js | tap-ssc"
},
Or on the command line:
npx esbuild --bundle test/index.js | npx tap-ssc
// example/test/index.js
import { test } from '@nichoth/tapzero'
test('browser environment', t => {
t.ok(window, 'window should exist')
})
Then in the terminal:
npx esbuild --bundle test/index.js | npx tap-ssc
see this example
Note
This is in progress.
Use command line argument --html=filename.html
esbuild --bundle --platform=browser --format=esm test/html.js | tap-ssc --html=test.html | tap-arc
In your html, be sure to include a script tag pointing at bundle.js
:
<script charset="utf-8" src="bundle.js" type="module"></script>
This is useful if your application code depends on another file that you are linking to via HTML, eg
<head>
<meta charset="UTF-8">
<title>tests</title>
<script src="https://example.com/my-js-dependency/dist/index.umd.min.js"></script>
</head>
<body>
<script src="bundle.js"></script>
</body>
We build an ssc
binary once after you install this package
The package binary, ./cli.js
, takes javascript that is piped to stdin
, and writes it to a file at the right location -- target + /bundle.js
. Then it runs the ssc binary and pipes the output to stdout
.
This will use the example
directory to install this as a dependency, then run a given test.
npm test | npx tap-arc
npm run test-fail
npm run test-err