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

microlinkhq / browserless
82%

Build:
DEFAULT BRANCH: master
Repo Added 08 Nov 2017 06:14PM UTC
Files 46
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

LAST BUILD ON BRANCH master
branch: master
CHANGE BRANCH
x
Reset
  • master
  • 2.2.0
  • 2.2.1
  • 2.2.2
  • 2.3.0
  • 2.3.1
  • 2.3.2
  • 2.3.3
  • 2.3.4
  • 2.4.0
  • Kikobeats/client-hints-6d0aee8b
  • Kikobeats/fix-device-emulation-6d0aee8b
  • Kikobeats/isolate-autoconsent-6d0aee8b
  • Kikobeats/isolate-ghostery-dom-scan-6d0aee8b
  • Kikobeats/isolate-overlay-dismiss-6d0aee8b
  • Kikobeats/isolate-screenshot-helpers-6d0aee8b
  • Kikobeats/isolate-shadow-dom-flatten-6d0aee8b
  • Kikobeats/isolate-text-evaluate-6d0aee8b
  • Kikobeats/stop-disabling-web-apis-6d0aee8b
  • adblock
  • add-types
  • authenticate
  • base
  • capture
  • ci
  • ci/ai-r2-model
  • ci/auto-release
  • ci/drop-npmrc-auth
  • ci/match-metascraper-npmrc
  • ci/release-token-just-in-time
  • codex/perf-goto-device-lookup-no-spread
  • codex/perf-goto-direct-wait-checks
  • codex/perf-goto-headers-fast-path
  • codex/perf-screenshot-sharp-whiteness
  • context
  • cookies
  • cursor/critical-bug-investigation-0a8b
  • cursor/critical-bug-investigation-1694
  • cursor/critical-bug-investigation-4da9
  • cursor/critical-bug-investigation-7e0c
  • cursor/critical-bug-investigation-9832
  • cursor/critical-bug-investigation-d24f
  • cursor/critical-bug-management-2dfa
  • cursor/critical-bug-management-50e1
  • cursor/critical-bug-management-7c60
  • dependabot/github_actions/actions/cache-6
  • dependabot/github_actions/actions/checkout-7
  • dependabot/github_actions/actions/setup-node-5
  • dependabot/github_actions/pnpm/action-setup-6
  • dependabot/npm_and_yarn/acorn-8.17.0
  • dependabot/npm_and_yarn/acorn-8.18.0
  • dependabot/npm_and_yarn/cliqz/adblocker-puppeteer-1.12.1
  • dependabot/npm_and_yarn/cliqz/adblocker-puppeteer-1.5.0
  • dependabot/npm_and_yarn/cliqz/adblocker-puppeteer-1.6.3
  • dependabot/npm_and_yarn/cliqz/adblocker-puppeteer-1.9.0
  • dependabot/npm_and_yarn/cloudflare/puppeteer-1.2.0
  • dependabot/npm_and_yarn/cloudflare/puppeteer-1.3.0
  • dependabot/npm_and_yarn/cloudflare/puppeteer-1.4.0
  • dependabot/npm_and_yarn/conventional-changelog-conventionalcommits-10.4.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.76.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.77.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.78.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.80.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.81.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.82.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.83.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.84.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.85.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.88.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.89.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.90.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.91.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.92.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.93.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.94.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.95.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-14.96.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-15.0.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-15.1.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.0.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.13.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.15.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.18.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.19.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.2.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.20.1
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.21.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.22.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.23.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.24.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.27.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.3.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.31.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.32.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.36.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.37.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.38.0
  • dependabot/npm_and_yarn/duckduckgo/autoconsent-16.39.0
  • dependabot/npm_and_yarn/ghostery/adblocker-puppeteer-2.15.0
  • dependabot/npm_and_yarn/ghostery/adblocker-puppeteer-2.17.0
  • dependabot/npm_and_yarn/ghostery/adblocker-puppeteer-2.18.0
  • dependabot/npm_and_yarn/got-10.2.1
  • dependabot/npm_and_yarn/got-10.2.2
  • dependabot/npm_and_yarn/got-10.5.2
  • dependabot/npm_and_yarn/got-10.6.0
  • dependabot/npm_and_yarn/is-url-http-2.0.0
  • dependabot/npm_and_yarn/is-url-http-2.1.1
  • dependabot/npm_and_yarn/isolated-function-0.2.0
  • dependabot/npm_and_yarn/lighthouse-13.2.0
  • dependabot/npm_and_yarn/lighthouse-13.3.0
  • dependabot/npm_and_yarn/lighthouse-13.4.0
  • dependabot/npm_and_yarn/serialize-error-9.1.1
  • dependabot/npm_and_yarn/sharp-0.24.0
  • dependabot/npm_and_yarn/sharp-0.25.1
  • dependabot/npm_and_yarn/ws-8.21.0
  • dependencies
  • docs
  • docs/readme-copy-edit
  • eprotocol
  • feat/actions-runner
  • feat/ai
  • feat/capture-record
  • feat/page-weight-timings
  • feat/pdf-element
  • fix/accept-insecure-certs
  • fix/adblock-lazy-retry
  • fix/ai-public-publish
  • fix/capture-default-encoder
  • fix/changelog-preset-pin
  • fix/combine-draft-prs-862-867
  • fix/function-merge-allow-opts
  • fix/function-runtime-deps
  • fix/ignore-automation-flags
  • fix/lighthouse-config-mutation
  • fix/lighthouse-context-leak
  • fix/node-paths-pnpm
  • fix/page-range-error-code
  • fix/pdf-covered-fast-path
  • fix/pdf-empty-shell
  • fix/pdf-readiness-gate
  • fix/pdf-scroll-lazy-content
  • fix/pdf-spa-ready
  • fix/publish-unpublished-versions
  • fix/puppeteer-25-connected-api
  • fix/readiness-budget
  • fix/release-dependency-cycles
  • fix/release-npmrc-user-home
  • fix/release-workspace-npm-auth
  • fix/report-mesa-version
  • fix/respawn-unhandled-rejection
  • fix/retry-execution-context-destroyed
  • fix/screencast-capture-frames
  • fix/screencast-require-onframe
  • fix/screencast-restart-on-navigate
  • fix/screenshot-html-escape
  • fix/screenshot-quality
  • fix/screenshot-retry-spin
  • fix/sync-device-chrome-ua
  • fix/target-closed-context-destroyed
  • fix/tree-walker-guard
  • fix/xss-theme-js
  • flags
  • function
  • functions
  • goto
  • greenkeeper/initial
  • greenkeeper/puppeteer-1.0.0
  • imgbot
  • lighthouse-cli
  • lossy
  • next
  • patch-1
  • pdf
  • perf-screencast-sync-ack
  • pool
  • prism
  • refactor/simplify-function-screenshot
  • remove-areyouheadless-test
  • revert/actions-runner
  • screenshot
  • shadow-dom
  • simplify-screencast-backpressure
  • tests
  • updae
  • v5.19.10
  • v5.19.11
  • v5.19.12
  • v5.19.13
  • v5.19.14
  • v5.19.8
  • v5.19.9
  • v5.20.0
  • v5.20.1
  • v5.20.2
  • v5.20.3
  • v5.21.0
  • v5.22.0
  • v5.22.1
  • v6.0.0
  • v6.1.0
  • v6.10.0
  • v6.10.1
  • v6.10.2
  • v6.11.1
  • v6.11.2
  • v6.11.3
  • v6.11.4
  • v6.11.5
  • v6.11.6
  • v6.11.7
  • v6.12.1
  • v6.2.0
  • v6.3.0
  • v6.4.0
  • v6.4.1
  • v6.4.2
  • v6.4.3
  • v6.4.4
  • v6.5.0
  • v6.6.0
  • v6.6.1
  • v6.6.2
  • v6.6.3
  • v6.6.4
  • v6.6.5
  • v6.6.6
  • v6.7.0
  • v6.7.1
  • v6.7.2
  • v6.7.3
  • v6.7.4
  • v6.7.5
  • v6.8.0
  • v6.8.1
  • v6.9.0
  • v6.9.1
  • v6.9.3
  • wait-until-auto
  • webgl

12 Sep 2026 02:53PM UTC coverage: 81.762% (-0.07%) from 81.832%
34700594853

push

github

web-flow
fix(goto): run overlay dismissal in an isolated world (#925)

* fix(goto): run overlay dismissal in an isolated world

dismissOverlays ran in the page main world, so the page could read
window.__browserlessDismiss and observe every querySelectorAll the scan
performed through its own DOM hooks.

setup now registers the script with Page.addScriptToEvaluateOnNewDocument
in a named isolated world, and run reaches that same world through
Page.createIsolatedWorld, which returns the existing context, so the
idempotency guard stays shared and dialogs are never clicked twice.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0116zka7w2WKPSi3kqHyVAET

* fix(goto): resolve the dismiss world again after a navigation

A navigation between Page.createIsolatedWorld and Runtime.evaluate
destroyed the world run() had just resolved, so it rejected with
"Cannot find context with specified id" and the post-navigation
fallback was skipped for that document. run() now retries up to three
times on stale-context errors, resolving the world on the new document.

Tests now also cover goto with autoconsent enabled, for a consent
dialog present at load and for a CMP inserted after navigation. The
re-scan test asserts the click count returned by run() itself, so it
fails if rescan stops working.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0116zka7w2WKPSi3kqHyVAET

* perf(goto): create the dismiss world only in the top frame

Page.addScriptToEvaluateOnNewDocument with a worldName has no frame
filter, so Chrome created a browserless_dismiss world in every frame of
every document even though child frames return right away. With site
isolation disabled every iframe shares the page session: a page with 50
same-origin iframes held 51 dismiss worlds and 32.3 MB of JS heap
against 24.0 MB on master.

setup now listens to Page.domContentEventFired, which ... (continued)

1147 of 1361 branches covered (84.28%)

Branch coverage included in aggregate %.

67 of 109 new or added lines in 1 file covered. (61.47%)

5201 of 6403 relevant lines covered (81.23%)

78647.5 hits per line

Relevant lines Covered
Build:
Build:
6403 RELEVANT LINES 5201 COVERED LINES
78647.5 HITS PER LINE
Source Files on master
  • Tree
  • List 46
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
34700594853 master fix(goto): run overlay dismissal in an isolated world (#925) * fix(goto): run overlay dismissal in an isolated world dismissOverlays ran in the page main world, so the page could read window.__browserlessDismiss and observe every querySelectorAl... push 12 Sep 2026 02:54PM UTC web-flow github
81.76
34700068245 master fix(goto): run autoconsent in an isolated world (#926) * fix(goto): run autoconsent in an isolated world autoconsent lived in the page's main world: exposeFunction left puppeteer_autoconsentSendMessage, autoconsentSendMessage and autoconsentRece... push 12 Sep 2026 02:43PM UTC web-flow github
81.83
34699172722 master fix(goto): send UA Client Hints consistent with the user agent (#929) * fix(goto): send UA Client Hints consistent with the user agent page.setUserAgent(string) clears UA-CH, so Chrome user agents sent no sec-ch-ua headers and navigator.userAgen... push 12 Sep 2026 02:26PM UTC web-flow github
81.05
34698893803 master fix(goto): emulate a screen consistent with the device viewport (#923) * fix(goto): emulate screen and client hints consistent with the device Desktop viewports rendered inside the 800x600 headless screen, so device-width media queries matched t... push 12 Sep 2026 02:19PM UTC web-flow github
80.76
34616565764 master build(deps): bump @duckduckgo/autoconsent from 16.38.0 to 16.39.0 (#928) Bumps [@duckduckgo/autoconsent](https://github.com/duckduckgo/autoconsent) from 16.38.0 to 16.39.0. - [Release notes](https://github.com/duckduckgo/autoconsent/releases) - [... push 11 Sep 2026 03:32PM UTC web-flow github
80.2
34595180841 master fix(goto): run Ghostery DOM scans in an isolated world (#927) * fix(goto): run Ghostery DOM scans in an isolated world Ghostery's Puppeteer adapter calls frame.evaluate for its cosmetic feature extraction and blocked-iframe scan, which runs in t... push 11 Sep 2026 11:42AM UTC web-flow github
80.2
34570463297 master chore(function): update dependencies push 11 Sep 2026 06:36AM UTC Kikobeats github
79.74
34570069828 master fix(browserless): read text() in an isolated world (#920) page.evaluate ran in the main world, so a page hooking the innerText getter saw a pptr:evaluate stack frame. The isolated realm shares the DOM but is unreachable from page scripts, at the ... push 11 Sep 2026 06:29AM UTC web-flow github
79.75
34506859033 master chore: update dependencies push 10 Sep 2026 05:14PM UTC Kikobeats github
79.74
34483583963 master fix(devices): sync Chrome UA with Puppeteer (#918) * fix(devices): sync Chrome UA with Puppeteer Frozen Chrome 62 strings mismatch the launched Chromium and are a trivial fingerprint. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(goto)... push 10 Sep 2026 01:36PM UTC web-flow github
79.74
See All Builds (1321)
  • Repo on GitHub
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