Natural language mobile app testing

Natural language mobile app testing means writing a test as a description of what should be true, and Semaloop is a tool that runs those descriptions on real iPhones and Android emulators against every build you ship.

What you get

  • Tests are written as descriptions of intent, with no selectors, test IDs or tap sequences
  • One description runs on iOS (real iPhones and simulators) and on Android emulators
  • No SDK to embed and no instrumented build: Semaloop drives the app you ship
  • Secrets and custom tools let a test sign in, reset data or seed an order before it starts
  • A coding agent can write and revise tests over the MCP server
  • A judging step checks the outcome against your description, not just that the last step ran

Write the outcome, not the taps

A scripted test is a list of instructions: tap this element, type into that one, wait, tap again. A Semaloop test is the sentence a product manager would write in a ticket. You state what the user is trying to do and what should be true afterwards, and the agent works out the taps fresh on every run.

The description below replaces a script that names five or six screens and buttons. It keeps the data, because the data defines a successful outcome, and drops everything about how the interface happens to be laid out today.

Reset the test account, then complete sign up with the newly reset account.
Add the first item in the catalogue to the basket, and complete checkout.
Verify the order confirmation screen shows the correct item and total.

What the agent does with a description

The agent looks at the screen the way a person does, using computer vision to understand what is rendered and a reasoning model to decide what to do next. It does not read the accessibility tree or depend on test IDs, so there is nothing to add to your app.

It can tap, type and swipe, and on the right devices it can also speak into the microphone, set a GPS location, throttle the network, follow a deeplink, read an emailed magic link or code, and force-quit and resume the app. A separate judging step then checks the run against your description. A success means the intent held, not merely that a script reached its last line.

Three habits that make a good description

These come from the writing tests guidance in the documentation, and they are most of what separates a test that stays useful from one that needs constant care.

  • Give the agent context, not assumptions. Saying 'log in with a premium account' only works if a secret, a seeded account or a setup step provides one.
  • Describe the goal, not the taps. Keep amounts, names and quantities. Drop button names, tap order and screen names.
  • Check something durable. Anchor to what stays on screen, such as an item in a list or an updated value, not a spinner or a toast that disappears.

Where tests come from

You can write a test in the dashboard, or ask a coding agent to write it. Connected to the Semaloop MCP server, an agent can list your existing tests, compare them with a pull request description and create a test for a flow that is not yet covered.

Semaloop tests what you ask it to test. It is not an exploratory crawler that discovers flows on its own, and it is not a recorder: nothing is captured by walking through the app, and nothing is replayed. That is the trade. You decide what matters, and the work of keeping that coverage alive is far smaller than maintaining a script.

For UK teams

Semaloop's team is based in London, and pricing is published in full at /pricing with a calculator, so a UK team can model the monthly bill before speaking to anyone.

Frequently asked questions

Last reviewed: 26 October 2026

What is natural language mobile app testing?

It is writing a mobile test as a description of the outcome you expect, such as 'add an item to the basket and check the total', and letting an AI agent work out the taps on a real device. In Semaloop the description is the test, and the agent re-interprets it on every run.

Do I need to write code to create a Semaloop test?

No. A test is a sentence or a short paragraph. Setup that depends on your backend, such as resetting an account, is done with a custom tool, which is a named HTTP call to your own endpoint that the agent can make during the test.

How is this different from record and replay?

A recorder captures one path through the app and replays it, so it breaks when that path changes. Semaloop stores a description of intent and works out the path on each run. Nothing is recorded and nothing is replayed.

How specific should a description be?

Specific about the data and the expected result, silent about the interface. 'Add three items and check the basket total is the sum of their prices' is a good description. 'Tap the second tab, then the plus button' is not.

Can a coding agent write the tests for me?

Yes. Over the MCP server, an agent can discover your apps and tests, write a test from a natural language description of a flow and revise it as the app changes. Creating or updating tests needs the write or admin organisation role.

Does natural language testing work on both iOS and Android?

Yes. The same kind of description runs on both. On iOS the agent works on real iPhones or simulators, and on Android it works on Android 15 emulators. What differs is which device capabilities are available, which the supported platforms page sets out.

See it against your own app