Features and modules
The required shaft-engine artifact provides the public facade and core test
automation capabilities. Add optional artifacts only when a project uses the
capability they own.
Published artifact map
| Artifact | Add it when |
|---|---|
shaft-engine | The project needs web, mobile, API, database, CLI actions, test data, accessibility, reporting, or screenshots. |
shaft-pilot-core | An integration needs provider-neutral Pilot contracts and local-agent orchestration. |
shaft-capture | The project records browser/API flows and generates reviewable replay code. |
shaft-doctor | The project analyzes Allure evidence and failure traces offline. |
shaft-ai | Pilot needs optional direct model-provider adapters. |
shaft-heal | Web tests need deterministic, explainable locator recovery. |
shaft-mcp | An MCP client needs SHAFT browser, Capture, Doctor, healer, or guide-search tools. |
shaft-cli | Scripts or CI need repeatable one-shot access to the SHAFT tool catalog. |
shaft-browserstack | Tests need BrowserStack SDK interception, YAML expansion, or SDK orchestration. |
shaft-video | Local non-headless desktop runs need FFmpeg video recording. |
shaft-visual | Tests need OpenCV, Applitools Eyes, Shutterbug, or reference-image behavior. |
shaft-sikulix | Desktop tests need SikuliX image-based automation. |
shaft-bom | A project uses more than one published SHAFT library and needs aligned versions. |
shaft-capture-proxy supports Capture's isolated proxy runtime and is not the
normal consumer entry point. report-aggregate builds reactor-wide reports
but is not deployed as a consumer dependency. legacy-shaft-engine is a
relocation POM for older coordinates, not a new-project dependency.
shaft-ocr is present in SHAFT_ENGINE source as an unreleased preview. It is
not part of the current published BOM; wait for a containing release before
adding it as a project dependency.
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 |
| Visible-text actions and OCR assertions | shaft-ocr |
| 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.
Project support and adoption
Tooling and open-source program support
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.
Fund continued maintenance
SHAFT remains free under the MIT License. Financial support helps fund release maintenance, documentation, and public infrastructure through GitHub Sponsors.
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