Features and modules
The required shaft-engine artifact provides the public facade and core test
automation capabilities. Dependency-heavy integrations are optional.
Feature-to-module map
| Feature | Maven artifact |
|---|---|
| Web, mobile/Appium/Flutter, API, database, CLI, test data, accessibility, reporting, screenshots | shaft-engine |
| Direct BrowserStack WebDriver/Appium sessions and app upload | shaft-engine |
| BrowserStack SDK interception, multi-platform YAML, and SDK orchestration | shaft-browserstack |
| Appium Android/iOS driver-native recording | shaft-engine |
| Local non-headless desktop recording | shaft-video |
| Reference-image assertions and image-path touch actions | shaft-visual |
| SikuliX image-based desktop automation | shaft-sikulix |
| Deterministic explainable web element recovery | shaft-heal |
Screenshot highlighting, animated GIFs, and compareImageFolders(...) | shaft-engine |
See the upgrade guide for the exact method boundaries.
Use the BOM to align the core engine with any optional modules you add:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.github.shafthq</groupId>
<artifactId>shaft-bom</artifactId>
<version>${shaft.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.github.shafthq</groupId>
<artifactId>shaft-engine</artifactId>
</dependency>
<dependency>
<groupId>io.github.shafthq</groupId>
<artifactId>shaft-visual</artifactId>
</dependency>
<dependency>
<groupId>io.github.shafthq</groupId>
<artifactId>shaft-sikulix</artifactId>
</dependency>
</dependencies>
Smart Features
SHAFT's smart features target the Pillars of successful test automation: Scalability, Reliability, and Maintainability. Use that guide for the feature-to-pillar map; use this page for artifact and platform selection.
Supported Platforms
Browsers
| Linux | macOS | Windows | Android | iOS | |
|---|---|---|---|---|---|
| Google Chrome | ✅ | ✅ | ✅ | ✅ | ✅ |
| Microsoft Edge | ✅ | ✅ | ✅ | _ | _ |
| Mozilla Firefox | ✅ | ✅ | ✅ | _ | _ |
| Apple Safari | _ | ✅ | _ | _ | ✅ |
Apps
| Android | iOS | Windows | |
|---|---|---|---|
| Native | ✅ | ✅ | N/A |
| Hybrid | ✅ | ✅ | N/A |
| Flutter | ✅ | ✅ | N/A |
| WPF | N/A | N/A | ✅ |
Other
| API | Database | CLI | JSON | YAML | Excel | Property | |
|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Test Orchestration
| TestNG | JUnit | Cucumber |
|---|---|---|
| ✅ | ✅ | ✅ |
Underlying technology
SHAFT provides one facade over established automation projects while keeping heavy providers optional:
| Layer | Technology |
|---|---|
| Runtime and build | Java 25, Maven |
| Web | Selenium |
| Mobile | Appium |
| API | REST Assured |
| Test runners | TestNG, JUnit, Cucumber |
| Evidence | Allure Report |
| Optional visual providers | OpenCV, Applitools, Selenium Shutterbug |
| Distribution | Maven Central, GitHub Container Registry |
The facade keeps test code on one entry point while the underlying libraries do the specialized work:
SHAFT.GUI.WebDriver driver = new SHAFT.GUI.WebDriver();
driver.browser().navigateToURL("https://duckduckgo.com");
driver.element().type(By.name("q"), "SHAFT Engine");
driver.assertThat().browser().title().contains("DuckDuckGo");
driver.quit();
See Architecture for exact dependency boundaries.
Sponsors and adopters
SHAFT has received tooling or open-source support from:
Engineers responding to anonymous community surveys have reported using SHAFT within organizations including Vodafone, DXC Technology, Euronet, Solutions by STC, IDEMIA, GET Group, EFG Holding, Jahez, Incorta, Paymob, GIZA Systems, and others. These names are community-reported rather than audited customer endorsements — no organization is represented as guaranteeing or officially endorsing SHAFT unless linked as a sponsor above.
Use your own provider credentials through properties rather than hardcoding them in tests:
browserStack.userName=${BROWSERSTACK_USERNAME}
browserStack.accessKey=${BROWSERSTACK_ACCESS_KEY}
browserStack.browserstackAutomation=true