For many reasons, including security, our company cannot use external Selenium Grid provider like BrowserStack. So, I want to run SeleniumGrid in-house.
We are already running SeleniumHub with Selenium nodes on docker containers (Firefox, Chrome) and VMs (IE, Safari) and learned that:
scales well because it has decentralized registration of nodes: registration to Selenium Hub is delegated to Selenium nodes: each time a docker container with new Selenium node is added, Seleniun node is resposible for registering to the Selenium Hub. Therefore, we can use Marathon to scale up number of hosts with Selenium nodes.
on a downside, it consumes lots of memory, provides no centealized logs of browsers nor monitoring of resource consumption.
I have found a nice alternative: Selenoid+GoGridRouter. However, it does not scale so well because of centralized registration of nodes: when you want to add new host, you need to install Selenoid on it and register it in GoGridRouter (that plays the role of SeleniumHub in Selenoid world). This does not scale well and hinders running Selenoid with Marathon.
So I wonder:
- Is there a way to run Selenoid with decentralized registration?
- Or perhaps there is another library that has advantages of both libraries?
I have read one of the threads, and some people failed to run Selenoid on Marathon. The company behind Selenoid is working on integration with Kubernetes, however this is going to be an enterprise solution, so not very good for a proof of concept we wanted to try.