Create a project
Generate a Maven project and run the sample.
Create a projectSHAFT Engine: open-source Java test automation framework
Run one Java project across web, mobile, API, database, and CLI. Keep native engine control, then connect Capture, Doctor, Heal, and MCP when they add evidence.
The user guide is the one path through this site.
Your first run
mvn testAdding SHAFT to an existing Maven project? Install SHAFT
Use evidence to keep engineers in control and give delivery leaders a reviewable release signal.
Evidence first
Run doctor_analyze_failed_allure or doctor_analyze_trace to classify evidence before reviewing a proposal.
classification: locator
evidence: failed Allure action and trace context
next step: review remediation guidance
Model choice remains with the MCP client. Tests remain ordinary Java. Proposals do not silently edit, approve, or merge.
For engineers, preserve native Java control. For delivery leaders, make release evidence easy to inspect. The quick start still documents the existing-project upgrade.
Generate a Maven project and run the sample.
Create a projectMove an existing Maven suite onto current SHAFT and run one test.
Upgrade a projectAdd the SHAFT skill pack to the agent you already use.
Install skillsOpen the SHAFT tool window and finish setup.
Use the pluginList SHAFT tools in Codex, Copilot, Claude, or another client.
Connect MCPRun one SHAFT command from the terminal.
Use shaft-cliRun the suite headlessly and keep the report.
Run in CIAdd web, API, mobile, database, or CLI to a project that already runs.
Add a surfaceInstall the Android, Appium, Grid, or browser profile you chose.
Install infrastructureInstall the project-local agent harness and read the result.
Install ChaosEngineStart with the native engine. Keep the evidence and Java suite in one place.
SHAFT.GUI.WebDriver driver = new SHAFT.GUI.WebDriver();
driver.browser().navigateToURL("https://example.com");
driver.element().click(By.id("submit"));
Native engine
Touch actions, device context, screenshots, and native trace evidence.
Read mobile guidedriver.touch().tap(SHAFT.GUI.Locator.accessibilityId("Views"));
driver.assertThat().element(By.id("screen")).exists().perform();
SHAFT.API api = new SHAFT.API(apiFixtureUrl);
api.get("users").performRequest();
Native engine
Connection target, query result, validation, and report evidence.
Read database guideSHAFT.DB database = new SHAFT.DB("jdbc:h2:mem:test");
ResultSet rows = database.executeSelectQuery("SELECT 1");
Native engine
Commands, captured output, and validation in the same report.
Read cli guideString output = SHAFT.CLI.terminal()
.performTerminalCommand("echo Hello SHAFT");
Generate a focused starter, examine the documentation, or follow development on GitHub.