AssertumAssertum
Now with MCP support for AI agents

Native UI tests.
Generated by AI.
Actually stable.

Public release coming soon. Assertum will record your UI flows and generate production-ready native tests — complete with Screen Objects, Step functions and self-healing — for Android, Compose Multiplatform, iOS and Web.

Screen ObjectsStep FunctionsSelf-HealingMCP for AI AgentsAndroid · iOS · Web

Features

Beyond prompt-and-pray testing

Traditional AI-generated tests are brittle because they describe the UI from the outside. Assertum understands your app from within — and generates code you'd actually write yourself.

UI Recorder

Record user flows directly in your app. Assertum captures every interaction and maps it to real UI elements — no manual script writing needed.

New

MCP for AI Agents

Expose your full UI element tree to AI agents via MCP. Agents inspect, interact, and generate tests autonomously — far beyond screenshot-based approaches.

Page & Screen Objects

Assertum automatically generates Page Object / Screen Object classes — the industry standard pattern that keeps test logic clean, reusable and decoupled from implementation details.

Step Functions

High-level step functions wrap repeated interactions into named, composable building blocks. Tests become readable by humans, duplication drops to zero.

Self-Healing Tests

When your product UI changes, Assertum detects broken selectors and repairs them automatically — keeping your test suite green without manual intervention.

Best Practices by Default

Every generated test follows modern standards: semantic IDs over XPath, proper assertions, isolated test state. Code you'd be proud to review.

CreateListScreen.kt · generated by Assertum
// ✦ Assertum generates Screen Objects automaticallyobject CartScreen : Screen<CartScreen>() {    // <assertum-generated>    val checkoutButton = hasTestTag("checkout_button")    val promoCodeField = hasTestTag("promo_code_field")    val applyPromoButton = hasText("Apply")    val cartItem = hasTestTag("cart_item")    val totalAmount = hasTestTag("total_amount")     fun applyPromoCode(code: String) {        promoCodeField.inputText(code)        applyPromoButton.click()    }     fun proceedToCheckout() {        checkoutButton.click()    }     fun assertItemInCart(productName: String) {        cartItem.assertContainsText(productName)    }    // </assertum-generated>} // ✦ Step functions compose into readable test flows@Test fun checkoutWithPromoCode() {    ProductScreen {        addToCart(productName = "Wireless Headphones")    }    CartScreen {        assertItemInCart(productName = "Wireless Headphones")        applyPromoCode(code = "SAVE20")        proceedToCheckout()    }    OrderConfirmationScreen {        assertOrderPlaced(productName = "Wireless Headphones")    }}

Code quality

Tests written to
industry standards

Assertum doesn't just record clicks and replay them. It generates structured, maintainable test code following the same patterns senior QA engineers use: Page Objects, Step functions, and proper assertion layers.

1

Screen Objects — not raw selectors

Assertum generates a full Screen Object class per screen. UI selectors are defined once and reused everywhere — change an ID in one place, all tests adapt.

2

Step functions for human-readable flows

High-level steps wrap multi-action interactions into named functions. A QA engineer reads `fillListNameAndFirstTaskAndSave()` and knows exactly what it does — no deciphering needed.

3

Zero duplication

Step functions are composable building blocks shared across tests. Adding a new scenario means calling existing steps, not copy-pasting element lookups.

4

Lower agentic development costs

Native test code with proper abstractions is cheaper for AI agents to maintain. An agent updating a Screen Object fixes all dependent tests in one pass.

Maintenance

Tests that keep up
with your product

The biggest hidden cost in UI testing isn't writing tests — it's maintaining them as the product evolves. Assertum automates that too.

Self-Healing Tests

When your product UI changes — buttons move, IDs rename, flows restructure — Assertum detects the breakage and repairs selectors automatically. Your CI stays green without a manual fix cycle.

Lower Agentic Costs

Native tests with Screen Objects give AI agents a clean, structured surface to work with. An agent maintaining Assertum-generated tests spends far fewer tokens and iterations than working with raw, flat scripts.

AI-Assisted Maintenance

New feature? Assertum's MCP integration lets your AI agent record the new flow, extend the relevant Screen Object, and add step functions — a full test update in minutes, not days.

Human Override Always Available

Every self-healed change is shown as a diff. You approve, reject, or tune. Automation handles the toil; engineers stay in control.

Without Assertum

~40h / sprint

writing + fixing broken tests

With Assertum

< 2h / sprint

review + approve auto-generated tests

Native test structure + self-healing + AI agent integration = drastically lower cost per feature tested.

MCP Integration

Your AI agent can
see and control
your app

Most AI test generation tools work from screenshots — they're blind to the actual UI structure. Assertum exposes a full semantic element tree via the Model Context Protocol, giving AI agents direct access to element IDs, accessibility roles, text content, and interaction state.

The result: tests that understand what the UI does, not just what it looks like. No more broken selectors after a redesign.

Read UI element tree

Full semantic hierarchy with roles, labels, and states

Interact with UI

Tap, type, scroll — agent controls the app directly

Generate test assertions

AI verifies app state and writes assertions automatically

Multi-step flows

Chain complex interactions across multiple screens

MCP server running
agent>assertum.getUITree(screen="CheckoutScreen")
└ LinearLayout id="root"
├ TextView id="title" text="Your Cart"
├ RecyclerView id="cart_items"
└ Button id="checkout_btn" enabled=true
agent>assertum.tap(id="checkout_btn")
✓ Tapped. Screen navigated to "PaymentScreen"
agent>assertum.generateTest()
✓ Generated: checkoutFlowTest.kt
4 steps · 7 assertions · 0 flaky selectors

Claude / Cursor / Copilot

compatible

< 3s

Average test generation time

0

Brittle XPath selectors

100%

Native test code ownership

3

Platforms at launch

Platforms

One tool, every platform

🤖

Android

Ultron Framework

Compose Multiplatform

Ultron Framework

🌐

Web

Playwright · TypeScript / Python

Roadmap

Coming soon

Assertum is rolling out platform by platform. Here's the order in which support lands across mobile, web and the cloud backend.

Android

Android

Native UI tests for Android via Ultron — Espresso & UIAutomator under the hood.

Compose Multiplatform

Compose Multiplatform

Semantic-tree testing for Compose UI on Android and Desktop, generated by Assertum.

Web

Web

Playwright tests in TypeScript or Python — the same recorder, web targets.

iOS

iOS

XCTest & XCUITest support landing right after Android goes GA.

Backend

Backend

Cloud sync, team workspaces and a device farm to run generated suites at scale.

Public release
coming soon.

Be the first to try Assertum. Join the waitlist on Telegram for release updates and early-access invites.