VLearnVibium

How to Pin the Chrome Version in Vibium

Pin the Chrome version in Vibium by pinning the Vibium release and caching Chrome for Testing, so every machine and CI run uses the exact same browser build.

By Pramod Dutta··4 min read·Verified with Vibium 26.2
▶ Animated overview · made with Remotion

To pin the Chrome version in Vibium, pin the Vibium release — pip install vibium==26.2 or npm install vibium@26.2 — because each Vibium version downloads a known-good Chrome for Testing matched to that release. Vibium ships a single Go binary that fetches and manages the browser itself, so there is no separate ChromeDriver to align: the Vibium version effectively selects the Chrome build. That design is why pinning is simple. Lock Vibium to an exact version in requirements.txt or package.json, cache the downloaded Chrome for Testing, and every developer machine and CI run uses the identical browser. This eliminates the "works on my machine, fails in CI" problem that comes from one box auto-updating to a newer Chrome. If you need a different browser build, change the Vibium version you pin rather than hunting for a separate Chrome download. The result is a reproducible setup where the browser is as version-controlled as your code.

How does Vibium choose a Chrome version?

Vibium does not use whatever Chrome you have installed — as of the 26.2 release it requires Chrome for Testing and downloads its own known-good build. On the first launch() (or when you run vibium install), the Go binary fetches the Chrome for Testing build that release was validated against and caches it locally. Because the binary, not your system, picks the browser, the Vibium version is the single lever that controls which Chrome you get. There is no driver-to-browser matching step, which is precisely the breakage Vibium was built to avoid compared with classic Selenium setups.

How do I pin the version for Python?

Specify an exact Vibium version with == so pip can never resolve to a newer release that ships a different Chrome. Pin it in requirements.txt:

# requirements.txt
vibium==26.2

Then install and pre-fetch the matching browser:

pip install -r requirements.txt
vibium install        # downloads the Chrome for Testing for 26.2

Using == rather than >= is what makes this deterministic. A >= constraint would let a rebuild pull a newer Vibium — and a newer Chrome — without you changing anything.

How do I pin the version for Node?

In Node, pin the exact version in package.json and commit the lockfile so installs are reproducible:

{
  "dependencies": {
    "vibium": "26.2"
  }
}
npm install
npx vibium install    # fetch the matching Chrome for Testing

Committing package-lock.json locks the resolved version for every install, so your team and CI all download the same Vibium and therefore the same Chrome.

How do I verify which version is in use?

Confirm both the Vibium version and that Chrome has been fetched before relying on a pin. Check the CLI version:

vibium version

This reports the installed Vibium release — the value you pinned. Since that release maps to a specific Chrome for Testing build, a matching vibium version across machines means a matching browser. In your scripts, behavior is identical regardless of version because the API is stable, so you only need to confirm the version, not change any find or screenshot calls.

How do I stop CI from changing Chrome between runs?

Pinning the version is half the job; caching the download is the other half. Without a cache, CI re-fetches Chrome for Testing every run, and you want that fetch to land on the same build each time. Pin Vibium exactly, then cache the browser keyed on the version. In GitHub Actions:

      - name: Cache Chrome for Testing
        uses: actions/cache@v4
        with:
          path: ~/.cache/vibium
          key: vibium-chrome-26.2-${{ runner.os }}

With the version pinned in requirements.txt and the cache keyed on that version, a rerun restores the exact cached Chrome and vibium install finishes instantly. For the full workflow, see how to use Vibium in GitHub Actions.

How do I freeze Chrome inside a Docker image?

In a container, bake the pinned Vibium and its Chrome into the image so the browser is frozen at build time. Pin the version and run vibium install in the Dockerfile:

RUN pip install --no-cache-dir vibium==26.2 && vibium install

Because the install and the Chrome download happen in an image layer, every container started from that image runs the identical browser — no runtime download, no drift. See how to run Vibium in Docker for the complete image.

When should I change the pinned version?

Treat a Chrome bump as a deliberate, reviewed change rather than something that happens silently. Bump the pinned Vibium version when you want a newer Chrome for a feature or a security fix, then run your suite against it before merging. Vibium uses calendar versioning, so a version like 26.2 reads as February 2026 — handy for knowing how current a pin is. To understand the single-binary model that ties the browser to the release, read what is Vibium? and how Vibium works.

Next steps

Frequently asked questions

How do I pin the Chrome version in Vibium?

Pin the Vibium release with pip install vibium==26.2 (or npm install vibium@26.2). Each Vibium version targets a known-good Chrome for Testing, so pinning Vibium pins the browser. Cache the downloaded Chrome and reuse it across runs to keep the build identical everywhere.

Why is the Chrome version tied to the Vibium version?

Vibium ships a single Go binary that downloads a known-good Chrome for Testing matched to that release. There is no separate driver to align, so the Vibium version effectively selects the browser build. Pinning Vibium with an exact version makes the Chrome it fetches deterministic.

How do I keep CI from upgrading Chrome unexpectedly?

Pin Vibium to an exact version in requirements.txt or package.json, then cache the Chrome for Testing download keyed on that version. With both in place, CI reuses the same cached browser on every run and a rebuild cannot silently pull a newer Chrome.

Vibium is created by Jason Huggins. This is an independent tutorial — see the official Vibium site and GitHub repo for canonical docs.

Related guides