- introduce repo-local, ephemeral Playwright codegen workflow - add executable codegen script using official Playwright Docker image - persist generated recordings under recordings/ (git-ignored, .gitkeep) - add minimal Makefile with install and codegen targets - switch project license to MIT - improve README with clear usage, requirements, and design rationale - add MIRRORS file for multi-remote setup - clean up gitignore for generated artifacts and node tooling
🎭 playwright-recorder
A small, reproducible Playwright recording / codegen tool
built around Docker, X11/XWayland, and ephemeral workspaces
🔗 Homepage: https://github.com/kevinveenbirkenbach/playwright-recorder
✨ What is this?
playwright-recorder is a developer tool for recording Playwright tests via
the official Playwright codegen feature — without polluting your project:
- 🎥 GUI-based recording (Playwright Inspector)
- 🧼 Always fresh (no reused state, no lockfile pain)
- 🐳 Runs fully in Docker
- 🗂️ Repo-local, git-ignored workspace
- 📄 Only generated tests are persisted
- 🚫 No
/tmpusage
Perfect for:
- recording login flows
- capturing UI regressions
- generating first test drafts
- infra-heavy projects where Playwright does not belong in the main repo
recordings/is ignored by git.gitkeepensures the folder exists- ephemeral workspace lives in
recordings/.work/and is auto-cleaned
🚀 Usage
1️⃣ Requirements
- Docker
- X11 or XWayland (Wayland-only will NOT work)
xhost
On Arch Linux:
⚙️ Installation (one-time)
Prepare the recorder script:
make install
This makes scripts/codegen.sh executable.
🎥 Start recording
make codegen
Or with a start URL:
./scripts/codegen.sh https://example.com/login
📤 Output
-
📄 Generated test:
recordings/codegen.spec.ts -
🧼 Ephemeral workspace (auto-deleted):
recordings/.work/
Nothing else touches your repo.
⚙️ Configuration (optional)
Environment variables:
| Variable | Default | Description |
|---|---|---|
PLAYWRIGHT_VERSION |
1.58.1 |
Playwright version |
PLAYWRIGHT_IMAGE |
auto | Docker image tag |
RECORDINGS_DIR |
recordings |
Output directory |
OUTPUT_FILE |
codegen.spec.ts |
Generated file name |
TARGET |
playwright-test |
Codegen target |
DISPLAY |
:0 |
X11 display |
Example:
OUTPUT_FILE=login.spec.ts make codegen
🧠 Design philosophy
- ❌ Not a test runner
- ❌ Not CI tooling
- ❌ Not framework glue
- ✅ A focused recording utility
- ✅ One job, done well
🔐 Security note
xhost +local:docker is used temporarily to allow GUI access.
Access is revoked automatically when the script exits.
🧑💻 Author
Kevin Veen-Birkenbach 📧 kevin@veen.world 🏡 www.veen.world
📜 License
MIT License – see LICENSE