$ tester · autonomous web-app QA
Point it at https://your-app. It crawls every page (including authenticated), runs functional + performance + visual audits, generates re-runnable Playwright specs, and writes a report you can open or share.
- ✓ local-first
- ✓ per-project baselines
- ✓ auth-aware
- ✓ html + markdown reports
- ✓ MIT-licensed
## how it works
$ tester init https://your-app.example.com → opens browser for interactive auth, captures storageState $ tester run --url https://your-app.example.com --depth standard → crawl · functional · performance · visual → emits Playwright specs at ~/.tester/specs/<projectKey> → writes report → REPORT.md $ tester report --share → uploads + opens shareable HTML report in the dashboard
## three depths
quick
1–2 min. Health check: status codes, console errors, top-of-fold render.
standard
5–10 min. Full BFS crawl, Core Web Vitals per route, visual heuristics, regression diff vs last run.
deep
20+ min. Adds: form-fill probes, button/CTA exercises, API call tracing, multi-viewport screenshots.
## install
$ # 1. Install the skill (public, Apache 2.0) $ git clone https://github.com/amineorion/tester-skill ~/.claude/skills/tester $ # 2. Point at the hosted backend (the easy path) $ export TESTER_API_URL=https://api.tester.dev $ # 3. In Claude Code, just say: → "QA https://your-app.example.com" → "do a full report on https://your-app, deep depth, upload to dashboard"
prefer to self-host?
The platform repo (server + admin + landing + CLI) is private. Ping us for access.
## dashboard
Sign in with email. Every run uploaded with --share shows up under your project list with screenshots, findings grouped by severity, perf trend lines, and a permalink you can paste in a PR.
## faq
Does my app's data leave my machine?
Not unless you opt in. --share uploads the run's report + screenshots to the dashboard you authed against. Without it, everything stays in ~/.tester/.
What does it actually click?
The crawler follows internal links breadth-first. It does not submit forms by default. The "deep" depth probes form-fill paths and primary CTAs you opt into.
How is it different from Lighthouse or Playwright codegen?
Lighthouse audits one page at a time without auth context. Codegen records what you click. tester does an autonomous walk + audit across all your routes, generates Playwright code from what it found, and stores baselines so re-runs diff.
Where does my auth live?
Captured once via the interactive wizard into ~/.tester/projects/<projectKey>/storageState.json. Same shape Playwright uses. Never uploaded.