CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-testcontainers--selenium

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

Overview
Eval results
Files

video-recording.mddocs/

Video Recording

The Selenium module provides VNC-based video recording capabilities for test sessions. This allows you to capture browser interactions during tests for debugging and documentation purposes.

Imports

import org.testcontainers.containers.BrowserWebDriverContainer;
import org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode;
import org.testcontainers.containers.VncRecordingContainer.VncRecordingFormat;
import org.testcontainers.containers.RecordingFileFactory;
import org.testcontainers.containers.DefaultRecordingFileFactory;
import java.io.File;

Recording Configuration

Basic Recording Mode

Configure video recording with a recording mode and output directory.

public SELF withRecordingMode(VncRecordingMode recordingMode, File vncRecordingDirectory);

Parameters:

  • recordingMode: When to record videos (SKIP, RECORD_ALL, RECORD_FAILING)
  • vncRecordingDirectory: Directory where recording files will be saved

Usage:

File recordingDir = new File("./test-recordings");
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
    .withCapabilities(new ChromeOptions())
    .withRecordingMode(BrowserWebDriverContainer.VncRecordingMode.RECORD_FAILING, recordingDir);

Advanced Recording Mode

Configure video recording with format specification.

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

Parameters:

  • recordingMode: When to record videos
  • vncRecordingDirectory: Directory for recording files
  • recordingFormat: Video format (typically FLV)

Usage:

File recordingDir = new File("./test-recordings");
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
    .withCapabilities(new ChromeOptions())
    .withRecordingMode(
        BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL, 
        recordingDir, 
        VncRecordingContainer.VncRecordingFormat.FLV
    );

VncRecordingFormat Enum

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

Values:

  • FLV: Flash Video format (default)
  • MP4: MPEG-4 format with H.264 encoding

The enum provides file extension information for proper recording file naming.

Recording Modes

VncRecordingMode Enum

public enum VncRecordingMode {
    SKIP,
    RECORD_ALL,
    RECORD_FAILING
}

Values:

  • SKIP: No video recording
  • RECORD_ALL: Record all test sessions regardless of outcome
  • RECORD_FAILING: Record only failing test sessions

Usage:

import org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode;

// Record only failing tests
.withRecordingMode(VncRecordingMode.RECORD_FAILING, recordingDir)

// Record all tests
.withRecordingMode(VncRecordingMode.RECORD_ALL, recordingDir)

// Disable recording
.withRecordingMode(VncRecordingMode.SKIP, recordingDir)

Recording File Management

Custom Recording File Factory

Configure custom file naming for recording files.

public SELF withRecordingFileFactory(RecordingFileFactory recordingFileFactory);

Parameters:

  • recordingFileFactory: Custom implementation of RecordingFileFactory

Usage:

RecordingFileFactory customFactory = new CustomRecordingFileFactory();
BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
    .withRecordingFileFactory(customFactory);

RecordingFileFactory Interface

File Creation Methods

public interface RecordingFileFactory {
    File recordingFileForTest(File vncRecordingDirectory, String prefix, boolean succeeded);
    
    default File recordingFileForTest(File vncRecordingDirectory, String prefix, boolean succeeded, VncRecordingFormat recordingFormat) {
        return recordingFileForTest(vncRecordingDirectory, prefix, succeeded);
    }
    
    @Deprecated
    default File recordingFileForTest(File vncRecordingDirectory, Description description, boolean succeeded) {
        return recordingFileForTest(vncRecordingDirectory, 
            description.getTestClass().getSimpleName() + "-" + description.getMethodName(), 
            succeeded);
    }
}

Parameters:

  • vncRecordingDirectory: Directory for saving recordings
  • prefix: Test name prefix for the file
  • succeeded: Whether the test passed or failed
  • recordingFormat: Video format for the recording
  • description: JUnit test description (deprecated method)

Default Recording File Factory

DefaultRecordingFileFactory

The default implementation creates timestamped files with test results.

public class DefaultRecordingFileFactory implements RecordingFileFactory {
    public File recordingFileForTest(File vncRecordingDirectory, String prefix, boolean succeeded);
    public File recordingFileForTest(File vncRecordingDirectory, String prefix, boolean succeeded, VncRecordingFormat recordingFormat);
}

File Naming Pattern:

{RESULT}-{PREFIX}-{TIMESTAMP}.{EXTENSION}

Where:

  • RESULT: "PASSED" or "FAILED"
  • PREFIX: Test name or custom prefix
  • TIMESTAMP: "YYYYMMDD-HHmmss" format
  • EXTENSION: File extension based on recording format

Example Output:

FAILED-ChromeWebDriverContainerTest-testLogin-20231201-143052.flv
PASSED-FirefoxTest-testNavigation-20231201-143105.flv

File Naming Constants

The DefaultRecordingFileFactory uses internal constants for file naming:

  • Result markers: "PASSED" for successful tests, "FAILED" for failed tests
  • Filename format pattern: "{RESULT}-{PREFIX}-{TIMESTAMP}.{EXTENSION}"

VNC Access Information

Deprecated Access Methods

@Deprecated
public String getPassword();

@Deprecated
public int getPort();

Note: Use getVncAddress() from BrowserWebDriverContainer instead.

Default Values:

  • VNC Password: "secret"
  • VNC Port: 5900

Recording Integration

Video recording automatically integrates with test lifecycle:

  1. Test Start: If recording mode is enabled, VNC recording container starts
  2. Test Execution: Browser actions are captured via VNC
  3. Test End: Recording is processed based on test result and recording mode
  4. File Creation: Recording file is created using the configured RecordingFileFactory

The recording files are automatically saved to the specified directory with meaningful names that include test results and timestamps.

Install with Tessl CLI

npx tessl i tessl/maven-org-testcontainers--selenium

docs

browser-container.md

index.md

selenium-utils.md

video-recording.md

tile.json