In this article, I cover my experiences getting the latest Chromium browser installed in Ubuntu for docker-seleniarm. For those not aware, docker-seleniarm is a fork I maintain of the docker-selenium project. The docker-seleniarm project brings ARM support for those developers and testers who are using ARM based computers or servers, such as the Apple Silicon M1/M2, Raspberry Pi and other ARM boards, as well as ARM servers, such as the Amazon AWS Graviton instances, or Oracle’s A1 ARM Ampere instances.

The main reason for the fork is the lack of browser support. Google Chrome on Linux is only available for Intel architectures, Microsoft Edge is not available for ARM. Instead, only Chromium, the open source browser which Google Chrome is based on, and Mozilla Firefox, have ARM builds.

First, let’s talk about Mozilla Firefox. Mozilla maintains ARM builds for macOS only. The only reason we can find the latest ARM builds for Mozilla Firefox is thanks to Mike Hommey. For more than two decades, he’s maintained the Debian packages for Mozilla Firefox, and this includes builds for arm64, armhf, and other architectures. However, the latest version is only available for Debian Sid. The stable distro generally has a Firefox version that’s about 10 versions behind the latest.

The docker-seleniarm project was originally modified so that the base OS image is Debian, not Ubuntu. This was because Ubuntu moved to using snaps to install browsers. The Chromium package was modified to install the latest Chromium snap, so the Ubuntu package stopped requiring updates. As a result, the package appeared to be stuck at Chromium v85, even though this package installs the latest snap, which in turn installs the latest Chromium.

The other problem with snaps is they tend to isolate the application to the point where it cannot communicate with other components. When running automated tests, the test application communicates with Chromedriver, and Chromedriver communicates with Chromium. Snaps have been known to cause problems with this process. Debian doesn’t use snaps, at least not yet, so when it came to Chromium, it was much easier to install the latest Chromium and Chromedriver versions.