hubcap command reference

Complete reference for all hubcap commands, organized by task.

Global flags

All commands accept these flags before the command name:

FlagTypeDefaultDescription
-port <n>int9222 / HUBCAP_PORTChrome debug port
-host <s>stringlocalhost / HUBCAP_HOSTChrome debug host
-timeout <d>duration10sCommand timeout
-output <fmt>stringjsonOutput format: json, ndjson, text
-quietboolfalseSuppress non-essential output
-target <id>stringfirst pageTarget page by index or ID

Exit codes

CodeMeaning
0Success
1General error (element not found, invalid args, protocol error)
2Chrome connection failed
3Timeout exceeded

Navigate & manage tabs

TaskCommandNotes
Open URLgoto <url>Add --wait to block until loaded
Go backback
Go forwardforward
Reload pagereload--bypass-cache to skip cache
Open new tabnew [url]Returns targetId
Close current tabclose
List tabstabsUse -target <id> to switch
Wait for page loadwaitload--timeout 30s default
Wait for navigationwaitnav--timeout 30s default
Wait for URL matchwaiturl <pattern>--timeout 30s default
Wait for network idlewaitidle--idle 500ms default

Read page info

TaskCommandNotes
Get page titletitle
Get page URLurl
Get combined infoinfoTitle + URL + meta in one call
Get full HTML sourcesource
Get meta tagsmeta
Get all linkslinksReturns href + text
Get all imagesimages
Get all scriptsscripts
Get all tablestablesExtracts headers + rows
Get all formsformsIncludes input fields
List frames/iframesframesReturns frame IDs for evalframe

Query DOM elements

TaskCommandNotes
Query elementquery <sel>Returns nodeId, tagName, attributes
Get outer HTMLhtml <sel>
Get inner texttext <sel>
Get attributeattr <sel> <name>
Get input valuevalue <sel>For input/textarea/select
Count matchescount <sel>Returns integer count
Check visibilityvisible <sel>Returns boolean
Check existenceexists <sel>Returns boolean, never errors on missing
Get bounding boxbounds <sel>Returns x, y, width, height
Get all CSS stylesstyles <sel>All computed properties
Get one CSS propertycomputed <sel> <prop>Single computed value
Get layout + childrenlayout <sel>--depth N controls child depth
Query shadow DOMshadow <host> <inner>Two selectors: host, then inner
Find text on pagefind <text>Returns match count + positions
Get selected textselectionCurrent document selection
Get caret positioncaret <sel>Cursor offset in input
List event listenerslisteners <sel>

Click & interact

TaskCommandNotes
Click elementclick <sel>
Double-clickdblclick <sel>
Right-clickrightclick <sel>Context menu trigger
Triple-clicktripleclick <sel>Selects paragraph
Click at coordinatesclickat <x> <y>Float coordinates
Hover elementhover <sel>Triggers :hover styles
Move mousemouse <x> <y>Moves without clicking
Drag and dropdrag <src> <dest>Two CSS selectors

Touch gestures

TaskCommandNotes
Tap elementtap <sel>Touch tap for mobile
Swipe gestureswipe <sel> <dir>left, right, up, down
Pinch zoompinch <sel> <dir>in or out

Form input

TaskCommandNotes
Fill input (clear + type)fill <sel> <text>Clears first, then types
Clear inputclear <sel>
Type keystrokestype <text>Types into focused element
Press key combopress <key>e.g. Enter, Ctrl+a, Ctrl+Shift+n
Focus elementfocus <sel>
Select dropdownselect <sel> <value>By option value
Check checkboxcheck <sel>
Uncheck checkboxuncheck <sel>
Set value directlysetvalue <sel> <val>Bypasses input events
Upload filesupload <sel> <file>...File input selector + paths
Dispatch eventdispatch <sel> <type>Custom DOM event

Scroll

TaskCommandNotes
Scroll by pixelsscroll <x> <y>Relative scroll
Scroll to elementscrollto <sel>scrollIntoView
Scroll to topscrolltop
Scroll to bottomscrollbottom

Wait for conditions

TaskCommandNotes
Wait for elementwait <sel>--timeout 30s default
Wait for textwaittext <text>--timeout 30s default
Wait for removalwaitgone <sel>--timeout 30s default
Wait for JS truthywaitfn <expr>--timeout 30s default
Wait for page loadwaitload--timeout 30s default
Wait for navigationwaitnav--timeout 30s default
Wait for URL matchwaiturl <pattern>--timeout 30s default
Wait for network idlewaitidle--idle 500ms default
Wait for requestwaitrequest <pattern>--timeout 30s default
Wait for responsewaitresponse <pattern>--timeout 30s default

Screenshots & export

TaskCommandNotes
Screenshot pagescreenshot --output f.png--format, --quality, --selector, --base64
Export PDFpdf --output f.pdf--landscape, --background

Cookies & storage

TaskCommandNotes
List cookiescookiesNo flags = list all
Set cookiecookies --set k=vOptional --domain
Delete cookiecookies --delete <name>Optional --domain
Clear cookiescookies --clear
Export cookiescookies --export <file>JSON array format
Import cookiescookies --import <file>JSON array format
Get localStoragestorage <key>
Set localStoragestorage <key> <val>
Clear localStoragestorage --clear
Get sessionStoragesession <key>
Set sessionStoragesession <key> <val>
Clear sessionStoragesession --clear
Read clipboardclipboard --read
Write clipboardclipboard --write <text>

Network monitoring

TaskCommandNotes
Stream network eventsnetwork--duration, --filter, --method
Capture HARhar--duration 5s default
Get response bodyresponsebody <id>Use requestId from network/har
Intercept requestsintercept--pattern, --replace, --response
Disable interceptintercept --disable
Block URLsblock <pattern>...
Unblock URLsblock --disable
Throttle networkthrottle <preset>3g, slow3g, etc.
Disable throttlethrottle --disable

Device emulation

TaskCommandNotes
Emulate deviceemulate <device>e.g. iPhone-12, Pixel-5
Set user agentuseragent <string>
Set geolocationgeolocation <lat> <lon>
Set offline modeoffline <true\|false>
Emulate CSS mediamedia--color-scheme, --reduced-motion, --forced-colors
Set viewportviewport <w> <h>
Set permissionpermission <name> <state>granted, denied, prompt

Monitoring

TaskCommandNotes
Stream consoleconsole--duration, --filter <type>
Stream JS errorserrors--duration

Analysis

TaskCommandNotes
Performance metricsmetricsJS heap, DOM nodes, layout count
Accessibility treea11y
JS code coveragecoverage
CSS rule coveragecsscoverage
List stylesheetsstylesheets
DOM snapshotdomsnapshot

Profiling

TaskCommandNotes
Heap snapshotheapsnapshot --output <f>V8 heap; open in DevTools Memory
Performance tracetrace --output <f>--duration 1s default; open in DevTools Performance

JavaScript

TaskCommandNotes
Eval expressioneval <expr>Returns typed value
Eval in frameevalframe <frameId> <expr>Use frames to get IDs
Run JS filerun <file.js>Reads file, evaluates contents

Assert

TaskCommandNotes
Assert element textassert text <sel> <expected>Exits 1 on mismatch
Assert page titleassert title <expected>
Assert URL containsassert url <substring>
Assert element existsassert exists <sel>
Assert element visibleassert visible <sel>
Assert element countassert count <sel> <n>

Utility

TaskCommandNotes
Retry a commandretry <cmd> [args]--attempts, --interval
Read commands from stdinpipePipe-compatible format
Interactive REPLshell.quit, .target, .output
Record interactionsrecord--output, --duration
Configure profiles & Chromesetup [subcommand]launch, stop, status, list, add, edit, remove, default, show
Show helphelp [cmd]

Advanced

TaskCommandNotes
Raw protocol commandraw <method> [json]--browser for browser-level
Handle dialogdialog <accept\|dismiss>--text for prompt input
Highlight elementhighlight <sel>--hide to remove
Browser versionversion

Common patterns

Navigate and interact:

hubcap goto --wait https://example.com && hubcap click '#login'

Fill a form:

hubcap fill '#email' 'user@test.com' && hubcap fill '#password' 'secret' && hubcap click '#submit'

Wait then read:

hubcap wait '.results' && hubcap text '.results'

Screenshot after load:

hubcap goto --wait https://example.com && hubcap screenshot --output page.png

Monitor network during action:

hubcap network --duration 5s &
hubcap click '#fetch-btn'
wait

Conditional check:

hubcap exists '.error' && hubcap text '.error'

Extract structured data:

hubcap tables | jq '.tables[0].rows'

Mobile emulation flow:

hubcap emulate iPhone-12 && hubcap goto --wait https://example.com && hubcap screenshot --output mobile.png