// the kit

Selenium Pro Automation KitJava

A production-ready Selenium framework. Java 17. JUnit 5 with custom extensions. POM pattern. Maven Surefire + Failsafe split. REST Assured for API testing. AssertJ fluent assertions. Java Faker factories. Allure reporting. GitHub Actions CI. 32 passing tests. $199.

Buy the Kit — $199 →

Already own a kit? Sign in for $169 owner pricing.

##Everything included: BasePage, POM, JUnit 5 extensions, REST Assured, CI

Twelve production-grade pieces of a Selenium + Java test automation framework — wired together, documented, and ready to ship.

Real-Data Module ↓

Drop in a Postgres, MySQL, or MongoDB connection string and pull random rows straight from your real DB — no mocks, no fixtures to maintain. Unicode + apostrophe + locale safety, seeded reproducibility, and an identifier-injection guard on every query. CI-verified against live databases every release.

BasePage with Fluent Helpers

Type-safe BasePage with find / findVisible / safeClick / typeText / hover / scrollIntoView / waitForUrlContains / selectDropdown / screenshot — Selenium 4 idioms, logged, and retry-safe. Every page object inherits from it. Stop rewriting wait logic.

Page Object Model

LoginPage, InventoryPage, CartPage, CheckoutPage — real data-test selectors, fluent return-types for chaining, static By constants. The canonical Java POM pattern, done right.

JUnit 5 + Custom Extensions

JUnit 5 Jupiter with DriverExtension, LoginExtension, and ScreenshotOnFailure extensions. Annotations: @WithDriver, @LoggedIn — declarative test setup. Same suite runs local and CI.

REST Assured API Testing

REST Assured 5.5 wired alongside Selenium for hybrid UI + API tests. ApiVsUiCartTest compares cart state via REST endpoints against the rendered UI. AllureRestAssured filter logs every request/response into the Allure report.

Surefire + Failsafe Split

Maven Surefire runs fast unit/API tests on `mvn test`. Maven Failsafe runs end-to-end browser tests on `mvn verify`. Two phases, two reports, one pom. CI shards by phase for honest fast-feedback.

AssertJ Fluent Assertions

assertThat(cart.totalItems()).isEqualTo(3) — readable, chainable, IDE-friendly. No more JUnit assertEquals boilerplate. AssertJ 3.26 with extra matchers for collections, strings, and Throwables.

Java Faker Data Factories

UserFactory, ProductFactory, CheckoutFactory — Java Faker 1.0.2-powered, seedable for repro. Plus JSON-backed canonical fixtures for tests that need exact values.

Allure Reporting

Every test annotated with @Story, @Severity, and Allure.step() lambdas. Auto-screenshot on failure via ScreenshotOnFailure extension. allure-junit5 + allure-rest-assured wired in. Run `mvn allure:report` for a full HTML report.

Selenium Manager Built In

No chromedriver or geckodriver pinning. No WebDriverManager dependency. Selenium 4.6+ ships with Selenium Manager — drivers resolve automatically on every machine and every CI runner.

GitHub Actions CI

Maven cache, JDK 17 setup, Surefire and Failsafe phases run separately, Allure results uploaded as artifact. Branch protection-ready status checks.

32 Tests Against SauceDemo

LoginTest, InventoryTest, CheckoutTest, ApiVsUiCartTest, InventoryApiTest — 32 tests run against saucedemo.com. Clone, `mvn verify`, you see a real test suite go green in under a minute.

Obsessive Documentation

README plus deep-dive guides in docs/: PAGE_OBJECT_PATTERN, WAITS_AND_FLAKE, FIXTURES, PARALLEL, CI_CD, TROUBLESHOOTING. Every package, helper, and CI step explained.

##What the code looks like

Real snippets from the kit. Idiomatic Java, fluent return-types, AssertJ.

src/main/java/com/automationframework/pages/LoginPage.javapackage com.automationframework.pages;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class LoginPage extends BasePage {
    private static final By USERNAME = By.cssSelector("[data-test='username']");
    private static final By PASSWORD = By.cssSelector("[data-test='password']");
    private static final By LOGIN_BTN = By.cssSelector("[data-test='login-button']");

    public LoginPage(WebDriver driver) { super(driver); }

    public InventoryPage login(String username, String password) {
        typeText(USERNAME, username);
        typeText(PASSWORD, password);
        safeClick(LOGIN_BTN);
        return new InventoryPage(driver);
    }
}
src/test/java/com/automationframework/e2e/CheckoutTest.java@Story("Checkout")
@Severity(SeverityLevel.CRITICAL)
class CheckoutTest extends BaseTest {
    @Test
    @LoggedIn
    void completesCheckoutEndToEnd() {
        Checkout checkout = CheckoutFactory.build();
        Confirmation confirmation = new InventoryPage(driver)
            .addToCart("sauce-labs-backpack")
            .goToCart()
            .checkout()
            .fillInformation(checkout)
            .finish();
        assertThat(confirmation.isComplete()).isTrue();
    }
}
.github/workflows/ci.ymlname: CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: '17'
          cache: maven
      - run: mvn -B verify -Dbrowser=chrome -Dheadless=true
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: allure-results
          path: target/allure-results

##Plug into Maven and GitHub Actions in under an hour

Where Selenium Pro Java sits next to building a Maven test project from scratch, other paid kits, and the Cypress / Playwright alternatives.

// vs. building a Maven test project from scratch

A blank Maven archetype gives you a pom.xml and an empty test class. This kit gives you the entire production framework AND the CI pipeline AND 32 real passing tests against SauceDemo. You start at week 4, not day 1.

// vs. other paid kits ($200-$500)

Same scope as paid kits priced 2-5x higher. No subscription, no per-seat pricing, no vendor lock-in. One-time $199, lifetime access, instant download.

// vs. Cypress / Playwright

Pick Selenium if your team is already on Selenium, if you need the W3C WebDriver standard, or if your shop is Java-first and JUnit is the test runner. Cypress Pro and Playwright Pro exist as sibling kits if your tooling points the other way.

// real-data module

##Test against your real data, not mocks

Drop in a connection string and pull random rows straight from your Postgres, MySQL, or MongoDB. Unicode names, apostrophes, NULLs, weird locales — all the production data that breaks mock-based tests gets exercised every run.

Drop-in. No fixtures to maintain.

  • One line to connect — Postgres, MySQL, or MongoDB
  • Random rows or filtered rows, with seeded reproducibility
  • Unicode + apostrophe + locale safety baked in
  • Identifier-injection guard on every table/column name
  • UI assertions that compare DOM text to the actual DB row
src/test/java/CheckoutTests.javaimport framework.services.realdata.RealData;

var db = RealData.postgres(System.getenv("DB_URL"));
db.connect();

// Pull a real customer with a real order from your DB
var customer = db.getRandomRows("customers",
    RandomQueryOptions.builder()
        .count(1)
        .where(Where.eq("tier", "enterprise"))
        .seed("checkout-fixture-1")  // reproducible across runs
        .build()
).get(0);

driver.get("/account/" + customer.get("id"));
assertEquals(customer.get("name"),
    driver.findElement(By.cssSelector("[data-test=name]")).getText());

Verified in CI every release

Every release runs the kit's full test suite against ephemeral Postgres, MySQL, and MongoDB containers in GitHub Actions. The proof image just below this section is the actual terminal output of that run — no edits, no rebuilds.

  • 30 round-trip tests against live DBs (10 per adapter)
  • Unicode round-trip: Müller, 山田, García, Lefèvre
  • Apostrophe round-trip: O'Hara
  • SQL identifier-injection guard test suite
  • Seeded reproducibility — same seed = same row, every run

See the proof image below ↓

##Proof it works

Real local run. The kit’s 32-test suite executed end-to-end against live saucedemo.com in Chrome headless — 6 API tests via Surefire and 26 e2e tests via Failsafe, all green. Re-runnable on any clone with mvn verify.

Last updated . Screenshot is a live terminal capture from the kit running on a fresh Maven 3.9 + JDK 17 setup.

##Questions QA engineers ask

Does it require a paid Selenium grid?

No. The kit ships with pure GitHub Actions CI — no Selenium Grid, Sauce Labs, or BrowserStack subscription required. The docs/CI_CD.md guide covers how to add a remote grid when you are ready.

What version of Selenium does this target?

Selenium 4.27. Selenium Manager (built into Selenium 4.6+) handles driver downloads automatically — no chromedriver/geckodriver pinning, no WebDriverManager dependency, ever.

JUnit 5 or TestNG?

JUnit 5 (Jupiter). TestNG is fine, but JUnit 5 is the modern default for new Java projects, and its extension model is cleaner than TestNG listeners. Migration to TestNG is straightforward if your shop requires it.

Maven or Gradle?

Maven. pom.xml is included and tested. Gradle conversion is mechanical — same dependencies, same plugin equivalents (surefire-plugin → test task, failsafe-plugin → integrationTest task).

Does it handle stale element references?

Yes. BasePage uses fluent waits with ExpectedConditions and retry-on-stale patterns. The full pattern is documented in docs/WAITS_AND_FLAKE.md.

Can I use this with Spring Boot, Quarkus, or Micronaut test setups?

Yes. The framework is application-agnostic — point the base URL system property at your local dev server and the same suite runs against it. No coupling to any application framework.

Does it work on macOS, Windows, and Linux?

Yes. CI matrix runs on Ubuntu; the framework itself runs on all three OSes. macOS Apple Silicon supported.

Why Selenium instead of Playwright?

Selenium 4 is the W3C WebDriver standard. Pick this kit if your team is already on Selenium, if you need cross-browser coverage across the full browser matrix, or if your shop is Java-first and JUnit is the test runner. Playwright Pro exists as a sibling kit if your tooling points the other way.

What Java version does it require?

Java 17. The pom.xml is configured with --release 17 so it compiles on any JDK 17 or newer (tested with JDK 21).

Is there support?

Yes. Email support is included with purchase — typical reply within 24 hours. You can also use the contact form on the site for any pre-sales questions.

// free sample

##See the architecture before you buy

An 11-page PDF walking through every directory, every pattern, and the exact flow from npx playwright test down to the system under test.

No spam. One-click unsubscribe.

Buy the Kit — $199 →
// instant download · production-ready · all sales final (it’s code)