videos & slides


  • Workshop
    Driving Observability with Selenium Grid 4
    Driving Observability with Selenium Grid 4

    Selenium Grid can be a bit daunting to get up and running. Starting it is quite easy, but using it effectively can require pulling in third-party tools. In this workshop we’ll cover how to run your grid effectively, using best practices culled from several large grid installations.


    • Describe what the grid is intended to solve, then get into how it solves it
    • Going deeper into the funnel, how does it get its instructions, and how does it pass them to the nodes?


    • We’ll start with the conventional setup of hub and node servers running on the same box, for simplicity.
    • Different options and flags that can be used when starting the hub/node processes
    • What kinds of logging do the nodes/hubs do that can help in debugging and investigating problems?
    • What is Docker?
    • How do you setup standalone & grid:hub-node using docker?
    • Using docker-compose to simplify docker grid setup process


    • How do you run a test in a container?
    • How do you run a test against the docker grid setup?
    • How do you look at the logs of tests running in a container?

    Advanced Grid:

    • How to build your own docker image with custom browser versions
    • Creating a hybrid Selenium Grid (docker + a local IE/Safari node).
    • Integrating Selenium Grid to the CI pipeline (Jenkins).
    • Setting up a UI manager for all your docker installations
    • How do you scale containers?
    • Running tests in parallel against a scaled Selenium Grid


    • Selenium Grid on Amazon ECS using ecs-selenium
    • Overview of third-party tools

    Learning Outcome

    • What Selenium Grid is and are its capabilities
    • How to run a grid
    • How to scale nodes
    • How to debug
    • How to build your own docker images for custom browser requirements

    Target Audience

    Anyone who wants to learn about setting up, debugging, scaling and driving observability and with Selenium Grid 4

    Prerequisites for Attendees

    Knowledge of Selenium is a mandatory requirement, as the workshop will only focus on the Selenim Grid and won't cover how to write a script.

    Docker Environment


    • This will include installing Hyper-V


    • This will include installing the latest version of VirtualBox

    Linux Distributions:

    • The requirements will vary depending on the flavor of Linux being used

    Selenium-server-jar (latest):

    Latest Selenium 4 version: 4.3.0.jar

    You will also need the browser drivers and language bindings necessary for your target configuration, listed on this page:


    • If you intend to work with an auto-scaling Grid, an AWS account with full EC2 permissions.
    • It is also recommended that you have Eclipse or IntelliJ, a GitHub account, and an open USB port so participants can share files using a thumb drive.
    Tracing Selenium Grid
    1. Install Coursier via a homebrew `brew install coursier/formulas/coursier`
    2. Install Jaeger via docker
  • Workshop
    Advanced Appium 2.0
    Advanced Appium 2.0

    At this full-day (480 mins) workshop, you'll learn about advanced concepts in Appium. We will learn how to write a single script for Android, iOS, and mobile web apps. Once our tests are established, we will work on the framework design and report. We will also have a detailed look at how can we automate various mobile gestures using Actions API and mobile endpoints in Appium. The workshop will be based on the latest Appium's JavaClient.


    • Overview
      • Appium 2.0 Architecture
      • Locating elements using Inspector
      • Platform-wise Desired Capabilities
      • Start Appium Server programmatically
      • Understanding Appium server logs
      • Appium driver and plugin commands
      • Managing dependencies in Appium 2.0
    • Gestures
      • A deeper understanding of Gestures
      • Run through various gestures like Swipe, LongPress, Double-tap, Drag, and Drop using a w3c spec
      • Explore mobile: endpoints for the same gestures on both Android and iOS
      • Create our own complex gestures using the above endpoints
    • Practical Tips
      • Different ways to locater strategy for iOS and Android
      • Automation Hybrid application - Tips & Tricks
      • Video recording API
      • Simulate SMS only for Android
      • Run ADB shell commands via Appium
      • Seeding Photos on iOS-Simulator and Android
    • Appium Plugins
      • What is a Plugin?
      • How to build one using a plugin template?
    • Parallelize Tests
      • Understanding Appium Server Session
      • Desired Capabilities changes required to run tests in parallel
      • Using Appium Plugins to run tests in parallel on both android and iOS devices/simulators.

    Learning Outcome

    • Attendees will come away with knowledge of how to automate Android native apps with Appium.
    • Running tests single-threaded, in parallel, and distributed.
    • Also capturing critical report data (logs, screenshots, and video), and
    • Running mobile tests on a cloud test service.

    Target Audience

    QA, Automation Testers, Dev Engineers


    • It is mandatory to refresh your basic Appium skills as it is an intermediate to advanced Appium workshop

    Setup Links:

  • Workshop
    Selenium Deep Dive
    Selenium Deep Dive

    Selenium WebDriver v4 was released in Oct 2021. This version of Selenium WebDriver brings new features and capabilities for automation. At the same time, there are some features that are now deprecated and changed.

    If you answer yes to any of the following questions, this workshop is for you!

    • Are you using Selenium 3 and want to know how or why to update to Selenium 4?
    • Have you written Selenium tests before, but want to know about the advanced features?
    • Are you are struggling with flaky tests and want to learn strategies for fixing them?

    This practical, hands-on, course is designed to help automation engineers take their Selenium expertise to the next level. All attendees will leave with working Selenium WebDriver code on their machines and many techniques to successfully use the Selenium WebDriver API in their own context.


    In this session, we will go through the following topics:

    • Selenium WebDriver Architecture -> 15 min
    • New features since Selenium 3 -> 30 min
    • Hands-on exercises:
      • Selenium 4 Capabilities -> 30 min
      • Finding Elements -> 15 min
        • Locators (including with SelectorsHub extension)
        • Shadow Roots
      • Element State -> 15 min
        • Text
        • Attribute/Property
        • Rect
      • Element Interaction -> 60 min
        • Text Input
        • Dropdowns
        • Buttons / images / links
        • Action Inputs - keyboards, pointers, and scroll wheels.
      • Browser Contexts (Windows/Tabs/Frames) -> 15 min
      • Browser Interactions -> 15 min
        • Alerts/Prompts
        • Cookies
        • Executing JavaScript code 
      • WebDriverBuilder & Augmenter -> 15 min
      • Event Listeners -> 15 min
      • WebDriver BiDi -> 30 min
      • Waits -> 60 min
        • implicit
        • explicit
        • abstract
    • Test Strategy & Frameworks -> 90 min
      • What/How to Test
      • Maintenance Costs 
      •  Abstractions
        • Page Objects
        • Data Objects
      • Object Wrappers
        • Browsers
        • Elements
    • Whats next?

    Learning Outcome

    • Learn the new features and changes in Selenium 4
    • Know your migration path for Selenium 3 to Selenium 4
    • Implementation experience for various Selenium features, including the new Selenium 4 features
    • Navigating the Selenium landscape to find information on your own

    Target Audience

    Selenium users who want to get more out of their test code

    Prerequisites for Attendees

    • The workshop will be taught in Java as the programming language.
    • Below are the software prerequisites for the workshop:
      • IntelliJ Community
      • JDK 11+ (NOT JRE)
      • Git
      • Chrome & Firefox
  • Workshop
    Fix a Bug, Become a Committer
    Fix a Bug, Become a Committer

    Have you ever wondered how you can contribute to the Selenium project and become part of the team?

    Do you wonder how the different Selenium projects work under the covers?

    Selenium is a set of solutions that enables you to automate all major browsers with WebDriver, scale up and run tests in parallel through the Grid, record and play back user interactions with the IDE, and share all this knowledge though the Selenium website and documentation.

    However, only a handful of volunteers work to maintain this gigantic effort. If you would like to enhance your own Selenium experience while contributing back to the software that has defined so many of our careers, come to this workshop. In it we'll dissect the different elements of Selenium, dive into its internals, learn how it was built and how to make changes to it, and even fix or improve something that you can contribute on the same day! For the first time ever, we are offering this workshop at no charge to a limited number of qualified applicants - you only need to purchase a regular conference ticket to gain an extra workshop day! Learn more and submit your application here.

    Please note this is not a Selenium training workshop, but instead a walk-through of the project's codebase with guidelines on how to contribute.


    Join Diego Molina, one of the core maintainers of the Selenium Project, as we:

    • Explore the structure of the different Selenium projects
    • See how the source code is structured

    Discover how to navigate the codebase and maintain:

    • Selenium website and documentation
    • Selenium bindings in Java, Python, JavaScript, C# and Ruby
    • Selenium Grid
    • Docker Selenium images
    • Search out the bug database for an issue you can fix during the workshop
    • Fix a bug, add a test, or a feature and create a pull request to contribute it back
    • Get real time feedback and answers from the project core committers
    • Understand how releases get get done
    • Learn how to become a committer and be part of the team

    Learning Outcome

    Deep dive into the Selenium projects and when you leave, you will be able to start contributing to this massive open source project.

    Target Audience

    Anyone interested in understanding the internals of Selenium Project

    Prerequisites for Attendees

    A GitHub ( and a GitPod ( account.
    Fork the Selenium projects to your GitHub account
    A stable internet connection

  • Workshop
    State Model-Based Testing Using Selenium
    State Model-Based Testing Using Selenium

    State Model-Based Testing (SMBT) is an effective testing technique that allows you to visualize your application and to generate and automate test flows by using different models of the application under test, thus obtaining a large number of test scenarios.

    When certain paths of the application are changed, the benefit of using SMBT is that you will only have to modify the states and transitions that apply to that change.

    The purpose of using SMBT is to:

    • Discover another way to view the application under test
    • Test with a variety of randomly generated flows
    • Gather a big number of test runs so we can later investigate the parts of the model where tests have failed the most or the parts that have a higher fixing priority for the product under test.

    In this workshop, we will work in groups to model the behavior of a chosen web application and then write automated tests in Python, using SeleniumWebDriver and AltWalker, to execute the models we created and cover auto generated paths through the application.

    The State Model-Based workshop is a great opportunity for people who are already familiar with automation or coding. However, if you lack programming skills, this shouldn’t be an impediment as you will work in teams and get support from your peers.


    Part 1 - Introduction to SBTM and the app under test - 2 hours (9am - 11am)

    The first part is dedicated to theoretical concepts and getting familiar with your setup during the workshop. You will:

    • Meet your instructors and peers
    • Learn the theoretical aspects of modeling an application and State Model Based Testing
    • Discover the tools you will use for modeling and the application under test

    Part 2 - Modeling - 2 hours (11am - 1pm) 

    Through hands-on group modeling, you’ll learn how to create the model of an application. You will:

    • Work in teams to model the behaviors of a simple web app
    • Control the test coverage through generators and stop conditions
    • Add business logic to the model through actions, guards and data
    • Combine different models to obtain more complex scenarios

    Part 3 - Implementation - 3 hours (2pm - 5pm)

    With the help of ensemble programming, using Python and Selenium WebDriver, you’ll start implementing and executing automated tests based on the created model. You will:

    • Understand how a model can be represented in the automated tests 
    • Get familiar with the open-source tools GraphWalker and AltWalker
    • Execute tests using AltWalker
    • Learn how to split and combine different models

    Learning Outcome

    • Visualizing the complexity of the app and the covered scenarios
    • Dealing with unclear specifications, especially when it comes to integrations, interactions between functionalities or modules
    • Generating large amounts of relevant and complex scenarios and covering them with automation
    • Maintaining regression tests
    • Dealing with flaky tests.

    Target Audience

    People who are already familiar with automation or coding; those with less programming experience can be paired with more experience teams and get support from peers.

    Prerequisites for Attendees

    To try the tests yourself, you will need a laptop with the following pre-installed:

    We will do the coding in groups, so not everyone needs to have this setup done, but it would be good to have it if you want to be able to follow everything yourself. 


    We will be using AltWalker: which is based on Graphwalker (
    Some articles about projects where we have used State Model Based testing:

  • Deep Dive Session
    UNTestable: It's Just Pressing a Button, How Hard Could it Be?
    UNTestable: It's Just Pressing a Button, How Hard Could it Be?

    Over the last 7 years, I've consulted several testing teams on test automation projects for their web applications, and the most frequent troubleshooting request I get is about clicking some button on some website.

    It's just pressing a button... how hard could it be... right?

    I came to discover there's many edge cases when it comes to simply executing a click on a button.

    For example, how do you click a button that re-renders when the mouse hover over it? If you tried to click on the button that used to be there before, then you'll get a "stale element reference".

    How about a button that moves when the mouse goes over it?

    How about a button that is partially obscured by another element?

    How about a button nested in several scrollable containers?

    Unfortunately, these trick buttons are real scenarios I've seen in real business applications.

    In this presentation / live coding session, I'll show you some trick buttons, and how to hit them on the bullseye.


    • Self introduction
    • Live coding to solve different trick buttons with Selenium/Webdriver:
      • Trick button 1: "The clone" - Button that re-renders when mouse hover over it
      • Trick button 2: "The dodgeball" - Button that moves when mouse hover over it
      • Trick button 3: "The glass door" - Button that is partially obscured by another element (an unfortunately common issue)
      • Trick button 4: "The russian doll" - Button nested in several scrolling container

    Learning Outcome

    Learn how to automate clicking on elements for tricky but not uncommon edge cases.

    I thought about creating a subversive series on UNtestable UI elements, and this is a lesson on how to make UNtestable buttons.

    Target Audience

    Experienced test engineers

    Prerequisites for Attendees

    This session includes some live coding using Selenium / Webdriver and assumes that the audience is already familiar with Selenium / Webdriver syntax.


    I frequently write / talk about testing and debugging:

    I sometimes also write about software engineering in general:

Reserve Your Spot Now