Repository navigation
Installation
- Node.js 22.22.1+. Needed for everything.
- Docker — only for the web UI / server stack. Writing tests and running runner nodes need neither Docker nor the server.
npm install -g plum-e2eThis installs the plum command globally. A global install is usually root-owned and is replaced wholesale on update, so Plum keeps its runtime state (logs, node registry, job payloads) in ~/.plum, not inside the package.
Good for a solo developer or a first look. You get the test scaffold, the runners, and the CLI; you do not get the Test Repository, reports UI, session replay, schedules, notifications or MCP.
mkdir my-tests && cd my-tests
plum init # choose Playwright or Cucumber
cd tests
npx playwright test # a Cucumber project uses: npx cucumber-jsplum init scaffolds tests/, installs the runner, and downloads browsers, so the example tests run straight away. Run the runner from tests/: that is where its config lives, and from the folder above it Playwright finds the specs without the config and stops with "did not expect test.describe() to be called here". The folder it produces is the same layout a project has on the server, so it drops into projects/<slug>/tests/ later if you add the UI. See Writing Tests and Running Tests Locally.
plum init accepts --framework playwright|cucumber to skip the prompt.
Run this on one machine for your team.
mkdir plum-server && cd plum-server
plum server startThe setup wizard asks a few questions, brings up the Docker stack, and prints the UI URL (http://localhost:3002 by default). On first visit the UI walks you through creating your organisation, first project and owner account. Full details in Setting Up the Server.
The very first account created on a fresh server becomes the owner (role: owner) — every project, every setting, account-wide. There is exactly one owner. Everyone else is added later from Settings → Users as admin or user; see Roles and Access.
That first-run flow also picks your first project's framework, Playwright or Cucumber, right there on the page — see Projects.
The /setup flow is only available while no users exist. Once the owner is created it 404s.
plum updateUpdates the global plum-e2e package, then restarts every server and node registered on this machine. The web UI also shows an update banner in Settings when a newer version is on npm; it links to the GitHub releases.
npm uninstall -g plum-e2eTo also remove the server's data, run plum server stop first, then delete the Docker volume (docker volume rm <project>_postgres_data) and the instance folder.
Getting started
Tests
Platform
- Roles and Access
- Google Sign-In
- Test Repository
- Reports and Session Replay
- Retrying Flaky Tests
- Integrations
- AI Agent
- API & MCP
- Activity Logs
- Backup