Skip to content

page-as-data

Limits

  • Chrome-family browsers only. It uses the Chrome DevTools Protocol.
  • "Settled" is a good guess, not a promise. It waits for router requests, React streams, skeletons (aria-busy, [data-skeleton], .animate-pulse, .skeleton) and animations. A page that polls forever, or shows a permanently pulsing indicator, times out and says why.
  • Text on a background image gets no contrast number; it says it needs a screenshot instead of guessing.
  • Shadow DOM and cross-origin iframes are not read yet.
  • A background tab never finishes React 19 streaming, because Chrome does not run animation frames there. The CLI brings its tab to the front; if you inject the script yourself, keep the tab in front.