Table of Contents
Fetching ...

Selenium-Jupiter: A JUnit 5 extension for Selenium WebDriver

Boni García, Carlos Delgado Kloos, Carlos Alario-Hoyos, Mario Munoz-Organero

TL;DR

The paper introduces Selenium-Jupiter, an open-source JUnit 5 extension that integrates Selenium WebDriver with automated driver management and Docker-based browsers to simplify end-to-end web testing. It leverages the Jupiter extension model, providing parameter resolution, test lifecycle hooks, and test templates to manage WebDriver lifecycles, including local, remote, and Dockerized browsers, plus observability features like recordings and screenshots. A key contribution is the seamless orchestration of diverse browser environments and configurable test scenarios, demonstrated through a WebRTC WebRTC load-testing case using multiple SUTs (Janus, Jitsi, OpenVidu). The work shows that Selenium-Jupiter can ease infrastructure setup for complex tests and enable cross-browser load testing, though it acknowledges scalability limits tied to a single Docker engine and highlights directions for future clustering with Kubernetes.

Abstract

Selenium WebDriver is a library that allows controlling web browsers (e.g., Chrome, Firefox, etc.) programmatically. It provides a cross-browser programming interface in several languages used primarily to implement end-to-end tests for web applications. JUnit is a popular unit testing framework for Java. Its latest version (i.e., JUnit 5) provides a programming and extension model called Jupiter. This paper presents Selenium-Jupiter, an open-source JUnit 5 extension for Selenium WebDriver. Selenium-Jupiter aims to ease the development of Selenium WebDriver tests thanks to an automated driver management process implemented in conjunction with the Jupiter parameter resolution mechanism. Moreover, Selenium-Jupiter provides seamless integration with Docker, allowing the use of different web browsers in Docker containers out of the box. This feature enables cross-browser testing, load testing, and troubleshooting (e.g., configurable session recordings). This paper presents an example case in which Selenium-Jupiter is used to evaluate the performance of video conferencing systems based on WebRTC. This example case shows that Selenium-Jupiter can build and maintain the required infrastructure for complex tests effortlessly.

Selenium-Jupiter: A JUnit 5 extension for Selenium WebDriver

TL;DR

The paper introduces Selenium-Jupiter, an open-source JUnit 5 extension that integrates Selenium WebDriver with automated driver management and Docker-based browsers to simplify end-to-end web testing. It leverages the Jupiter extension model, providing parameter resolution, test lifecycle hooks, and test templates to manage WebDriver lifecycles, including local, remote, and Dockerized browsers, plus observability features like recordings and screenshots. A key contribution is the seamless orchestration of diverse browser environments and configurable test scenarios, demonstrated through a WebRTC WebRTC load-testing case using multiple SUTs (Janus, Jitsi, OpenVidu). The work shows that Selenium-Jupiter can ease infrastructure setup for complex tests and enable cross-browser load testing, though it acknowledges scalability limits tied to a single Docker engine and highlights directions for future clustering with Kubernetes.

Abstract

Selenium WebDriver is a library that allows controlling web browsers (e.g., Chrome, Firefox, etc.) programmatically. It provides a cross-browser programming interface in several languages used primarily to implement end-to-end tests for web applications. JUnit is a popular unit testing framework for Java. Its latest version (i.e., JUnit 5) provides a programming and extension model called Jupiter. This paper presents Selenium-Jupiter, an open-source JUnit 5 extension for Selenium WebDriver. Selenium-Jupiter aims to ease the development of Selenium WebDriver tests thanks to an automated driver management process implemented in conjunction with the Jupiter parameter resolution mechanism. Moreover, Selenium-Jupiter provides seamless integration with Docker, allowing the use of different web browsers in Docker containers out of the box. This feature enables cross-browser testing, load testing, and troubleshooting (e.g., configurable session recordings). This paper presents an example case in which Selenium-Jupiter is used to evaluate the performance of video conferencing systems based on WebRTC. This example case shows that Selenium-Jupiter can build and maintain the required infrastructure for complex tests effortlessly.
Paper Structure (24 sections, 10 figures, 4 tables)

This paper contains 24 sections, 10 figures, 4 tables.

Figures (10)

  • Figure 1: Architecture of Selenium RC and Selenium WebDriver
  • Figure 2: Architecture of JUnit 5
  • Figure 3: Worldwide relative interest of the search term "this version of chromedriver only supports chrome version" in Google Trends together with the release dates of Chrome during 2019 and 2020.
  • Figure 4: Selenium-Jupiter setup in Maven and Gradle
  • Figure 5: Comparison of Selenium WebDriver tests using local web browsers with: a) JUnit 4. b) JUnit 5 and Selenium-Jupiter
  • ...and 5 more figures