Skip to main content
Java · Selenium · TestNG

Selenium Boot

Zero-boilerplate Java test automation — inspired by Spring Boot

<dependency>
  <groupId>io.github.seleniumboot</groupId>
  <artifactId>selenium-boot</artifactId>
  <version>1.1.1</version>
</dependency>
public class LoginTest extends BaseTest {

    @Test(description = "Valid user can log in")
    public void loginTest() {
        StepLogger.step("Open login page");
        open();

        StepLogger.step("Enter credentials", true);
        new LoginPage(getDriver())
            .login("admin", "secret");

        StepLogger.step("Assert dashboard", StepStatus.PASS);
        Assert.assertTrue(
            new DashboardPage(getDriver()).isLoaded()
        );
    }
}

Everything you need, nothing you don't

Zero Boilerplate

Extend BaseTest. Write @Test methods. Everything else — driver lifecycle, waits, retry, reports — is handled automatically.

📄

YAML Configuration

One selenium-boot.yml controls browser, parallel threads, timeouts, retry, CI thresholds, and more. Switch environments with a profile flag.

🔁

Smart Retry

retry.enabled: true retries every flaky test automatically. Use @Retryable for per-method control. Recovered vs still-failing shown in the report.

WaitEngine

Fluent explicit waits built in — waitForVisible, waitForClickable, waitForText, waitForPageLoad, and a custom condition escape hatch.

📊

Advanced HTML Report

Tabbed dashboard with pass rate, donut chart, slowest tests, step timeline, base64 screenshots, dark mode, and collapsible test groups.

🪜

Step Logging

StepLogger.step("name") logs named steps with timestamps. Optional per-step screenshots. Full timeline visible in the Failures tab.

🔌

Extensible

Java SPI-powered plugin system. Register custom browser providers, report adapters (Slack, Allure), and lifecycle hooks — zero framework changes.

🤖

CI-Ready

Auto-detects GitHub Actions, Jenkins, CircleCI, and more. Forces headless, adjusts thread count, emits JUnit XML. Includes ready-to-use workflow templates.

📋

Page Object Toolkit

BasePage provides wait-backed click, type, getText, isDisplayed. SmartLocator tries multiple strategies in order. Built-in iFrame helpers and file upload support.

🔐

@PreCondition

Eliminate @BeforeMethod login boilerplate. Declare @PreCondition("loginAsAdmin") on a test — the framework runs the setup once, caches cookies + localStorage, and restores the session automatically.

Up and running in 3 minutes

Add the dependency, create a YAML config, extend BaseTest — your first test runs with full reporting, retry, and smart waits already configured.

Read the guide →
# selenium-boot.yml
browser:
  name: chrome
  headless: false

execution:
  baseUrl: https://your-app.com

retry:
  enabled: true
  maxAttempts: 2