Skip to main content

Browser Engines

Webrain drives four engines through one CDP backend. Picking the right one is the difference between a 12-second page load and a 2-second one — or between a working click and a silent no-op.
Golden rule: don’t guess the browser. webrain_navigate returns a challenge field — read it, then pick the browser for the next hop.

Getting each engine

To route a specific batch to real Chrome (e.g. for interactive SPAs), pass the CDP endpoint directly:

lightpanda vs obscura for batches

  • obscura opens N parallel tabs — concurrency is real overlap.
  • lightpanda serve holds ONE browser context; a 2nd Target.createTarget errors TargetAlreadyLoaded, so webrain_batch detects it and runs all URLs sequentially on one reused tab. Same tool call, same schema — just no intra-call parallelism. Pick obscura for large parallel crawls, lightpanda for footprint/velocity per page.

a11y notes

Google/Material widgets are often not button: dropdowns are combobox, menu items option, segmented controls radio/tab. If role=<x> returns [], drop the role filter and filter on the visible label text instead (filter matches name, value, or css_path, case-insensitive). If the whole tree is empty, the page never rendered — check challenge/consent.