# veb Headless browser automation CLI for agents and humans. Full Playwright parity. ## Installation ```bash pnpm install npx playwright install chromium pnpm build ``` ## Usage ```bash # Navigation veb open https://example.com veb back # Go back veb forward # Go forward veb reload # Reload page # Page info veb url # Get current URL veb title # Get page title # Clicking veb click "#submit-btn" veb dblclick "#item" veb tap "#mobile-btn" # Touch tap # Form input veb type "#search" "query" # Type character by character veb fill "#email" "test@example.com" # Clear and fill (faster) veb check "#agree" # Check checkbox/radio veb uncheck "#newsletter" # Uncheck checkbox veb select "#country" "US" # Select dropdown veb clear-input "#field" # Clear input field veb setvalue "#hidden" "val" # Set value directly # Keyboard veb press Enter veb press Tab veb press "Control+a" # Keyboard shortcuts veb press "Shift+Tab" # Mouse veb hover "#menu" veb focus "#input" veb drag "#source" "#target" veb wheel 300 # Scroll wheel (deltaY) veb wheel 0 100 # Scroll wheel (deltaX, deltaY) veb mousemove 100 200 # Move mouse to coordinates veb mousedown # Press mouse button veb mouseup # Release mouse button veb mousedown right # Right-click down # Text operations veb selectall "#input" # Select all text veb clipboard copy # Copy to clipboard veb clipboard paste # Paste from clipboard veb clipboard read # Read clipboard content # File upload veb upload "#file-input" ./document.pdf veb upload "#files" ./a.png ./b.png # Downloads veb download "#download-btn" ./file.zip # Waiting veb wait "#loading" # Wait for selector veb wait --text "Welcome" # Wait for text veb wait 2000 # Wait 2 seconds veb waitforurl "**/dashboard" # Wait for URL pattern veb waitforload networkidle # Wait for network idle veb waitforload domcontentloaded # Wait for DOM ready # Screenshots & PDF veb screenshot page.png veb screenshot --full page.png # Full page veb screenshot -s "#hero" # Specific element veb pdf report.pdf # Content extraction veb snapshot # Accessibility tree (best for agents) veb extract "#main" # Get HTML veb eval "document.title" # Run JavaScript veb innertext "#message" # Get inner text veb innerhtml "#container" # Get inner HTML veb inputvalue "#field" # Get input value # Element info veb gettext "#message" # Get text content veb getattr "#link" "href" # Get attribute veb isvisible "#modal" # Check visibility veb isenabled "#submit" # Check if enabled veb ischecked "#checkbox" # Check if checked veb count ".items" # Count matching elements veb boundingbox "#element" # Get position/size veb highlight "#element" # Highlight element (debugging) # Scrolling veb scroll down 500 veb scroll up veb scroll -s "#container" down # Semantic locators (Playwright's recommended approach) veb role button click --name "Submit" veb role textbox fill "hello" --name "Email" veb text "Sign In" click veb text "Submit" click --exact veb label "Email" fill "test@test.com" veb placeholder "Search..." fill "query" veb alt "Logo" click # By alt text veb bytitle "Close" click # By title attribute veb testid "submit-btn" click # By data-testid # Nth element (when multiple match) veb first "a" click # Click first link veb last "a" click # Click last link veb nth "a" 2 click # Click 3rd link (0-indexed) veb first ".item" text # Get text of first item # Frames/iframes veb frame "#iframe" # Switch to iframe veb mainframe # Switch back to main # Network interception veb route "**/*.png" --abort # Block images veb route "**/api/*" --body '{"mock":true}' # Mock API veb unroute # Remove all routes veb requests # View tracked requests veb requests --filter "api" # Filter requests # Browser settings veb viewport 1920 1080 # Set viewport size veb device "iPhone 14" # Emulate device veb geolocation 37.7749 -122.4194 # Set location (SF) veb permissions grant geolocation notifications veb media --dark # Dark mode veb media --light # Light mode veb media --print # Print media type veb media --reduced-motion # Reduced motion veb offline # Enable offline mode veb offline off # Disable offline mode veb headers '{"X-Custom":"value"}' # Set extra headers veb credentials user pass # HTTP basic auth veb timezone America/New_York # Set timezone (at launch) veb locale fr-FR # Set locale (at launch) # Cookies veb cookies # Get all cookies veb cookies set '[{"name":"session","value":"abc123","domain":".example.com"}]' veb cookies clear # Storage veb storage local # Get all localStorage veb storage local myKey # Get specific key veb storage local set key value # Set value veb storage local clear # Clear localStorage veb storage session # sessionStorage (same commands) # Dialogs (alerts, confirms, prompts) veb dialog accept # Accept next dialog veb dialog accept "input text" # Accept prompt with text veb dialog dismiss # Dismiss next dialog # Debugging & Tracing veb trace start # Start recording trace veb trace start --screenshots # With screenshots veb trace stop ./trace.zip # Stop and save trace veb state save ./auth.json # Save cookies/storage veb state load ./auth.json # Load saved state veb console # View console messages veb console --clear # Clear console veb errors # View page errors veb errors --clear # Clear errors veb pause # Pause (opens inspector) # Inject scripts/styles veb addscript "console.log('hi')" veb addscript https://example.com/lib.js veb addstyle "body { background: red; }" veb addstyle https://example.com/styles.css veb setcontent '