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:

  1. Is there a way to run Selenoid with decentralized registration?
  2. 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.

  • You can run your own Se Grid server and run tests on bunch of your own VMs (which you will have to maintain). Are you looking for an alternative Se Grid provider, who will do that for you? What else I am missing? – Peter M. - stands for Monica May 10 '18 at 13:37
  • @PeterMasiar Yes, I am looking for alternative to SeGrid provider. We're already running docker containers and VMs with Selenium nodes, and scaling docker containers with Marathon. The good thing here is Selenium nodes register to SeleniumHub themselves so it scales nicely. Selenoid offers other things (centralized access to logs and monitoring, etc.) but has centrallized model of registration. If you want to add one more Selenoid node you need to do it in GoGridRouter (alterantive to SeleniumHub) configuration. I want combination of good things from SeleniumHub and Selenoid/GoGridRouter. – dzieciou May 10 '18 at 13:47
  • I will update my question – dzieciou May 10 '18 at 13:52

At my last employer we were unable to use selenium grid.
I can't remember what the reason was.

As an alternative we used CircleCI with 4 servers and it worked well, balanced the tests well between them, etc.

| improve this answer | |
  • CircleCI is continous integration environment. I am looking for solution to scale Selenium Grid cluster. – dzieciou May 11 '18 at 8:48
  • Maybe update the title to better reflect that ? – Michael Durrant May 11 '18 at 11:35
  • 2
    Again i used Circle CI as an alternative solution to selenium grid and that's why I am suggesting it here. It may not work for you but it worked for us and it may work for others that find this question in the future. if you don't actually want an alternative to selenium grid, just a way to get selenium grid working maybe retitle to reflect that to get better aligned answers – Michael Durrant May 11 '18 at 11:38

You can run and scale the containers up with docker-compose.

| improve this answer | |
  • Compose vs plain docker allows better scaling. – bbaassssiiee Mar 4 '19 at 7:09

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).

I would research provision by code. I don't see a reason you cannot automate the installation of software and the registration part. Worst case you need Selenium to automate the configuration.

Research Infrastructure as code

If that doesn't work, all projects named are open source. Invest some time in extending them yourself.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.