Skip to main content

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

ArtifactAdd it when
shaft-engineThe project needs web, mobile, API, database, CLI actions, test data, accessibility, reporting, or screenshots.
shaft-pilot-coreAn integration needs provider-neutral Pilot contracts and local-agent orchestration.
shaft-captureThe project records browser/API flows and generates reviewable replay code.
shaft-doctorThe project analyzes Allure evidence and failure traces offline.
shaft-aiPilot needs optional direct model-provider adapters.
shaft-healWeb tests need deterministic, explainable locator recovery.
shaft-mcpAn MCP client needs SHAFT browser, Capture, Doctor, healer, or guide-search tools.
shaft-cliScripts or CI need repeatable one-shot access to the SHAFT tool catalog.
shaft-browserstackTests need BrowserStack SDK interception, YAML expansion, or SDK orchestration.
shaft-videoLocal non-headless desktop runs need FFmpeg video recording.
shaft-visualTests need OpenCV, Applitools Eyes, Shutterbug, or reference-image behavior.
shaft-sikulixDesktop tests need SikuliX image-based automation.
shaft-bomA 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

FeatureMaven artifact
Web, mobile/Appium/Flutter, API, database, CLI, test data, accessibility, reporting, screenshotsshaft-engine
Direct BrowserStack WebDriver/Appium sessions and app uploadshaft-engine
BrowserStack SDK interception, multi-platform YAML, and SDK orchestrationshaft-browserstack
Appium Android/iOS driver-native recordingshaft-engine
Local non-headless desktop recordingshaft-video
Reference-image assertions and image-path touch actionsshaft-visual
Visible-text actions and OCR assertionsshaft-ocr
SikuliX image-based desktop automationshaft-sikulix
Deterministic explainable web element recoveryshaft-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:

pom.xml
<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

LinuxmacOSWindowsAndroidiOS
Google Chrome
Microsoft Edge__
Mozilla Firefox__
Apple Safari___

Apps

AndroidiOSWindows
NativeN/A
HybridN/A
FlutterN/A
WPFN/AN/A

Other

APIDatabaseCLIPDFJSONYAMLExcelProperty

Test Orchestration

TestNGJUnitCucumber

Underlying technology

SHAFT provides one facade over established automation projects while keeping heavy providers optional:

LayerTechnology
Runtime and buildJava 25, Maven
WebSelenium
MobileAppium
APIREST Assured
Test runnersTestNG, JUnit, Cucumber
EvidenceAllure Report
Optional visual providersOpenCV, Applitools, Selenium Shutterbug
DistributionMaven 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:

src/main/resources/properties/browserStack.properties
browserStack.userName=${BROWSERSTACK_USERNAME}
browserStack.accessKey=${BROWSERSTACK_ACCESS_KEY}
browserStack.browserstackAutomation=true