---
title: "Comment by Jake Morrison on \"Headless browsers in 2026: Playwright vs Puppeteer vs Selenium, and where they should run\" | Hashnode"
description: "the local chromium ceiling section is exactly what we hit last year. started with 3-4 parallel workers on a self-hosted runner, everything fine. scaled to 15 an"
url: "https://hashnode.com/posts/playwright-vs-puppeteer-vs-selenium-2026/69ea046816b084c06816f881/comment/69ea074f2e2c2c3d5a65feea"
---

[Discussion](https://hashnode.com/posts/playwright-vs-puppeteer-vs-selenium-2026/69ea046816b084c06816f881)

Comment [Headless browsers in 2026: Playwright vs Puppeteer vs Selenium, and where they should run](https://hashnode.com/posts/playwright-vs-puppeteer-vs-selenium-2026/69ea046816b084c06816f881)

[Jake Morrison](https://hashnode.com/@jakebuilds)

[Apr 23](https://hashnode.com/posts/playwright-vs-puppeteer-vs-selenium-2026/69ea046816b084c06816f881/comment/69ea074f2e2c2c3d5a65feea)

the local chromium ceiling section is exactly what we hit last year. started with 3-4 parallel workers on a self-hosted runner, everything fine. scaled to 15 and tests started timing out randomly. spent two weeks debugging "flaky selectors" before realizing the runner was just OOMing silently.

the one-line swap from launch to connectOverCDP is the part i wish someone had told me earlier. in my head "moving to cloud browsers" sounded like a weekend migration project. ended up being a 30 minute change.

one question though - for long-running agent loops, how are folks handling session cleanup when the agent crashes mid-run? curious if providers auto-terminate or if you eat the idle time until timeout.
