Selenium (E2E testing tool) uses ChromeDriver (exe that implements a WebDriver interface) to control Chrome.
Selenium expects chromedriver to be available in the path (eg. /usr/local/bin). It expects the Chrome browser to be available in (/Applications). The version of chromedriver and Chrome browser should match.
There are many methods to install chromedriver and Chrome. But here is one that I learnt today.
Assume that Chrome is in version 128, we want to install chromedriver v128. It can be done using puppeteer!
npx @puppeteer/browsers install chromedriver@128
It installs the Chrome driver in the current directory. Search the downloaded folder for chromedriver (pick the executable file, not the folder).
sudo mv chromedriver /usr/local/bin
You should be able to check the version of chromedriver using chromedriver —version
The mismatch happens when you do installation of selenium several months back and use a recent version of Chrome. Another way to resolve this problem is to delete node_modules and reinstall everything. In addition, there is a selenium cache at ~/.cache/selenium
that can be removed to fix the problem.
Happy tinkering!