Skip to main content

How SHAFT Extends Selenium WebDriver

SHAFT is built on top of Selenium WebDriver — not a replacement for it. Everything you know about Selenium still applies.

Full Selenium Compatibility

What SHAFT Adds on Top

CapabilityNative SeleniumWith SHAFT
Auto-waitManual explicit waits requiredBuilt-in intelligent synchronization
ReportingNone (bring your own)Allure reports with screenshots & video
Driver managementManual or Selenium ManagerFully automatic — local, remote, or Docker
Element interactionSeparate call per actionFluent chaining: .type().click().assertThat()
ConfigurationHard-coded in test codeExternalized via properties
Multi-platformWeb onlyWeb + Mobile + API + CLI + Database

Test Runner Support

SHAFT works with all three major Java test runners:

  • TestNG — Rich annotations, built-in parallel execution, data providers
  • JUnit 5 — Modern Java testing features, parameterized tests
  • Cucumber — BDD with Gherkin for non-technical stakeholders

Use any design pattern you prefer — Page Object Model, Fluent Design, Screenplay, or your own.

Direct Access to Underlying APIs

SHAFT never locks you in:

// Get a native Selenium WebDriver object at any point
WebDriver nativeDriver = driver.getDriver();

// Get a native Appium driver
AppiumDriver appiumDriver = (AppiumDriver) driver.getDriver();

// Get a native REST Assured Response object
Response response = api.getResponse();

No forced syntax. No limitations. Full control over your code.