Use Chromium, /usr/bin/chromedriver on Linux arm64 #76
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The project now completely builds and passes all tests on Linux arm64 using Chromium.
The following is adapted from the comment block for the new WebApplicationTest.getChromeDriver(). Including the information here to make sure it's more accessible to anyone who could use it.
If /usr/bin/chromium if present, the test will use this browser and set the ChromeDriver instance to /usr/bin/chromedriver. This is because Google Chrome isn't yet available for arm64 Linux, and WebDriver doesn't download the correct driver, either:
It also won't work with a snap-installed version of Chromium. At the time of writing, I installed Chromium by upgrading to Ubuntu 23.10 and following the following advice to install Chromium from Debian:
For future reference, this is how to install the non-snap version of Firefox from Mozilla:
Also of note: Upgrading to Ubuntu 23.10 will not automatically upgrade any Docker packages installed via:
The effect is that the Docker container will run, but nothing can connect to its ports. This will cause the WebDriver tests to hang (until we move away from using Docker and running Tomcat directly).
To fix it:
The ChromeDriverService.Builder().usingDriverExecutable(driverPath) method of setting /usr/bin/chromedriver came from: