https://github.com/nichoth/tap-ssc
Run tests in a browser environment from the command line
https://github.com/nichoth/tap-ssc
Last synced: about 1 year ago
JSON representation
Run tests in a browser environment from the command line
- Host: GitHub
- URL: https://github.com/nichoth/tap-ssc
- Owner: nichoth
- License: mit
- Archived: true
- Created: 2022-11-20T23:15:19.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-29T20:40:43.000Z (over 1 year ago)
- Last Synced: 2025-04-29T10:53:10.902Z (about 1 year ago)
- Language: JavaScript
- Size: 144 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# tap ssc

[](https://socket.dev/npm/package/@nichoth/tap-ssc)
[](https://semver.org/)
[](LICENSE)
Run tests in a browser environment from the command line.
The interface is inspired by [tape-run](https://www.npmjs.com/package/tape-run). Just pipe some JS into the `tap-ssc` command, and your tests will run in a browser environment.
Instead of [electron](https://www.electronjs.org/), a dependency of `tape-run`, this uses [@socketsupply/socket](https://socketsupply.co/) to create a browser-like environment.
## install
```sh
npm i -D @nichoth/tap-ssc
```
## use
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:
```js
"scripts": {
"test": "esbuild --bundle test/index.js | tap-ssc"
},
```
Or on the command line:
```sh
npx esbuild --bundle test/index.js | npx tap-ssc
```
## example
```js
// example/test/index.js
import { test } from '@nichoth/tapzero'
test('browser environment', t => {
t.ok(window, 'window should exist')
})
```
Then in the terminal:
```sh
npx esbuild --bundle test/index.js | npx tap-ssc
```
see [this example](https://github.com/nichoth/tap-ssc/blob/main/example/package.json#L2)
### pass in your own html file
> [!NOTE]
> This is in progress.
Use command line argument `--html=filename.html`
```sh
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`:
```html
```
This is useful if your application code depends on another file that you are linking to via HTML, eg
```html
tests
```
## how does this work?
We build an `ssc` binary [once after you install this package](./package.json#L16)
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`.
## test this module
This will use the `example` directory to install this as a dependency, then run a given test.
### A passing test
```sh
npm test | npx tap-arc
```
### A failing test
```sh
npm run test-fail
```
### A test that throws an error
```sh
npm run test-err
```