Java 21 • Open Source

Automate Everything
From One Framework

Browser, Desktop & API automation powered by Chrome DevTools Protocol, Windows UI Automation, and SikuliX — with MCP servers for AI-driven control.

7
Packages
30+
Classes
0
WebDriver Needed
2
MCP Servers

Everything You Need to Automate

A unified toolkit covering browsers, desktops, APIs, and AI — no WebDriver required.

🌐

Browser Automation (CDP)

Direct Chrome DevTools Protocol over WebSocket. Navigate, click, type, screenshot — all without Selenium or WebDriver binaries.

🧩

Isolated Browser Contexts

Each test gets its own BrowserContext with separate cookies, storage, and cache — enabling safe parallel execution on a single browser instance.

🎥

Video Recording

CDP-based viewport recording to MJPEG AVI. Works in headless mode. Auto-attaches to reports on failure.

🤖

MCP Servers

JSON-RPC 2.0 stdio servers let AI tools like Claude Desktop and Cursor drive browsers and desktops programmatically.

🖥️

Desktop Automation (W3C)

Windows UI Automation via a local W3C WebDriver server and client. Pure Java solution using JNA with COM virtual-table calls.

📊

Playwright Trace Viewer

Detailed browser test execution tracing. Captures screenshots before/after actions, console logs, network requests, and test source code snippets.

👁️

Image-Based Automation

SikuliX pattern matching for visual element interaction. Page Object annotation support with @FindPatternBy.

🔗

REST API Client

Apache HttpClient wrapper for GET, POST, PUT, DELETE with response parsing. Network interception via CDP's Fetch domain.

🧠

AI-Powered Locators

Natural-language element finding via Ollama LLM integration. Describe what you want, the AI finds it in the DOM.

👁️‍🗨️

Visual Assertions

Automated image comparison for visual regression testing. Automatically creates baselines on first run and generates diff images on failure.

🗄️

MongoDB Integration

Full CRUD operations (insert, find, update, delete, aggregation) with connection pooling, authentication support, and automatic resource management.

💾

SQL DB Integration

Full CRUD operations (insert, batch insert, find, update, delete, count) and generic parameterized SQL executions for JDBC-compliant databases (H2, MySQL, PostgreSQL, etc.).

🛠️

Rich Utilities

JSON (Jackson), Excel (POI), PDF, file ops, checksums, logging (Log4j 2), and ExtentReports / ChainTest integration.

📈

JMeter Load Testing

Programmatic execution of JMeter .jmx test plans via jmeter-java-dsl. Generate detailed HTML dashboards and raw JTL files directly within TestNG tests.

Modular Package Design

Seven focused packages, each with a clear responsibility.

🌐

cdphandler

CDP browser engine, driver, elements, WebSocket client, API interception

🤖

mcp

Browser & Sikuli MCP stdio servers, tool dispatchers, JSON-RPC

🖥️

w3c

JNA-based W3C WebDriver server/client, window and element management, and control actions

👁️

sikuli

SikuliX actions, screen factory, Page Object annotations

🔗

apachehttpclient

REST API executor and response wrapper

🛠️

tools

JSON, Excel, PDF, logging, reporting, video recording, MongoDB & SQL database utilities, and file operations

📱

apps

Sample page objects (Calculator) demonstrating framework usage

Up and Running in Minutes

🌐 Zero-Config Browser Automation

Launch Chrome automatically and get a ready-to-use driver. No WebDriver binary downloads, no path configuration — just call launchAndConnect() and start automating.

Wheel3 auto-discovers Chrome or Edge on your system, launches it with remote debugging on a free port, and returns a fully initialized driver.

BrowserTest.java
// Launch Chrome automatically
ICdpDriver driver = CdpHandler.launchAndConnect();
driver.get("https://google.com");

// Find and interact with elements
ICdpElement searchBox = driver.findElement(
    CdpBy.cssSelector("input[name='q']")
);
searchBox.sendKeys("Wheel3 automation");

// Take a screenshot
String base64 = driver.captureScreenshot();

driver.close();

⚡ Parallel Testing with Isolation

Extend CdpTestBase and each test automatically gets its own BrowserContext — zero shared state, fully parallel-safe. One browser process, many isolated sessions.

MyTest.java
public class MyTest extends CdpTestBase {
    @Test
    public void testIsolated() {
        getDriver().get("https://example.com");
        ICdpElement heading =
            getDriver().findElement(
                CdpBy.cssSelector("h1")
            );
        Assert.assertNotNull(heading.getText());
    }
}

🖥️ Desktop Automation (W3C)

Control native Windows applications using a local W3C WebDriver server protocol. Find windows by title, interact with controls by automation ID, class name, or name — uses COM virtual-table calls via JNA.

DesktopTest.java
W3CDriver desktop =
    W3CDriver.getInstance();
W3CWindow notepad =
    desktop.getWindow("Untitled - Notepad");

W3CBy editArea =
    W3CBy.ByAutomationId("edit", "15");
W3CElement editor =
    notepad.findElement(editArea);
editor.setEditBoxValue("Hello from Wheel3!");

notepad.maximizeWindow();
notepad.closeWindow();

📊 Playwright-Like Trace Viewer

Record browser operations into a .zip file containing interactive HTML, screenshots before/after actions, console logs, network request details, and source code context.

TraceTest.java
File traceZip = new File("target/traces/test_trace.zip");
driver.startTracing(traceZip);

driver.get("https://example.com");
ICdpElement link = driver.findElement(CdpBy.cssSelector("a"));
link.click();

driver.stopTracing();

🗄️ MongoDB CRUD Operations

Connect to MongoDB with automatic credential handling, insert and query documents, leverage aggregation pipelines, and rely on connection pooling for efficient resource management.

MongoDBTest.java
// Connect to MongoDB
MongoDBUtilities mongo = new MongoDBUtilities(
    "mongodb://localhost:27017"
);

// Insert a document
mongo.insertOne("myDb", "users",
    Map.of("name", "Alice", "age", 30)
);

// Query documents
List<Document> results = mongo.find(
    "myDb", "users",
    Filters.eq("age", 30)
);

// Update and close
mongo.updateOne("myDb", "users",
    Filters.eq("name", "Alice"),
    Updates.set("age", 31)
);
mongo.close();

💾 SQL Database Operations

Connect to any SQL database via JDBC connection strings. Perform CRUD operations using Java maps and run custom parameterized prepared statements with automatic resource cleanup.

SQLTest.java
// Connect to SQL DB
SQLDatabaseUtilities db = new SQLDatabaseUtilities(
    "jdbc:h2:mem:testdb", "sa", ""
);

// Insert a row
db.insertOne("users",
    Map.of("name", "Alice", "age", 30, "status", "active")
);

// Query rows
List<Map<String, Object>> results = db.find(
    "users", "age = ?", 30
);

// Run prepared SQL execution
db.executeUpdate(
    "UPDATE users SET status = ? WHERE name = ?",
    "inactive", "Alice"
);
db.close();

📈 JMeter Load Testing

Load and execute existing JMeter .jmx files programmatically from TestNG tests. Generates detailed HTML dashboards and raw JTL files dynamically in the build directory, and asserts success to fail CI runs on performance failures.

JMeterRunnerTest.java
// Execute the JMX file and fail TestNG test on errors
TestPlanStats stats = JMeterRunner.run("src/test/resources/perf-test.jmx");

// Read statistical summaries
long totalRequests = stats.overall().samplesCount();
long failedRequests = stats.overall().errorsCount();
Duration p99 = stats.overall().sampleTimePercentile99();

Built on Proven Technologies

CategoryLibraryVersion
LanguageJava21
Browser AutomationChrome DevTools ProtocolDirect WebSocket
Desktop AutomationJNA Windows UI Automation5.14.0
Image AutomationSikuliX2.0.5
Visual AssertionsImage Comparison4.4.0
HTTP ClientOkHttp5.3.2
REST ClientApache HttpClient4.5.14
JMeter Automationjmeter-java-dsl2.2
Database (NoSQL)MongoDB Driver (Sync)5.8.0
Database (SQL)H2 Database (test scope)2.4.240
JSONJackson2.22.0
XML / HTMLdom4j2.2.0
LoggingLog4j 22.26.0
ReportingExtentReports + ChainTest5.1.2 / 1.0.12
TestingTestNG7.12.0
BuildMaven + GitHub ActionsCI/CD

Get Started Now

Install from GitHub Packages or build from source.

<repositories>
  <repository>
    <id>github</id>
    <url>https://maven.pkg.github.com/aji4032/Wheel3</url>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>io.github.aji4032</groupId>
    <artifactId>Wheel3</artifactId>
    <version>LATEST</version>
  </dependency>
</dependencies>
git clone https://github.com/aji4032/Wheel3.git
cd Wheel3
mvn clean package

Requirements

Java 21+Maven 3.8+Windows (for desktop features) • Chromium browser (for CDP features)