Logo

dev-resources.site

for different kinds of informations.

How To Set Up Docker Selenium GRID

Published at
6/7/2024
Categories
docker
grid
selenium
dockercompose
Author
debasmita-a
Author
11 person written this
debasmita-a
open
How To Set Up Docker Selenium GRID

What is a Selenium GRID?

Selenium GRID is one of the 3 components of Selenium : Selenium WebDriver, GRID and IDE. The architecture consists of a Hub and several nodes. Through our test script, we will connect to the Selenium Hub url and it will run tests on the nodes.

Parallel execution : A grid helps in execution of test script on a virtual machine(s) instead of local machine. Suppose there are few hundred testcases, which will take couple of hours to complete execution and it would totally seize your local machine for that time duration.

Scaling up browser containers : A grid enables execution of test script on scaled up browser instances. If I want to run my tests only on Chrome browser and I have hundreds of testcases, I can scale up Chrome instances and run them in parallel which will significantly reduce execution time. After that I can scale it down as per my requirement.

Cross browser testing : On my system, I don't have a specific browser and I don't want to set it up. I can always configure the grid to have those browsers and run my tests on them!

Standalone Selenium GRID :

This is something Selenium itself provides. We need to download and install the Selenium Server (preferably latest version and Java version >= 11) on our machine.

Navigate to Selenium Server Download page and we can see all the language compatible zip files : Or directly click on the selenium-server-4.21.0.jar file.

Selenium Server grid official page

We will see the complete installation and execution of test scripts using Selenium server in another article.

Docker Selenium GRID :

Selenium provides Docker images to run on our machine and all the grid installation and different browser setup etc. will be done automatically, we don't need to do anything! (that means we don't need to configure the grid, browser instances etc. step by step- like in case of Selenium Server.)

What is a Docker Compose file?

According to official Docker documentations :

Docker Compose is a tool for defining and running multi-container applications. It is the key to unlocking a streamlined and efficient development and deployment experience.
Compose simplifies the control of your entire application stack, making it easy to manage services, networks, and volumes in a single, comprehensible YAML configuration file. Then, with a single command, you create and start all the services from your configuration file.

It is a .yml/.yaml, where all the selenium grid configurations are defined. Selenium provides these files for all types of releases : SeleniumHQ/docker-selenium

How to Run a Docker Compose file?

Start Docker: Once we have installed Docker on our system, it is also know as the Docker Desktop, just open it. There. It has started.

Get a docker compose file and store it in a folder : Here is a sample docker compose file :

# To execute this docker-compose yml file use `docker-compose -f docker-compose-v3-beta-channel.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker-compose -f docker-compose-v3-beta-channel.yml down`
version: "3"
services:
  chrome:
    image: selenium/node-chrome:4.20.0-20240505
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  edge:
    image: selenium/node-edge:4.20.0-20240505
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  firefox:
    image: selenium/node-firefox:4.20.0-20240505
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  selenium-hub:
    image: selenium/hub:4.20.0-20240505
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"
Enter fullscreen mode Exit fullscreen mode

Run the docker compose file: Go to docker compose folder and open command prompt.

docker-compose file on local system

On the command prompt, run the command docker compose up -d . (-d means in detached mode. Your command prompt will be available to you for running further commands)

Running docker compose up -d command

Containers created from docker compose file

Pulling means the images are being downloaded and pulled from Docker image hub.

Open Selenium grid on browser : After all the installations are complete, open any browser and enter the url : localhost:4444/ui . The grid runs on the port 4444 by default, as defined in the docker compose file.

Selenium Docker GRID on localhost

"localhost", because it is not hosted on any cloud or other remote machines. It is running on local machine.

That's it! The Selenium GRID is up and running. We just need to configure our test script, so it runs the tests on remote machine.

Happy learning!

grid Article's
30 articles in total
Favicon
GridLookout: Building Viewport-Aware Multi-Layer Grid Positioning Of React Components
Favicon
Easily Integrate Syncfusion UI Components into PowerApps
Favicon
Mastering Flutter DataGrid with Pagination: Build Efficient Data Tables
Favicon
Flexbox vs Grid: A Guide to Choosing the Best Layout with Examples
Favicon
Effectively Visualize Data: Add Grids and Charts in JavaScript Pivot Field List
Favicon
Learn CSS Grid: Simple Guide with Plenty of Examples
Favicon
Grid Layout: The Ultimate Guide for Beginners
Favicon
Unlocking the Power of CSS Grid for Modern Web Design
Favicon
Make a grid element span to the full width of the parent
Favicon
Balance strategy and grid strategy
Favicon
From Requirements to Code: Implementing the Angular E-commerce Product Listing Page
Favicon
Bootstrap Tutorials: Grid system
Favicon
🎲 Criando um Dado com Flexbox e CSS Grid Layout
Favicon
Simple grid strategy in Python version
Favicon
How To Set Up Docker Selenium GRID
Favicon
React feature rich Table/Grid Libraries every developer should know.
Favicon
Adding Gif Canvas Features : Grid Snap
Favicon
Flex vs. Grid: Choosing the Right CSS Layout
Favicon
How to Create Instagram Explore Grid Layout with React Native
Favicon
#Fashion #Hero #Container #Using #Grid and #Flex
Favicon
Grid de 8 pontos uma técnica que torna seu projeto escalável
Favicon
Quick guide to CSS Grid
Favicon
VueJS + CSS: grid template based on variable
Favicon
Learn Css Grid Style Layout In 10 Minutes
Favicon
Get in to the Grid: Style Elements Made Easy
Favicon
React Grid Collection
Favicon
How To Center An Elements With CSS Grid
Favicon
Moving a Square with CSS Grid and Minimal JavaScript
Favicon
Introducing the AG Grid Figma Design System
Favicon
AWS Grid computing for Capital Markets (FSI)

Featured ones: