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