Record Swing UI tests. A coding agent does the work
Java 8 to 25 · macOS, Linux and Windows · Apache-2.0 (Limits)
What it does
Section titled “What it does”It connects three things that usually happen apart:
- A person shows how the app should behave, in the app itself, or describes it in words.
- A coding agent turns that into a named, repeatable test.
- Developers run the same test locally and in CI, and move to an ordinary Java test when a check needs more.
Records UI tests, from what you show or what you say
Press ● Record in the palette and use the app; Check adds a check of what you see. Or tell a coding agent the test in words and it drives the live app. Either way the agent names each step in plain words and saves a recorded test: a JSON file in
uitest/with nothing to compile.Record a test by showing it · Record together with your agent
Replays them, and lets you read and fix them
The steps are sentences you can read, rename, replay from any point or redo. Press ▶ Run in the app, ask the agent, or run the whole
uitest/folder from Maven and in CI under a virtual display. A failing step says what it found.Asks in the app when it is not sure
When a step could mean two things, the agent boxes the candidates in the app, numbered, and you confirm one or say none of these. The answer goes into the recording, so the test is right the first time.
Writes a Java test when you need more
A recorded test holds exact values and checks what is on screen. When a test must read a value that changes from run to run, such as the new order's number, or check a database, files or logs, the agent writes a JUnit 5
@UiTestclass instead, with the same driving API. The two kinds do not mix.Drives the real app, from a shell or over MCP
One jar attached with
-javaagent:clicks, types and reads the live UI from inside the app's JVM: no changes to the app, and input goes into the app's own event queue, so your mouse and keyboard stay yours. A coding agent calls it one tool per step, from a shell (java -jar … <tool>) or over MCP on loopback. Skills teach it the workflow.
Try it in two minutes
Section titled “Try it in two minutes”Download Order Desk, a small Swing order-entry app with the agent built in. Nothing to build.
-
Download it for Mac with Apple Silicon, Mac with Intel, Windows or Linux and any Java 8+, and open it (first launch).
-
Run a recorded test: press Load recorded test… in the bar at the bottom, pick
place-order, press ▶ Run. Order Desk comes with three; the app takes the order by itself and checks every total.
-
Connect your agent while the app runs:
Terminal window claude mcp add --transport http order-desk http://127.0.0.1:8770/mcp -
Ask it: "Create a new order for Ada Shop Ltd with 3 packs of A4 paper and 10 black gel pens, check out, and tell me the order number." If it asks for a PO number, give it any.
-
Ask again. Now it knows the screens and sends the whole order in one
batchcall, in about half a second. Ask it to save the steps as a recorded test, and what it learned to its project notes.
Then take the tour, or open Order Desk's source in IntelliJ and record into the project: in IntelliJ, with Claude Code.
Good to know
Section titled “Good to know”- No changes to the app. Add
-javaagent:. Java 8 to 25, macOS, Linux and Windows. Install - Your mouse and keyboard stay yours. Input goes into the app's own event queue; other windows can be in front.
- Waits for the app, not a timer. Every step lets the app settle; checks retry until they hold. Waiting
- Finds what a person sees. Labels, button text, column headers and cell text, not pixel positions. Targets
- Exact values, your data. A recorded test checks what is on screen, such as the cart's Total
€31.32. It creates the data it checks or uses data you know exists. - Built for agents. An element tree instead of screenshots, errors that list the near misses, and three skills that teach the workflow. Skills
- Local only. It listens on
127.0.0.1, refuses any other address, and no tool runs commands, loads a class or evaluates code. Security - Your app's words (optional). A small plugin adds reset, login and named steps such as "Add Gel pen, black to the cart". Plugin vocabulary
- Early.
0.1.0-SNAPSHOT, not on Maven Central yet; expect changes before 1.0. A recorded test file carries its format version, and the agent refuses one it cannot read instead of guessing. Limits · Roadmap · Recorded test format
See it run
Section titled “See it run”The demo playing above is Order Desk's recorded test uitest/cart-totals.json: it fills Ada's cart and checks its
totals. Below, Order Desk's two Java tests run from IntelliJ against the same app. All of them were recorded by an
agent and run in CI.

Order Desk's CI runs its recorded tests on every change, on Linux under a virtual display (the run):
Apache-2.0 · A Kormcrete project · For coding agents:llms.txt, llms-full.txt