Commands¶
Global flags¶
These flags go before the subcommand (e.g. wavexis --headed screenshot <url>).
| Flag | Description |
|---|---|
--backend cdp\|bidi |
Preferred backend |
--verbose, -v |
Show backend logs and timing info |
--quiet, -q |
Suppress all output except errors |
--headed |
Run browser in headed mode (visible window) |
--timeout <ms> |
Navigation timeout in milliseconds (default: 30000) |
--proxy <url> |
Proxy server URL (e.g. http://proxy:8080, socks5://proxy:1080) |
--stealth |
Enable anti-bot stealth mode (hides navigator.webdriver, fakes plugins, etc.) |
--browser-url <url> |
Connect to existing browser (e.g. ws://localhost:9222) |
--user-data-dir <path> |
Browser user data directory for persistent sessions |
--version |
Print wavexis version and exit |
Global flags can also be set persistently via wavexis config:
wavexis config set --key backend --value cdp
wavexis config set --key headless --value false
wavexis config set --key timeout --value 60000
wavexis config set --key proxy --value http://proxy:8080
CLI flags override config file values.
screenshot¶
Take a screenshot of a web page.
| Option | Description |
|---|---|
-o, --output |
Output file path |
--full-page |
Capture full page, not just viewport |
--selector |
CSS selector to capture |
--device |
Device preset name |
--format |
Image format (png or jpeg) |
--js |
JavaScript to execute before screenshot |
--wait-for |
CSS selector to wait for |
pdf¶
Generate a PDF of a web page.
| Option | Description |
|---|---|
-o, --output |
Output file path |
--paper |
Paper size (a4, letter, legal, a3, a5) |
--landscape |
Use landscape orientation |
--margins |
Margin size (e.g. 0.4in) |
--media |
CSS media type (print or screen) |
--no-header-footer |
Omit header and footer |
eval¶
Evaluate a JavaScript expression on a web page. Supports --assert for CI gates and --format for output control.
| Option | Description |
|---|---|
-e, --expression |
JavaScript expression to evaluate |
-o, --output |
Output file path (JSON) |
--await-promise |
Await a returned Promise |
--file |
Read expression from file |
--assert |
Assertion: == value, != value, contains text, matches regex |
--format |
Output format: json, csv, yaml |
When --assert is provided, the command exits with code 0 (pass) or 1 (fail). See CI Assertions for details.
navigate¶
Navigate to a URL and optionally wait for an element.
back / forward / reload / stop¶
Browser history navigation commands.
tabs¶
Manage browser tabs.
Actions: list, new, close, activate
console¶
Capture console messages and browser logs from a web page. Supports level filtering, output format selection, and capture mode.
| Option | Description |
|---|---|
--level |
Filter by level: all, error, warning, info, log, debug |
--capture |
What to capture: console, logs, both (default: console) |
--format |
Output format: json, csv, yaml |
-o, --output |
Output file path |
The --capture option controls what data is collected:
- console — JavaScript
console.*messages (console.log, console.error, etc.) - logs — Browser-level log entries (network errors, CSP violations, etc.)
- both — Both console messages and browser logs, returned as a combined object
logs¶
Capture browser log entries.
dom¶
DOM operations on a web page.
Actions: get, query, attr, remove_attr, remove, focus, scroll
scrape¶
Scrape multiple URLs by evaluating a JS expression on each.
crawl¶
Crawl a website starting from a URL, collecting titles and links.
| Option | Description |
|---|---|
-d, --depth |
Maximum crawl depth (0 = start page only, default: 2) |
--max-pages |
Maximum number of pages to visit (default: 50) |
--same-origin/--cross-origin |
Only crawl same-origin links (default: same) |
--pattern |
Regex pattern to filter URLs (empty = all) |
-o, --output |
Output file path (.json) |
-f, --format |
Output format (json) |
wavexis crawl https://example.com
wavexis crawl https://example.com --depth 3 --max-pages 100
wavexis crawl https://example.com --pattern '.*blog.*' -o results.json
har¶
Capture network traffic as HAR 1.2.
cookies¶
Manage browser cookies.
Actions: get, set, delete, clear
input¶
Input interaction subcommands (click, type, fill, select, hover, key, drag, tap, scroll, upload).
| Subcommand | Description |
|---|---|
click |
Click an element |
type |
Type text into an element |
fill |
Fill an input with a value |
select |
Select an option in a <select> |
hover |
Hover over an element |
key |
Press a keyboard key |
drag |
Drag an element to a target |
tap |
Tap an element (touch emulation) |
scroll |
Scroll to element or by offset |
upload |
Upload files to a file input |
wavexis input click https://example.com "#button"
wavexis input type https://example.com "#input" "hello"
wavexis input scroll https://example.com --selector "#footer"
wavexis input scroll https://example.com --x 0 --y 500
wavexis input upload https://example.com "#file-input" /path/to/file.pdf
session¶
Save and load browser session state (cookies + localStorage + sessionStorage).
wavexis session save https://app.com -o mysession.json
wavexis session load mysession.json https://app.com/dashboard
extract¶
Extract structured data from a page using a CSS selector schema.
| Option | Description |
|---|---|
-s, --schema |
JSON mapping field names to CSS selectors |
--selector |
CSS selector to scope extraction (repeats per match) |
-o, --output |
Output file path (.json) |
wavexis extract https://shop.com -s '{"title":"h1","price":".price"}'
wavexis extract https://shop.com/products \
-s '{"name":".name","price":".price"}' --selector ".product"
form¶
Auto-fill form fields from JSON data and optionally submit.
| Option | Description |
|---|---|
-d, --data |
JSON mapping CSS selectors to values |
--submit |
CSS selector for submit button |
-o, --output |
Output file path (.json) |
wavexis form https://app.com/register -d '{"#name":"Mathias","#email":"test@test.com"}'
wavexis form https://app.com/register -d '{"#name":"Mathias"}' --submit "#submit-btn"
ws¶
Intercept WebSocket frames on a page. Capture sent/received or mock responses.
| Option | Description |
|---|---|
--duration |
Capture duration in ms (default: 5000) |
--pattern |
Regex pattern to filter WS URLs |
--mock |
JSON mapping request payloads to mock responses |
-o, --output |
Output file path (.json) |
wavexis ws https://app.com --duration 10000
wavexis ws https://app.com --pattern '.*api.*' -o frames.json
wavexis ws https://app.com --mock '{"ping":"pong"}' --duration 5000
lighthouse¶
Run a Lighthouse-style audit (performance, accessibility, SEO, best practices).
| Option | Description |
|---|---|
-c, --category |
Audit category (repeatable): performance, accessibility, seo, best-practices |
-o, --output |
Output file path (.json) |
wavexis lighthouse https://example.com
wavexis lighthouse https://example.com -c performance -c seo -o report.json
headers¶
Set extra HTTP headers for all requests.
user-agent¶
Override the browser's User-Agent string.
browser¶
Browser management commands.
Actions: version, new_context, list_contexts
devices¶
List available device presets.
multi¶
Execute multiple actions from a YAML config file. See Multi Config for detailed documentation.
| Option | Description |
|---|---|
--watch |
Re-run on config file changes |
--dry-run |
Validate and show plan without launching browser |
--parallel |
Execute all actions concurrently instead of sequentially |
--cache-ttl <seconds> |
Cache action results for N seconds (cacheable: screenshot, dom, scrape, eval, cookies, headers) |
backends¶
List available backends.
install_check¶
Check which backends are installed and their versions.
emulation¶
Emulation subcommands.
wavexis emulation device <url> --device <name> [-o output]
wavexis emulation viewport <url> --width <w> --height <h> [-o output]
wavexis emulation geolocation <url> --lat <lat> --lon <lon> [-o output]
wavexis emulation timezone <url> --tz <timezone> [-o output]
wavexis emulation dark_mode <url> [-o output]
raw¶
Send raw protocol commands directly to the browser backend.
See Raw Protocol for details.
completions¶
Install shell completions.
Shells: bash, zsh, fish, powershell
auth¶
Manage browser credential profiles for authenticated scraping.
wavexis auth save <name> --user <username> --pass <password>
wavexis auth use <name> --url <login-url>
wavexis auth list
wavexis auth delete <name>
record¶
Record and replay browser sessions.
wavexis record start <url> [-o session.json]
wavexis record replay <session.json>
wavexis record list
serve¶
Start an HTTP API server.
| Option | Description |
|---|---|
--host |
Host to bind to (default: localhost) |
--port, -p |
Port to listen on (default: 8080) |
--backend |
Preferred backend (cdp or bidi) |
--rate-limit |
Max requests per minute (0 = no limit) |
See Serve Mode for endpoint documentation.
cwv¶
Measure Core Web Vitals (LCP, CLS, INP) with actionable scoring and CI budgets.
| Option | Description |
|---|---|
-o, --output |
Output file path (- for stdout) |
--observe-ms |
Observation period in ms (default: 5000) |
--budget |
JSON budget thresholds, e.g. {"lcp_ms":2500,"cls":0.1,"inp_ms":200} |
# Basic measurement
wavexis cwv https://example.com
# With CI budgets
wavexis cwv https://example.com --budget '{"lcp_ms":2500,"cls":0.1,"inp_ms":200}' -o report.json
modify¶
Intercept and modify network requests in-flight via the Fetch domain.
| Option | Description |
|---|---|
-p, --pattern |
URL pattern to match (wildcard) |
--header |
Header to add/override (format: Key: Value) |
--body |
Replacement body (JSON string) |
--status |
Replacement status code |
--method |
HTTP method to match |
--wait |
Seconds to keep browser open for interception |
modify-response¶
Intercept and modify network responses in-flight.
| Option | Description |
|---|---|
-p, --pattern |
URL pattern to match (wildcard) |
-b, --body |
Replacement body (JSON string) |
-s, --status |
Replacement status code |
--header |
Header to add/override (format: Key: Value) |
--wait |
Seconds to keep browser open for interception |
inspect¶
Inspect request/response bodies for a specific request ID.
har-replay¶
Replay a recorded HAR file against a URL.
trace¶
Unified tracing (screenshots + network + DOM + console).
axe¶
Run an accessibility audit using axe-core.
| Option | Description |
|---|---|
-o, --output |
Output file path (.json) |
--category |
Audit category (repeatable) |
events¶
Subscribe to and unsubscribe from browser events.
nl¶
Natural language selector — interact with elements using plain English.
wavexis nl click "the login button" <url>
wavexis nl fill "the email field" "admin@example.com" <url>
wavexis nl find "the main heading" <url>
shadow¶
Shadow DOM interaction commands.
wavexis shadow click <url> --selector "#host" --inner "button"
wavexis shadow fill <url> --selector "#host" --inner "input" --text "hello"
wavexis shadow eval <url> --selector "#host" --expression "element.textContent"
batch¶
Process multiple URLs from a file with a single action.
Actions: screenshot, pdf, scrape, eval
wavexis batch urls.txt screenshot -o ./screenshots/
wavexis batch urls.txt scrape --expression "document.title"
crawl¶
Crawl a website starting from a URL, collecting titles and links.
| Option | Description |
|---|---|
-d, --depth |
Maximum crawl depth (0 = start page only, default: 2) |
--max-pages |
Maximum number of pages to visit (default: 50) |
--same-origin/--cross-origin |
Only crawl same-origin links (default: same) |
--pattern |
Regex pattern to filter URLs (empty = all) |
-o, --output |
Output file path (.json) |
plugins¶
List discovered plugins (actions, backends, middleware).
css¶
CSS inspection commands.
wavexis css-styles <url> --selector "h1"
wavexis css-computed <url> --selector "h1"
wavexis css-rules <url> --sheet 0
debug¶
Debugger commands (CDP bridge).
wavexis debug-break <url> --line 10 [--condition "x > 5"]
wavexis debug-step over|into|out
wavexis debug-pause
wavexis debug-resume
perf¶
Capture performance metrics from a web page. See Performance for detailed documentation.
| Option | Description |
|---|---|
-m, --metric |
Metric type: metrics, trace, profile, heap-snapshot, coverage, css-coverage |
-f, --format |
Output format: json, yaml |
-o, --output |
Output file path |
-d, --duration |
Duration in ms (for trace and profile) |
# Core Web Vitals (LCP, FCP, CLS, TTFB)
wavexis perf https://example.com
# CPU trace (5 seconds)
wavexis perf https://example.com -m trace -d 5000 -o trace.json
# JS code coverage
wavexis perf https://example.com -m coverage -o coverage.json
# CSS coverage
wavexis perf https://example.com -m css-coverage -o css-coverage.json
# Heap snapshot
wavexis perf https://example.com -m heap-snapshot -o heap.json
sw¶
Service worker management.
wavexis sw list <url>
wavexis sw unregister <url> --scope <scope>
wavexis sw update <url> --scope <scope>
animation¶
Animation control commands.
wavexis animation list <url>
wavexis animation pause <url> --id 0
wavexis animation play <url> --id 0
wavexis animation seek <url> --id 0 --time 500
webauthn¶
WebAuthn virtual authenticator commands.
wavexis webauthn add --protocol ctap2 --transport usb
wavexis webauthn credentials <authenticator-id>
wavexis webauthn remove <authenticator-id>
cast¶
Cast commands.
bluetooth¶
Bluetooth emulation commands.
extension-install¶
Install a browser extension from a .crx file or unpacked directory. See Extensions & Preferences for details.
Returns the extension ID (32-character hex string).
extension-uninstall¶
Uninstall a browser extension by ID.
extension-list¶
List installed browser extensions.
pref-get¶
Get a browser preference value by key.
Example:
pref-set¶
Set a browser preference value.
Example:
repl¶
Interactive REPL for live browser sessions. See REPL for detailed documentation.
Launches a non-headless browser and an interactive shell with 16 commands: navigate, screenshot, eval, click, type, fill, hover, key, cookies, url, title, wait, back, forward, reload, help, exit.
init¶
Generate a wavexis.yaml config from templates. See Init Wizard for detailed documentation.
# Interactive wizard
wavexis init
# Non-interactive with flags
wavexis init -t multi-step -u https://example.com -o config.yaml
# List available templates
wavexis init --list
| Option | Description |
|---|---|
-t, --template |
Template name |
-u, --url |
URL to use in config |
-e, --expression |
JavaScript expression (scrape, eval) |
-s, --selector |
CSS selector (multi-step) |
--text |
Text to type (multi-step) |
-o, --output |
Output file path (default: wavexis.yaml) |
--list |
List available templates and exit |
Templates: screenshot, pdf, scrape, eval, multi-step, cookies, har.
config¶
Manage global wavexis configuration at ~/.wavexis/config.yml.
| Action | Description |
|---|---|
show |
Print current config file contents |
set |
Set a key-value pair in the config |
init |
Create a default config file |
path |
Print the config file path |
| Option | Description |
|---|---|
--key |
Config key (backend, headless, timeout, proxy) |
--value |
Value to set |
# Show current config
wavexis config show
# Set defaults
wavexis config set --key backend --value cdp
wavexis config set --key headless --value false
wavexis config set --key timeout --value 60000
wavexis config set --key proxy --value http://proxy:8080
# Create initial config
wavexis config init
# Show config file path
wavexis config path