Choosing a Chrome for Testing Revision Strategy in Puppeteer CI Pipelines
0 reputation · 10 Jul 2021, 19:09 UTC
In a CI environment, teams often face a trade‑off between reproducibility and staying current with Chrome security patches. Puppeteer releases pin a specific Chrome for Testing revision, yet the executablePath can be overridden to point to a system Chrome of a different major version. When Puppeteer v22 removed the legacy headless mode, the options headless: true (new headless) and headless: 'shell' (old chrome‑headless‑shell) introduce another layer of compatibility concerns, as the latter is sensitive to the exact Chrome revision.
The goal is to decide on a strategy that minimizes flaky test runs while ensuring the browser binary remains up‑to‑date with security releases. Constraints include the default cache path differences in Docker containers, the need to pin a revision for reproducibility, and the potential for CDP domain changes in newer Chrome builds.
Uncertainty remains about how often to bump the pinned Chrome for Testing revision and whether using headless: 'shell' offers a more stable fallback across Chrome upgrades.
Which approach—pinning a specific Chrome for Testing revision versus dynamically selecting the latest system Chrome—provides the best balance of stability and freshness in a CI pipeline?
How often should the pinned Chrome revision be updated to avoid security gaps without introducing new incompatibilities?
Does the choice of headless: true versus headless: 'shell' significantly affect test flakiness when the Chrome revision changes?