• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

microlinkhq / browserless / 28190064617
84%

Build:
DEFAULT BRANCH: master
Ran 25 Jun 2026 06:00PM UTC
Jobs 0
Files 0
Run time –
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
28190064617

push

github

web-flow
feat(capture): screenshot backend that captures WebGL/canvas (#806)

* feat(capture): add screenshot backend that captures WebGL/canvas

Adds a third animated-capture backend (`opts.backend = 'screenshot'`) that polls
`Page.captureScreenshot` (via puppeteer `page.screenshot`) and feeds frames into
the existing ffmpeg/EBML constant-fps pipeline.

In the GPU-less headless production environment the live frame sinks used by the
screencast (`Page.startScreencast`) and extension (tab capture) backends do NOT
composite accelerated layers — WebGL/canvas/video render black — while
`Page.captureScreenshot` composites them correctly. This backend is therefore
the only one that captures WebGL/canvas/video; it also captures at device pixels
(retina) rather than the screencast's CSS-px.

Trade-off: a per-frame screenshot round-trip bounds the effective frame rate on
the CPU-bound fleet (the muxer holds the last frame to fill the fps grid) and
files are larger — best as an opt-in for animation-heavy pages, not a default.
Reuses ffmpeg.js + ebml.js + the screencast frame muxer; default behaviour
unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(capture): unify ffmpeg backends into shared recorder

Extract the common ffmpeg pipeline shared by the screencast and
screenshot backends into a new recorder module. Each backend now only
supplies its three genuine differences (sizing, source, label),
collapsing ~210 lines of duplicated logic.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(capture): expose each mode as its own entry point

Rename the `backend` option to `mode` and replace the runtime dispatch
map with per-mode entry points, so the capture implementation is selected
at `require` time:

  require('@browserless/capture')             // extension (default)
  require('@browserless/capture/screencast')  // CDP screencast + ffmpeg
  require('@browserless/capture/screenshot')  // polled screenshot + ffmpeg

Consumer... (continued)
Source Files on build 28190064617
Detailed source file information is not available for this build.
  • Back to Repo
  • Github Actions Build #28190064617
  • 8ee8983a on github
  • Prev Build on master (#28116432932)
  • Next Build on master (#28221333438)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc