Workshop: Efficient Selenium Infrastructure with Selenoid

Selenoid is an alternative lightning fast open-source Selenium protocol implementation running browsers and Android emulators inside Docker containers. It is distributed with a set of ready-to-use Docker images corresponding to the majority of popular browser versions, has a one-command installation utility and works slightly more efficiently than traditional Selenium Grid.

This tutorial shows how to build efficient and scalable browser automation infrastructure using Selenoid and related tools. You will be taught why running browsers in containers is so efficient, how to easily install Selenoid and use its powerful features.


Outline/Structure of the Workshop

Part I. Using Selenoid for local automated tests development

1. Selenium: 10 mins of theory

* Brief Selenium history
* Current WebDriver architecture
* How Selenoid works and its motivation

2. Selenoid installation for tests development

* What is required to start Selenoid
* Selenoid installation: possible ways to do this
* Selenoid UI installation and quick review

3. Basic Selenoid features:

* Live automated tests debugging
* Recording and downloading videos of tests being executed
* Manual testing in Selenoid UI
* Using custom screen resolution
* Using custom test name
* Using Chrome Developer Tools

4. Updating browsers

Part II. Creating Selenium cluster

1. Selenium clusters theory

* Why Selenium Grid is not suitable
* Client-side load balancing
* Server-side load-balancing
* How to share state. Session ID magic
* Ggr server. How it works

2. Setting up Ggr from scratch

* Creating users file
* Creating quota file
* Starting Ggr
* Running tests against Ggr

3. Ggr Cluster Maintenance

* Changing available browsers with no downtime
* Adding users with no downtime
* How to deal with multiple quota files
* Proxying video, logs, downloaded files
* Adding more Ggr instances. Health checking instances

4. Ggr UI

* How it works
* Setting up and linking with Selenoid UI

Part III. Advanced Selenoid features

1. Selenoid for Windows browsers

* Possible ways to run Windows browsers with Selenoid
* How to build a Docker image with Windows inside
* Technical requirements of this approach

2. Selenoid for Android platform

* Android testing theory
* How to build a Docker image with Android inside
* Where to take ready to use Android image
* Technical requirements of this approach

3. Advanced browsers configuration file fields

* Volumes
* Environment variables
* Tmpfs
* Hosts entries
* ShmSize

4. Sending logs to centralized logs storage

* Why? Centralized logging storages
* How to configure Selenoid to send logs

5. Sending statistics to centralized metrics storage

* /status API
* Configuring Telegraf to upload statistics
* Creating statistics dashboard with Grafana

6. Sending logs to centralized logs storage (ELK-stack)

* What is ELK stack
* Configuring Selenoid to send logs to ELK-stack
* Searching across logs

7. Building custom browser images

* What's inside browser image
* Ready to use browser images
* How to build custom image

Learning Outcome

1) A deep understanding of Selenoid basic and advanced features

2) Ability to configure and maintain a reliable Selenium cluster with Ggr load balancer

3) Understanding on how to deal with complicated Selenium platforms such as Windows, Android and so on

Target Audience

Test automation engineers and testing infrastructure engineers requiring reliable Selenium infrastructure

Prerequisites for Attendees

Software: any modern Docker version

Technical knowledge:

  • Unix shell basics
  • Some experience with Docker
  • Basic experience with Selenium tests
schedule Submitted 6 months ago

Public Feedback

comment Suggest improvements to the Speaker
  • Anand Bagmar
    By Anand Bagmar  ~  4 months ago
    reply Reply

    Hi Ivan,

    Unfortunately, the conference is unable to accept additional full-day workshops due to logistics issues on the conference days. As an alternative, would you be interested in modifying your full-day workshop submission to either a 90-min mini-workshop or a 45 min session which can be reviewed by the program team for selection?

    While we understand modifying the content of a full-day workshop to a 45-min or 90-min is not ideal, at least this way you get a chance to share your learning and knowledge with the attendees.

    If you agree, can you please edit this proposal of your accordingly and drop a note to the program team in form of a comment once updated?

    Regards, Anand

    • Ivan Krutov
      By Ivan Krutov  ~  4 months ago
      reply Reply


      Two possible options here:

      1) I could do a 2 x 45 minute demonstration instead of a full day workshop. Such format does not require any preparation from attendees and allows to show the maximum number of stuff. The only requirement here is to have a stable Internet connection.

      2) It is also possible to do a quick introduction workshop but this will require a fast and stable internet connection (two years ago so far as I can remember connection was not brilliant) and the only risk here is that we will spend a lot of time setting up the environment. Basically only an environment with Docker and some example Selenium test is required but my practice shows that a lot of people still arrive without Docker and without any test. We can however just ignore all the people with difficulties.

  • Liked Shweta Sharma

    Shweta Sharma / Nikita Jain - Accessibility testing 101

    45 Mins

    "This world is such a beautiful place to live in." If you can read the first sentence without any screen readers or assistance, you're privileged. As technologists, shouldn’t we be more empathetic towards differently-abled people and make all parts of our website accessible to them? In my humble opinion, the true power of technology can be identified when it reaches out to people of all kinds having different physical or psychological challenges. We not only legally bound to provide Accessibility but also it should be considered as our moral responsibility.

    As testers, we have a wonderful opportunity to contribute to Accessibility by ensuring that the site is accessible in many different ways. Although it is impossible to identify all the issues that exist around Accessibility in the world, we are lucky enough to still understand a majority of them. With this understanding, there have been many measures taken in order to make your site accessible. But, don’t forget - we are QA engineers. We got to ensure that the site is accessible as per the standards set by WCAG 2.0 (AA) by testing for accessibility using various tools and techniques.

  • Liked Rajdeep varma

    Rajdeep varma - The Joy Of Green Builds - Running Tests Smartly

    45 Mins

    So you have got a few UI tests and they are running in parallel, great! However, life will not be so sweet once these 'a few' turns into 'a lot'. We grew from a few to 1500 UI tests (although not particularly proud of this number, there are situations and reasons)

    We started with a simple parallel distribution of tests 3 years ago. As test count increased failure count run time increased along with increased flaky tests. Mobile tests had their own challenges (eg. device dropping-off, random wi-fi issues, etc) To keep up with this, we created a queue and workers based solution which could distribute the tests more efficiently ( Over time, we made more improvements, in particular:

    • Segregation of failures based on infrastructure issues and re-queue the tests
    • If a device/emulator malfunction, rescue the tests to another device
    • Repeating a single test on 100s of the worker in parallel to detect flakiness
    • Repeat a test if a known network issue
    • Terminating the build early if more than a certain number of tests have failed
    • Health check of each device, before each test to ensure reliability
    • Muting a test if failure is known, and highlight outdated mutes if the related task is fixed

    In this talk, I will talk about the initial challenges with running UI tests in parallel (Selenium and Appium), how we approached the queue based solution and continuous improvement of this solution; finally, how attendees can use it at their workplace or create their own solution based on our learnings.

  • Liked Ivan Krutov

    Ivan Krutov - Master-class: Bulletproof Selenium cluster

    Ivan Krutov
    Ivan Krutov
    schedule 5 months ago
    Sold Out!
    45 Mins

    Browser tests are known to be the flakiest ones. This is partly because browser infrastructure is complicated to maintain. But the second reason is – mainstream browser automation tools such as Selenium server are far from being efficient.

    During my previous talks I was speaking about Selenoid - a truly efficient replacement of the standard Selenium server. This year I would like to do a live demonstration how to organize a fault-tolerant and easily scalable Selenium cluster using virtual machines in the cloud. I will start by setting up Selenoid and show its powerful features like video recording, live tests debugging, manual testing and many more. Then I will configure Selenoid to send logs and recorded videos to S3-compatible storage. Finally we will run a Ggr load balancer instance allowing to use all running Selenoid nodes and organize a single entry point to the cluster.

  • 45 Mins
    Case Study

    Challenges in Testing & Automating Games

    Testing real-time, multi-user games built for native apps and / or browser-based on phones / mobile devices / tablets / desktop browsers makes testing of regular products as apps, or websites appear like a piece of cake. Testing such real-time and multi-user games becomes even more challenging when you think about automating the same.

    I got an opportunity to build Functional Test Automation for a suite of games – and what an exciting time it turned out to be!

    These games are built either using Cocos2d-x, or Unity (cross platform game engines for mobile games, apps and other cross platform interactive GUI and are known for their speed, stability, and ease-of-use).

    The key challenges I encountered here were:

    • Millions of users, playing games on a huge variety of devices (Android & iOS native apps, Mobile-Web, and Desktop Web)
    • Limited unit testing
    • API testing & Functional Testing done in isolation (mini-waterfall approach)
    • Usage of Cocos2d-x & Unity for game rendering – which cannot be automated via Appium
    • Limited Functional Automation (for native apps)

    An approach to Functional Automation of Real-Time, Multi-User Game scenarios

    I overcame the above mentioned challenges by doing the following:

    • A better way of working (you can call it ‘Agile’)
    • Break down the walls by fostering a mindset of “build quality-in, as opposed to test for quality”
    • Built a new functional automation framework using java / testing / appium-test-distribution / reportportal / jenkins with focus on – specify test intent once and run on all supported channels (ex: Android, iOS, Mobile-Web, and Web)
    • Built a solution for Cocos2d-x layer automation
    • Created a vision of CI-CD for the organization, and setup code-based CI pipelines to enable end-2-end visibility
    • Made the framework extensible by providing ability to use same framework for multiple games

    The focus of this talk will be to:

    • Share an example of a particular use case
    • Share the solutions, including code snippets, implemented for:
      • Functional Test Automation Framework Architecture & Design
      • Ease of Test Implementation, while maintaining code quality and promoting reuse
      • Test Execution on local Vs CI, on-demand as well as on every new build

  • Liked Denys Pavlenko

    Denys Pavlenko - Integrating Selenium tests into GitLab CI

    45 Mins

    GitLab is the first single application for the entire DevOps cycle. Only GitLab enables Concurrent DevOps, unlocking organizations from the constraints of the toolchain. GitLab provides unmatched visibility, higher levels of efficiency, and comprehensive governance. This makes the software lifecycle 200% faster, radically improving the speed of business.

    Taking into account the fast growth of GitLab in recent years and it’s prominent advantages, you might be required to start running Selenium tests in GitLab or even migrate your end2end tests from your previous CI tool to GitLab.

    Step by step guide will provide you the main challenges, key configurations, pitfalls in order to integrate and successfully run Selenium tests in GitLab CI. The wrapper around the Selenium to be presented is going to be Protractor with a built-in Jasmine test runner.

    The presentation will also showcase some main tips and tricks we’ve faced during this integration at our fast-growing startup in Munich, Germany.

  • Liked Rajdeep varma

    Rajdeep varma - Appium-Android: From Surface To Core

    90 Mins

    Over the past few years, Appium has gained tremendous popularity due to its support of many languages and multi-platform automation possibilities. It is the most popular tool for test automation engineers as of today.
    However, there are times when beginner Appium users have a curiosity about how it works under the surface. Some intermediate/advanced users always wonder how to debug their automation code in conjunction with the Appium source code to find out why that element on UI can’t be located or why the click is not working on that custom element.
    In this workshop, we will start with the tools that are building a block of higher-level android automation frameworks such as espresso, uiautomator2, etc. Later, we will deep dive into Appium with espressodriver.

  • Liked Srinivasu gangam

    Srinivasu gangam - Zero Touch Automation using NLP (Natural language processing) & AI

    Srinivasu gangam
    Srinivasu gangam
    Sr Manager
    Cotiviti India
    schedule 7 months ago
    Sold Out!
    45 Mins

    Problem Statement:

    As part of SDLC process:

    1. Is your product quality impacted due to a smaller number of QA resources available in the team?
    2. Are you waiting for QA resources to certify your code every time when you deploy? Is this impacting your product lead time (Speed to Market)?
    3. Is your Product delivery timelines are impacted due to last minute defects identified?
    4. Do you have your QA resources only in one location, but you want to “follow-the-sun” approach for Software delivery across multiple locations?
    5. Do you have manual testers who are not skilled in programming, but you want them to execute automated test scripts w/o any training efforts and automation setup?
    6. Would you like your team more agile and cross functional with Delivery?
    7. Would you like to increase your QA team’s productivity while they invest more time in script development rather than script execution?

    If answer is ‘Yes’ for above questions, "Zero touch automation" is the solution for above challenges that we have been facing part of SDLC.

    Solution: Zero touch automation with cutting-edge technologies

    In this session, I will cover how we solved this problem using innovative solutions, Cutting-edge technologies like NLP (Natural language processing), AI & Cloud solutions.

    You will learn how AI, NLP integrated with core automation components to achieve Zero touch automation.

    This solution is not just revolutionary, it is paradigm shift in test automation to get results to your email with detailed analysis of failure categorization with recommended actions to users.

    I will also cover how E2E automation will be driven with decisions taken by machines based on what user is looking for . There is no manual intervention in this process. NLP and AI play key role to help machines to take decisions.

    We will also cover how we empowered developer/release manager/any team member/Manager to trigger the scripts from their cell phone and get the detailed execution report without having any automation software installed in their computer or Phone.

    We will be demonstrating how the request will be initiated from User, understand the need from user using NLP & AI , Fetching the code from bitbucket to select appropriate automation scripts , running them on Selenoid/docker server , storing results to MongoDB , receiving email with test results and Failure analysis.

    What is the value of zero touch automation?

    1. Enable speed to market: Now that Developers does not need to wait for QA resource, Changes can be certified quickly and ready to push to production. Lead time will be significantly reduced.
    2. Increase quality: Now that test automation is easy and it can run multiple times in each environment, most of the defects will be uncovered and addressed before code goes to production.
    3. Ease of test execution: Test execution will be very easy, no automation or framework setup required from user side. Test execution can be done 24*7.
    4. Productivity: Increase QA team’s Productivity to focus more on script development rather than focusing on script execution and failure analysis .
  • Liked Artem Sokovets

    Artem Sokovets - Three approaches to the next level of automation testing

    45 Mins
    Case Study

    In my talk, I want to share several approaches that help to improve automation testing in your company.

    Do you want to spend less time developing UI automated tests? Maybe you want to reduce boilerplate code in UI tests? Or you think it is time to improve Page Object pattern that has been used for more than 8 years?

    My first point will be about how the interface can help us to represent a new vision of Page Object and what benefits we could get from it.

    The second - modern methods for coverage measuring are good only for development. However, the amount of useful information from coverage reports is extremely small.

    It will a journey about autotest coverage. Imagine, that your project manager asks you - Do we have autotests for these buttons (forms, pages) or what autotests cover these Rest APIs with 'special' query parameters? I will show you two simple solutions that allow you to evaluate the coverage of tests written by test automation specialists.

    a) API tests. There is a swagger and during his execution, we also collect a swagger. We count coverage as a diff of two swaggers. We can see what is covered, what is not and what data used.

    b) Web tests. During the execution of tests, we collect information about elements, pages, and actions. As a result, we have such a format: page -> elements -> actions -> tests. All information representing in Chrome Plugin, that I will share with you.

    And last, I am going to consider what cons have current TMS (QA time management systems) and what to do if you want to make an automation-first strategy on your project? Moreover, you look for one TMS for developers and QAs/or you want to save the Allure report of all autotests in one place?

    Here you are! Allure Server has already released. I will overview the most important features and how to start using it from scratch.

    If you have an interest in the above themes come to my talk.

  • Liked Ivan Krutov

    Ivan Krutov - Unleash the power of Chrome Developer Tools with Selenoid

    Ivan Krutov
    Ivan Krutov
    schedule 5 months ago
    Sold Out!
    45 Mins

    Being a mainstream and widely used browse automation tool Selenium protocol however still lacks many important features: network requests analysis, application performance profiling, accessibility tree access and many more. Hopefully all of them are already supported in so called Chrome Developer Tools protocol and which is more important this protocol is already supported in Selenoid - an extremely efficient Selenium solution running browsers in isolated Docker containers. In this talk I will tell you what is Chrome Developer Tools protocol, how it works, what are its powerful features and how to use the most important features of this protocol in different browsers being run remotely and in parallel.

  • Liked Sameer Arora

    Sameer Arora - Triggering alerts on Slack along with screenshots in case of test case failure

    Sameer Arora
    Sameer Arora
    Senior Software Test Engineer
    schedule 7 months ago
    Sold Out!
    45 Mins

    One of the biggest limitations with most of the frameworks in selenium is that we need to wait till the end to get the final test case report. Only then we can raise the alert that a particular functionality is broken. By then, it may be too late! In addition to this, in most of the frameworks, the HTML report generated is hosted on our company's private network and we need to connect to the VPN if we are outside the office to open the report and check the related screenshots to see which test case has failed and why.

    So, why not raise an alert as soon as the test case fails? And why not attach a screenshot along with that alert so that all the stakeholders can actually see what has failed in the application?

    In this session, we will learn a simple yet a really useful way of sending an alert along with the failed test case screenshot by integrating slack with selenium which will help us alert all the stakeholders as soon as an automated test case fails so that everyone can react to it immediately and the damage will be minimised.

  • Liked Roman Orlov

    Roman Orlov - 5 reasons to run your Selenium tests in Kubernetes... and how to do that

    Roman Orlov
    Roman Orlov
    schedule 5 months ago
    Sold Out!
    45 Mins

    During the last years we in Aerokube team created and demonstrated truly efficient Selenium tools: Selenoid and Ggr. With two small daemons you can easily organize a reliable Selenium cluster where each browser will be running in separate Docker container.

    In this talk I would like to address another important question - Selenium cluster resources consumption. I will explain step by step why running browsers in Kubernetes cluster can dramatically decrease your Selenium cluster cost. You will see how to consume times less computing resources and still have the same powerful Selenium features like video recording, debugging running tests, creating browser sessions for manual testing and so on.

    I will show how to install, manage and scale Selenium cluster in Kubernetes using Aerokube Moon solution and compare resulting cluster cost to other popular solutions.

  • Liked Prateek Sethi

    Prateek Sethi - Enhance Test Automation ROI with Docker based Selenium Environment

    Prateek Sethi
    Prateek Sethi
    QA Lead
    schedule 5 months ago
    Sold Out!
    90 Mins

    Quick Description :

    To support the continuously evolving software industry, DevOps and Agile practices have established themselves as a big helping hand. With ever-increasing large scale digital transformation projects, organizations realize that the only way to shorten the product development cycles is to automate the processes involved in the delivery pipeline.

    There are many tools and technologies to establish DevOps, but one of the most important ones is containerization, which gives flexibility in application packaging and automating a number of processes involved in the delivery pipeline. Containers have all the needed configurations and dependencies, for faster delivery of committed items to the customer. Docker is an open-source solution that makes it easier to create, deploy and run applications securely using containers. Therefore, quick feedback and testing applications with different environments can be achieved using Selenium with Docker.

    My Proposal :

    We can reduce the significant effort in provisioning, maintaining, running the Test Automation on different environment setup using, Docker with Test Automation. Some of the benefits are:

    Benefits of using Docker with Selenium:

    1. Test an application on multiple browsers and their different versions without installing them on multiple machines
    2. To test multiple application builds concurrently without updating the code for different environments
    3. To test your applications on multiple devices/OS/Browser combinations on a single machine.As Selenium within Docker will make it much quicker to test different environments by using the preconfigured containers.
    4. Also, I will cover topics like how to set up the Selenium multi-environment setup using Docker concepts like Compose file, etc.

    Best practices using Selenium with Docker

    1. Common Dos and Don'ts for this setup.
    2. How to avoid over maintenance of your Test Harness.
    3. Infrastructure setup

    Increase the power of your Test Automation Setup with Kubernates:

    How to handle Selenium grid-based dockerize nodes with Kubernates.

  • Liked Arun Prakash

    Arun Prakash / Oleg Shuliak - Scalable & Lightning fast Test Infrastructure in AWS

    45 Mins

    Quality Assurance is an important term in the lifecycle of a software product. When it comes to QA, there are a lot of layers of testing which includes but not limited to Unit testing, Integration testing, UI testing. If we consider the test pyramid, although UI testing forms only a small percentage of the tests, it's an important factor in deciding the quality of the product. One of the main pain points in having a UI test is the execution time. To overcome this, we now have the tests that are executed in parallel. While designing a test infrastructure for executing the UI tests in parallel, there are a lot of factors that need to be considered. Some of them are

    • Scalability
    • Reliability
    • Resource constraints

    Taking into account the different tools which are available now in the market, one of the most efficient tool which satisfies the above criteria is "Selenoid"

    Selenoid is a powerful Go implementation of original Selenium hub code. It is using Docker to launch browsers. One of the main advantages of selenoid is that its' lightning fast. Selenoid launches a new container for each new browser request and stops it after the session is closed. A certain browser version, the required version of the web driver which supports this browser and all necessary dependencies form each container. Selenoid also support most of the popular browsers such as Chrome, firefox etc.

    This presentation will be to show case how to create a scalable selenoid infrastructure in AWS cloud with the help of kubernetes and this is being used at our fast growing startup based on Munich, Germany. We will also show case the comparison between different tools that are available in the market.


  • Liked Khanh Do

    Khanh Do - Leveraging Artificial Intelligence to create self-healing tests

    Khanh Do
    Khanh Do
    QA Architect
    schedule 7 months ago
    Sold Out!
    45 Mins

    A key requirement for successful test automation is to get past the brittle or fragile nature of test scripts. Any Selenium (or Appium) developer has encountered the dreaded "NoSuchElement Exception". A locator that worked yesterday may fail today. What's a test engineer to do?

    Fortunately the field of AI provides promising solutions and allows for the creation of self-healing tests. Tests that can find elements across all environments. Tests that can learn from "human-in-the-loop" intervention and work perfectly thereafter. Imagine automated tests that "just work"!

    This session will look at how to apply the latest in AI and Machine Learning technologies to improve your test scripts. With the plethora of new open source AI libraries made available by companies such as Google, the ability to leverage AI in your applications is more accessible than ever.

    This session will be a primer on AI technologies and how they can be utilized for perfect test automation.

  • Liked Nishil Patel

    Nishil Patel - Tesbo : An Awesome Test Automation Framework with Plain English Text But not BDD

    Nishil Patel
    Nishil Patel
    schedule 6 months ago
    Sold Out!
    45 Mins

    Tesbo is a hybrid Test Framework built top on the Selenium which allows you to use the plain English language to define the test which helps you to reduce the development and maintenance time and efforts. sounds similar to the BDD framework (i.e. Cucumber, Specflow, Gauge, etc...) ??? But No It Isn't... It's much better than Cucumber.

    In this session, we will look into why we have developed Tesbo and how it will reduce the development and maintenance times of web and mobile test script.

    This session will focus on the

    • Introduction of Tesbo
    • Advantages of Tesbo
    • Feature description
    • Test Development and Execution demo
    • Future plans for Tesbo