https://github.com/qualityshepherd/tappr
Minimal E2E test runner using Tape and Puppeteer — easy to grok, easy to extend, hard to outgrow.
https://github.com/qualityshepherd/tappr
e2e puppeteer tape test
Last synced: 7 months ago
JSON representation
Minimal E2E test runner using Tape and Puppeteer — easy to grok, easy to extend, hard to outgrow.
- Host: GitHub
- URL: https://github.com/qualityshepherd/tappr
- Owner: qualityshepherd
- Created: 2025-06-08T17:26:33.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-06-08T17:59:20.000Z (7 months ago)
- Last Synced: 2025-06-08T18:34:12.538Z (7 months ago)
- Topics: e2e, puppeteer, tape, test
- Language: JavaScript
- Homepage:
- Size: 0 Bytes
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://github.com/qualityshepherd/tappr/actions/workflows/run_tests.yml)
# tappr
Minimal E2E test runner using [Tape](https://github.com/substack/tape) and [Puppeteer](https://www.npmjs.com/package/puppeteer) — easy to grok, easy to extend, hard to outgrow.
## Features
- Powered by Tape and Puppeteer
- Simple CLI: `tappr`
- `--headless`, `--headed`, and `--slomo` flags
- Glob-based test discovery — use any file structure
- Minimal wrapper with clear, hackable test DSL (`t.goto`, `t.click`, etc.)
- Easily extensible or swappable
- No globals, no magic, no framework lock-in
## Install
- `npm install --save-dev tappr`
## Usage
- npx tappr [options]
- eg. `npx tappr --headed --slomo=100 test/**/*.test.js`
## CLI Options
- `--headless` (default) run tests in headless mode
- `--headed` run with visible browser
- `--slomo=N` slow motion mode in ms per action (e.g. `--slomo=250`)
## Extend
The easiest way is just throw `/lib/tappr.js` into your project and edit to taste. Then import it into your tests. Add functionality as you go!
Slightly harder way: fork it and install into your project.
## Writing Tests
Use Tape (or another runner) as usual and wrap your test with tappr thusly:
```javascript
import test from 'tape'
import { tappr } from '../lib/tappr.js'
const site = 'https://example.com'
test('homepage loads', tappr(async t => {
await t.goto(site)
t.ok(await t.exists('h1'))
}))
```