14 command descriptions enriched with specific arg formats, valid values,
error behavior, and return types. Fixed header usage from <name> <value>
to <name>:<value>. Added cookie usage syntax. Snapshot flags now show
long names, ref numbering, and output format examples.
Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with
elements, verify page state, diff before/after actions, take annotated screenshots, check
responsive layouts, test forms and uploads, handle dialogs, and assert element states.
~100ms per command. Use when you need to test a feature, verify a deployment, dogfood a
user flow, or file a bug with evidence.
Bash
Read
browse: QA Testing & Dogfooding
Persistent headless Chromium. First call auto-starts (~3s), then ~100ms per command.
State persists between calls (cookies, tabs, login sessions).
Core QA Patterns
1. Verify a page loads correctly
$B goto https://yourapp.com
$B text # content loads?$B console # JS errors?$B network # failed requests?$B is visible ".main-content"# key elements present?
2. Test a user flow
$B goto https://app.com/login
$B snapshot -i # see all interactive elements$B fill @e3 "user@test.com"$B fill @e4 "password"$B click @e5 # submit$B snapshot -D # diff: what changed after submit?$B is visible ".dashboard"# success state present?
3. Verify an action worked
$B snapshot # baseline$B click @e3 # do something$B snapshot -D # unified diff shows exactly what changed
5. Find all clickable elements (including non-ARIA)
$B snapshot -C # finds divs with cursor:pointer, onclick, tabindex$B click @c1 # interact with them
6. Assert element states
$B is visible ".modal"$B is enabled "#submit-btn"$B is disabled "#submit-btn"$B is checked "#agree-checkbox"$B is editable "#name-field"$B is focused "#search-input"$B js "document.body.textContent.includes('Success')"
7. Test responsive layouts
$B responsive /tmp/layout # mobile + tablet + desktop screenshots$B viewport 375x812 # or set specific viewport$B screenshot /tmp/mobile.png
8. Test file uploads
$B upload "#file-input" /path/to/file.pdf
$B is visible ".upload-success"
9. Test dialogs
$B dialog-accept "yes"# set up handler$B click "#delete-button"# trigger dialog$B dialog # see what appeared$B snapshot -D # verify deletion happened
Refs are invalidated on navigation — run snapshot again after goto.
Full Command List
Navigation
Command
Description
back
History back
forward
History forward
goto <url>
Navigate to URL
reload
Reload page
url
Print current URL
Reading
Command
Description
accessibility
Full ARIA tree
forms
Form fields as JSON
html [selector]
innerHTML of selector (throws if not found), or full page HTML if no selector given
links
All links as "text → href"
text
Cleaned page text
Interaction
Command
Description
click <sel>
Click element
cookie <name>=<value>
Set cookie on current page domain
cookie-import <json>
Import cookies from JSON file
cookie-import-browser [browser] [--domain d]
Import cookies from Comet, Chrome, Arc, Brave, or Edge (opens picker, or use --domain for direct import)
dialog-accept [text]
Auto-accept next alert/confirm/prompt. Optional text is sent as the prompt response
dialog-dismiss
Auto-dismiss next dialog
fill <sel> <val>
Fill input
header <name>:<value>
Set custom request header (colon-separated, sensitive values auto-redacted)
hover <sel>
Hover element
press <key>
Press key — Enter, Tab, Escape, ArrowUp/Down/Left/Right, Backspace, Delete, Home, End, PageUp, PageDown, or modifiers like Shift+Enter
scroll [sel]
Scroll element into view, or scroll to page bottom if no selector
select <sel> <val>
Select dropdown option by value, label, or visible text
type <text>
Type into focused element
upload <sel> <file> [file2...]
Upload file(s)
useragent <string>
Set user agent
viewport <WxH>
Set viewport size
`wait <sel
--networkidle
Inspection
Command
Description
`attrs <sel
@ref>`
`console [--clear
--errors]`
cookies
All cookies as JSON
css <sel> <prop>
Computed CSS value
dialog [--clear]
Dialog messages
eval <file>
Run JavaScript from file and return result as string (path must be under /tmp or cwd)
is <prop> <sel>
State check (visible/hidden/enabled/disabled/checked/editable/focused)
js <expr>
Run JavaScript expression and return result as string
network [--clear]
Network requests
perf
Page load timings
storage [set k v]
Read all localStorage + sessionStorage as JSON, or set to write localStorage
Visual
Command
Description
diff <url1> <url2>
Text diff between pages
pdf [path]
Save as PDF
responsive [prefix]
Screenshots at mobile (375x812), tablet (768x1024), desktop (1280x720). Saves as {prefix}-mobile.png etc.
screenshot [path]
Save screenshot
Snapshot
Command
Description
snapshot [flags]
Accessibility tree with @e refs for element selection. Flags: -i interactive only, -c compact, -d N depth limit, -s sel scope, -D diff vs previous, -a annotated screenshot, -o path output, -C cursor-interactive @c refs
Meta
Command
Description
chain
Run commands from JSON stdin. Format: [["cmd","arg1",...],...]