or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

browser-container.mdindex.mdselenium-utils.mdvideo-recording.md
tile.json

tessl/maven-org-testcontainers--selenium

Selenium WebDriver containers for Testcontainers - provides lightweight, throwaway instances of Selenium browsers running in Docker containers for automated testing

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.testcontainers/selenium@1.21.x

To install, run

npx @tessl/cli install tessl/maven-org-testcontainers--selenium@1.21.0

index.mddocs/

Testcontainers Selenium

Testcontainers Selenium provides Selenium WebDriver container support for automated testing with web browsers running in Docker containers. It offers containerized instances of Chrome, Firefox, and Edge browsers, providing a clean, isolated browser environment for each test run with features like video recording, VNC access, and automatic browser version compatibility.

Package Information

  • Package Name: org.testcontainers:selenium
  • Package Type: Maven
  • Language: Java
  • Installation:
    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>testcontainers</artifactId>
        <version>1.21.3</version>
    </dependency>
    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>selenium</artifactId>
        <version>1.21.3</version>
    </dependency>

Core Imports

import org.testcontainers.containers.BrowserWebDriverContainer;
import org.testcontainers.utility.DockerImageName;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.URL;

Basic Usage

import org.testcontainers.containers.BrowserWebDriverContainer;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;

// Create a Chrome browser container
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
    .withCapabilities(new ChromeOptions());

// Start the container
chrome.start();

// Get the Selenium endpoint URL
URL seleniumAddress = chrome.getSeleniumAddress();

// Create RemoteWebDriver instance
RemoteWebDriver driver = new RemoteWebDriver(seleniumAddress, new ChromeOptions());

// Use the driver for testing
driver.get("https://example.com");

// Clean up
driver.quit();
chrome.stop();

Architecture

The Selenium module is built around the BrowserWebDriverContainer class which extends the core Testcontainers GenericContainer. Key components include:

  • BrowserWebDriverContainer: Main container class for browser automation
  • Video Recording: VNC-based session recording with configurable modes
  • Browser Support: Chrome, Firefox, and Edge containers from SeleniumHQ
  • Version Compatibility: Automatic browser version selection based on Selenium API version

Capabilities

Browser Container Management

Core functionality for creating and configuring Selenium browser containers with different browsers, capabilities, and Docker images.

Key APIs:

public BrowserWebDriverContainer();
public BrowserWebDriverContainer(String dockerImageName);
public BrowserWebDriverContainer(DockerImageName dockerImageName);
public SELF withCapabilities(Capabilities capabilities);
public URL getSeleniumAddress();
public String getVncAddress();

Video Recording

Video recording capabilities for test sessions using VNC recording with configurable modes and file naming.

Key APIs:

public SELF withRecordingMode(VncRecordingMode recordingMode, File vncRecordingDirectory);
public SELF withRecordingMode(VncRecordingMode recordingMode, File vncRecordingDirectory, VncRecordingFormat recordingFormat);
public SELF withRecordingFileFactory(RecordingFileFactory recordingFileFactory);

Selenium Version Detection

Utilities for detecting Selenium version from classpath and ensuring browser image compatibility.

Key APIs:

public static String determineClasspathSeleniumVersion();
public static String getSeleniumVersionFromManifest(Manifest manifest);

Types

VncRecordingMode

public enum VncRecordingMode {
    SKIP,
    RECORD_ALL,
    RECORD_FAILING
}

VncRecordingFormat

public enum VncRecordingFormat {
    FLV("flv"),
    MP4("mp4");
    
    public String getFilenameExtension();
}

RecordingFileFactory

public interface RecordingFileFactory {
    File recordingFileForTest(File vncRecordingDirectory, String prefix, boolean succeeded);
    default File recordingFileForTest(
        File vncRecordingDirectory, 
        String prefix, 
        boolean succeeded, 
        VncRecordingFormat recordingFormat
    );
}

Constants

public static final String DEFAULT_SELENIUM_VERSION = "2.45.0";