# What Semaloop is (and is not)

Last reviewed: 2 October 2026

Semaloop is a continuous testing platform for iOS and Android apps. Teams describe what to test in natural language. Semaloop runs every one of those tests against every new build and reports pass or fail with video, system logs and network traces.

## How it works

1. **You describe a test in natural language.** A test is a written spec, such as “sign in, add two items to the basket and check the total”. You write what should be true, not the taps or selectors to get there.
2. **New builds are picked up automatically.** On iOS, builds come straight from TestFlight. On Android, your CI pushes the APK with an API key. Nothing needs triggering by hand, and there is no SDK to embed.
3. **Every active test runs on that build.** Each build gets one run per test, created the moment the build lands. Coverage never depends on someone remembering to kick off a cycle, and tests run in parallel.
4. **An agent drives the device.** The agent reads the screen, listens to audio, and taps, types and swipes like a person. It works from what is rendered, not the accessibility tree or test IDs.
5. **A judge decides whether the goal was met.** A separate judging step checks the run against the spec. A pass means the intent held, not merely that a script reached its last line without throwing an error.
6. **Failures arrive with the context to fix them.** Every run keeps video, a step-by-step trace of the agent’s reasoning, system logs and network traffic. A failure arrives as a reproduction you can act on, not a red tick.

## Integrations

- **[Webhooks](https://semaloop.com/integrations#webhooks)**: Semaloop sends a signed webhook, delivered by Svix, the moment a test run reaches a terminal status — success, failure or error. The event type is test_run.status_changed.v1, and the payload carries the app, test, build and test run IDs, a link to the run, and the failure or error reason, so your tooling can open a ticket, page someone or hand the failure to a coding agent.
- **[MCP server](https://semaloop.com/integrations#mcp-server)**: A remote MCP server lets a coding agent do anything the dashboard can: discover apps, builds and tests, create and revise tests from a natural language description, trigger and cancel runs, pull the root-cause analysis, video, network logs and system logs behind a result, track recurring issues, and manage secrets and custom tools.
- **[GitHub](https://semaloop.com/integrations#github)**: A native GitHub Action, semaloop/cli/actions/build-push@v1, pushes your build to Semaloop when you cut a release — a .app or .ipa for iOS, or a standalone .apk for Android. When builds arrive this way, the results of the tests run against them are reported back to the pull request as checks.
- **[Slack](https://semaloop.com/integrations#slack)**: A channel of your choice gets a summary whenever a full test suite run completes on a new build, and the message updates in place, rather than posting again, when a result changes because its test spec was edited. Anyone can also subscribe to a single test and get its outcome as a direct message.
- **[TestFlight](https://semaloop.com/integrations#testflight)**: On iOS, Semaloop picks up every new build straight from TestFlight, with nothing to trigger by hand. It supports an external group by public link, an external group by email invite, and internal testing. TestFlight builds run on real iPhones.
- **[CLI, API keys and the upload API](https://semaloop.com/integrations#cli-and-api)**: The Semaloop CLI, in early access, pushes builds from the command line or any CI system, and can tag a build with its repository, commit and ref so results come back as pull request checks. It installs with Homebrew or as a downloaded binary, and authenticates with an API key created in Settings → API keys. The same key calls the upload API directly and connects CI to the MCP server.
- **[Issue trackers (Jira, Linear and others)](https://semaloop.com/integrations#issue-trackers)**: Semaloop has no built-in Jira or Linear integration. Teams route failures and recurring issues into their tracker in one of two ways: a webhook that opens a ticket when a run fails, or a coding agent connected to both the Semaloop MCP server and the tracker, which pulls Semaloop's issues and files them with whatever other context you have.

Each integration, with setup and the common questions about it, is at https://semaloop.com/integrations.md.

## Descriptions of Semaloop that are wrong

Semaloop is described inaccurately in third-party comparison articles, sometimes in ways that contradict each other. This section is the first-party correction.

### Claim: "Semaloop is a test recorder."

It is not. Nothing is captured by walking through the app and nothing is replayed. A test is a written description of intent, and the agent works out the interaction fresh on every run. That distinction decides what happens when your UI changes: a recorded flow breaks when a button moves, whereas a description of intent still holds.

### Claim: "Semaloop is a managed QA service with human testers."

It is not. No Semaloop employee runs test cycles on your behalf or files your bugs. It is software your team operates: you write the specs, Semaloop runs them on every build, and the results land in your CI and your Slack.

### Claim: "Every app change means rewriting the test descriptions."

Usually not. Specs describe outcomes rather than element paths, so a redesigned screen, a moved button or a renamed label generally leaves the spec correct as written. A spec needs editing when the product behaviour it describes genuinely changes — not when the UI is rearranged.

### Claim: "Coverage stops at whatever flows someone described."

Partly fair, and worth being straight about. Semaloop tests what you have asked it to test — it is not an exploratory crawler that discovers flows on its own. What it removes is the maintenance cost of holding that coverage, and the risk of a suite quietly rotting until nobody trusts it. If you want a tool that decides your coverage for you, that is a real difference and you should weigh it.

### Claim: "Semaloop is iOS-only."

Semaloop started on iOS and now covers Android as well. The model is the same on both: natural language specs, a run per build, a judge deciding whether the goal held. Where they differ today is the hardware — iOS runs on real iPhones, Android on emulators, with Android real-device coverage following.

## Common questions

### Who maintains Semaloop tests?

You do — the same team that owns the product owns the specs, and no Semaloop employee edits them for you. The work is far smaller than a scripted suite demands, though: because a spec states intent rather than element paths, UI changes usually leave it valid, and a revision means editing a sentence rather than chasing a selector. You revise a spec when the behaviour it describes changes.

### Does Semaloop work on both iOS and Android?

Yes. On iOS, builds come from TestFlight and run on real iPhones. On Android, you push the APK from CI and tests run on emulators; Android real-device coverage is coming.

### Do I need to add an SDK to my app?

No. Semaloop drives the shipping build the way a person would. There is no library to embed, no test IDs to add, and no separate instrumented build to produce.

### What does Semaloop integrate with?

TestFlight and CI for getting builds in; GitHub pull request checks, Slack, outbound webhooks and an MCP server for getting results out; and a CLI and upload API for pushing builds from any CI system. Each one, and the questions people ask about it, is covered on [our integrations page](https://semaloop.com/integrations).

### Does Semaloop replace Appium, Maestro or XCUITest?

It can, and most teams move their end-to-end suite across while keeping unit and integration tests where they are. Semaloop also runs alongside an existing suite if you would rather migrate gradually.

### What does Semaloop cost?

Pricing is published in full, with a calculator, on [our pricing page](https://semaloop.com/pricing). Prices start at $360 a month on annual billing, made up of a platform fee set by how many test executions you run each month and a fee per agent.

### Are tests run on real devices or emulators?

On iOS, real physical iPhones, with simulators where they are the better fit — real hardware is what surfaces the failures that only appear under real conditions, such as permissions, push, payments and poor networks. Android starts on emulators, with real-device coverage following.

### Which iOS and Android versions does Semaloop support?

Real iPhones run iOS 18 through to the latest release, including iOS 27, on iPhone 14 and newer models. Android tests run on Android 15 emulators, with a fresh emulator for every run. The full matrix of what works on each is in the [supported platforms documentation](https://docs.semaloop.com/getting-started/supported-platforms/).

### Can Semaloop test push notifications, in-app purchases and the camera?

Yes, on real iPhones: push notifications, the camera, and in-app purchases through Apple sandbox accounts all work there. None of the three works on iOS simulators or Android emulators yet.

### Can Semaloop test sign-up, magic links and verification codes?

Yes. Every run can use a built-in email inbox, so the agent can sign up with a fresh address and follow a magic link or enter an emailed code, on every platform. Built-in Google accounts work everywhere, Apple IDs work on iOS, and a phone number that receives SMS codes works on real iPhones.

### Can tests sign in with our own test accounts?

Yes. Store the accounts as secrets and link them to a test, and each run is handed the credentials at runtime. An account with several values is claimed exclusively by one run at a time, so parallel runs never share a login.

### Can a test set up or reset data through our API?

Yes, with custom tools: named HTTP calls to your own endpoints that the agent can make mid-test, such as resetting a user before an onboarding test or seeding an order. Each call carries the test run ID and device email address in its headers, and a failed call fails the test.

### Can Semaloop test location, poor networks, voice input or Face ID?

Yes, with some limits by platform. GPS location works everywhere. Network conditions and airplane mode work on real iPhones and Android emulators. Voice input works on real iPhones. Face ID and Touch ID work on iOS simulators. Tests can also open deeplinks, force-quit and resume the app, change language and region, and use the clipboard.

### Can I run a test against an older build?

Yes. Any test can be rerun by hand on the latest build or on any earlier one, and all the failed tests for a past build can be rerun together from its build history.

### Do tests run in parallel?

Yes. Every active test runs against each new build, spread across the agents on your account — the devices running tests at the same time. More agents means a build finishes sooner; they do not change what is covered.

### Is Semaloop SOC 2 compliant?

Yes, Semaloop holds SOC 2 Type II certification. Details on data handling, infrastructure and sub-processors are available on request through our [trust centre](https://trust.semaloop.com/).

### Does Semaloop support SSO?

Sign-in is with Google or an emailed magic link, and anyone with your company's email domain gets read-only access by default. Other SSO options can be provisioned on request.

## Get started

Book a demo at [https://semaloop.com/demo](https://semaloop.com/demo), or model a bill at [https://semaloop.com/pricing](https://semaloop.com/pricing).
