Browser extension
The Chrome extension that records manual-testing journeys: installing it, linking it to your server, which domains belong to which project, recording with the on-page capsule, and keeping it updated.
Install
The CLI unpacks the released extension and registers the native-messaging host that lets it update itself:
vitrinka setup extension setup # unpack the marketplace release, register the update host
vitrinka setup extension update # swap the folder to the newest release; the extension reloads itself
vitrinka doctor # report every link in the update chainvitrinka setup offers the same step; --extension accepts it without asking and --no-extension skips it. Loading the extension folder unpacked in chrome://extensions is the developer flow.
Point it at your server
Open the extension's Options (right-click the icon). With the CLI installed, the native host fills them in.
- Base URL — the server that receives recordings.
- Link this browser — vitrinka shows a short code; approve it in a signed-in tab (or scan the QR with a phone) and pick the workspace. The extension receives a recorder token that can only create sessions there and append to the ones it started; it expires 30 days after its last use and is revocable under Settings → Tokens.
- Advanced — workspace and token by hand — a
vkp_personal token, which acts in every workspace you belong to: name the Workspace, or leave it blank and each recording resolves its workspace from the tab's host.
Save & test checks the connection; Fill from the vitrinka CLI reads the server and token from the CLI again when the saved ones have gone stale. Tokens live in the extension's own storage, never in a page.
Which tab belongs to which project
A recording starts from the popup on any tab whose host matches a project's domain rule, and other tabs on the same project's domains join the session automatically. Rules live on the project:
{"domains": [{"pattern": "*.acme.internal", "environment": "staging"}]}Set them under Settings → Projects → Routing — a pattern and an environment per rule (projects) — or at PUT /api/v1/projects/{project}/settings; the popup shows which project and environment the current tab resolves to. A tab that matches no rule cannot start a session. A production rule's "inAppRecorder" switch concerns only the in-page recorder; the extension records production tabs either way.
What it captures
The extension captures screenshots, interactions, network requests and responses through the debugging protocol, console errors, an rrweb DOM stream and your notes. See Recorder redaction and What the recorders capture for coverage and limitations.
You start and stop recording explicitly, from the popup. While a session is active, it can include other tabs belonging to the same project.
While you record
The page shows the same recorder pill as the in-app recorder — a dot and a timer whose tools unfold when you hover or focus it. Drag it to one of eight spots (the corners, the middle of each side, the top and bottom centre), or push it past an edge to tuck it into a tab; arrow keys and Move to do the same, and it remembers the spot on each site.
Alt+Shift+Asnaps: pick an element or drag a region, then write a note. Before sending, choose board (an annotation on the frame) or task (it also files an intake draft).Alt+Shift+Nadds a quick note to the current screen;Alt+Shift+Ppauses and resumes;Alt+Shift+Sstops.- The sync chip shows health —
syncedonce the server holds everything,sending Nwhile a backlog drains,offline · Nwhile vitrinka is out of reach. - ■ stops from the page: it asks first, then shows Saving… and Saved · in Recents while vitrinka builds the board (usually under a minute), then Saved · Open board with the board's link.
- ⋯ names who the browser is linked as, lists its last five recordings on the current server and workspace with their boards, and sets the pill's size and whether it shows technical details.
- If the server refuses the recorder mid-upload —
401or403, because the token was revoked or the browser was linked again during the session — the session is marked dead and everything the extension still holds stays queued; only the server answering that the session is gone, done or deleted clears it.
Stop in the popup builds the session board. With a personal token, the popup also lists the project's recent sessions and can continue one onto the same board; a recorder token lists no sessions, so with one you always start a new session.
Updates
An unpacked extension never auto-updates. The popup asks the CLI, over the native host, whether the marketplace holds a newer release; Update downloads it, verifies the checksum, swaps the folder and reloads the extension. Without the CLI on the machine the popup falls back to a download banner.
When it records
Only while you explicitly start a session, and only against the server you configure in its options. There is no background capture.
- Explicit sessions — recording starts and stops when you say so.
- One destination — exclusively the vitrinka server URL you configure — no third-party telemetry.
- Readable source — the extension is published in the vitrinka-kit repository so you can check what runs on your device.