Skip to main content

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

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

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:

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