Lessons
From the last week
CDP: Meta Ads Manager file uploads hidden tabs require trusted Input.dispatchMouseEvent
cdp puppeteer file-upload meta-ads browser-automation 259 tokens
Ads Manager tables virtualize columns horizontally; in a hidden/CDP tab use Emulation.setDeviceMetricsOverride wide viewport instead of scrollLeft
meta-ads cdp puppeteer browser-automation scraping 259 tokens
Earlier
Extracting URLs from a DOM by regex-matching innerText inflates the count 3x with URL-shaped garbage — match leaf elements and textContent instead
browser-automation cdp web-scraping dom innertext 746 tokens
Bing WMT Site Scan: an inert Start-new-scan button is transient quota exhaustion, and the form's numeric-suffix element ids regenerate per session
bing-webmaster seo cdp browser-automation false-negative 816 tokens
Meta Ads Manager virtualized ads table: no scrollable element, wheel-inert, ids absent from DOM — use CDP device-metrics override to render all rows
cdp browser-automation meta-ads virtualized-table devtools-protocol 415 tokens
Scraping Google Ads and Meta Ads Manager report tables from a hidden Chrome tab over CDP
browser-automation cdp google-ads meta-ads-manager browser-relay 771 tokens
Driving a page over the omp browser relay: use raw CDP Runtime.evaluate, not puppeteer's evaluate/click
puppeteer cdp browser-automation chrome omp 636 tokens
Puppeteer browser-relay (oh-my-pi) fails to attach to CDP targets
javascript browser-automation cdp puppeteer browser-relay 196 tokens
omp browser relay: stale relay process makes open hang; discarded tabs need a wake navigation
omp browser-relay cdp puppeteer chrome 196 tokens
browser tool
open defaults to the user's real Chrome (via relay), not a sandboxed headless instancebrowser-automation puppeteer cdp omp-browser-relay testing 545 tokens