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

microlinkhq / browserless / 29433523371 / 1
81%
master: 81%

Build:
DEFAULT BRANCH: master
Ran 15 Jul 2026 04:45PM UTC
Files 1
Run time 2s
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

15 Jul 2026 04:42PM UTC coverage: 99.324%. Remained the same
29433523371.1

push

github

web-flow
fix(pdf): navigation-tolerant readiness gate; skip screenshot poll for painted pages (#837)

* fix(pdf): navigation-tolerant readiness gate; skip screenshot poll for painted pages

prepare()'s `auto` mode gated readiness on a screenshot poll (waitUntilAuto):
screenshot -> isWhite? -> repeat. Two problems in the GPU-less fleet (llvmpipe):
the screenshots are software-rasterized (seconds each), and the poll throws
`Execution context was destroyed` / `Target closed` when a page client-navigates
under it (SPAs re-commit their own URL after load), failing the whole render.

Add `waitForReady` to @browserless/screenshot: a navigation-tolerant gate that
resolves once the page is visually quiet (document height stable, every image
decoded, readyState complete) held for `quietMs`, taking no screenshots. When
`page.evaluate` throws on a destroyed context it resets the quiet window and
keeps polling instead of failing.

prepare() now runs waitForReady first; real painted content (decoded images in a
document taller than the viewport) returns immediately, and only a page that
settles still-blank falls back to the original screenshot poll, preserving the
blank-SPA protection.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(pdf): gate fast path on settle; harden readiness gate; simplify poll

Address PR #837 review:

- Fast path in `waitUntilAuto` now requires `!ready.timedOut`. A gate that
  timed out never settled, so its partial snapshot can't be trusted to skip
  the blank-SPA screenshot poll (Cursor Bugbot).
- `waitForReady` fails fast on a non-number `timeout` instead of computing a
  NaN deadline and silently returning `timedOut: true` (CodeRabbit).

Cleanups from /simplify:

- Reuse `node:timers/promises` `setTimeout` instead of a hand-rolled `sleep`.
- Collapse the standalone white-screen check into the poll loop's first
  iteration — it screenshotted with identical options and no page change in
  between, wasting a software-ra... (continued)

37 of 38 branches covered (97.37%)

Branch coverage included in aggregate %.

110 of 110 relevant lines covered (100.0%)

6.52 hits per line

Source Files on job @browserless/errors - 29433523371.1
  • Tree
  • List 1
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 29433523371
  • b599f2ee on github
  • Prev Job for on master (#29321620806.1)
  • Next Job for on master (#29505076470.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc