Every change,
fully tested
in 15 minutes
We run your full Android and iOS UI test suite on every change, from a pull request or your laptop, across as many devices as it takes. Flaky tests are retried automatically, every failure comes back with video and logs, and there is no device lab to own or run.
50 free device hours · No credit card required
Trusted by mobile teams at
ROI
See the ROI on your own numbers
See what your current setup costs in engineering time and infrastructure, and what Marathon Cloud would cost instead. Conservative defaults, every assumption editable.
A directional estimate, not an accounting statement. Every assumption is editable above.
What teams say
Tinder went from 3-hour test cycles to 20 minutes
1,400 Android and 1,300 iOS UI tests a day. Thirty self-hosted emulators and sixteen Mac instances replaced with on-demand devices; setup took each engineer a few minutes.
Read the case studyThe floor here was outside the tests: distributing multi-gigabyte builds to every device takes time the tests themselves do not.
“We use it as a solution for flaky tests. We haven't had a PR fail in ages due to a flaky UI test that wasn't an actual failure.”
“I'm genuinely impressed with how fast the test runs are — the parallelization is incredibly effective. The platform has been stable overall, and our engineers are really happy with the experience.”
“Marathon Cloud streamlines test execution, cutting overhead and allowing us to focus on development. Thanks to its highly scalable infrastructure, we've rapidly expanded our test coverage.”
“The most valuable aspect of Marathon Labs for us is the excellent support — it's great that we can simply reach out and always get help when needed.”
Pricing
Pay for device time, nothing else
One rate, metered by the hour a device is actually running your tests. No seats, no parallel-slot licences, no minimum.
A 300-test suite uses about 3.8 device-hours per run, so one full check of one change costs roughly $8 on Android. Three checks per engineer per day:
Billing runs from the first test starting to the last test finishing on each device, to the second. Device boot, app install and artifact upload are not billed. Retries are billed as normal device time: a retry is one test on one device, not a rerun of the job. iOS runs are billed at $3 per device-hour.
Public list prices per device-hour.
Real devices cost more per hour, and they earn it for hardware you cannot emulate yet: a physical camera, fingerprint and face sensors, NFC. For the rest of your UI suite, virtual devices give the same verdict faster and for less. Firebase virtual devices are cheaper per hour; what you pay for here is finishing in 15 minutes on however many devices that takes, and retrying single tests instead of whole jobs.
List prices as of September 2026.
How it works
Connected in an afternoon, running on every change after that
Your engineers add one line to the build
The build pipeline hands us the app and its tests, the same files it already produces. Nothing to install, no devices to configure.
See the command
marathon-cloud run android \
--application app.apk \
--test-application appTest.apkWe supply and scale the devices
From your test history we work out how many devices it takes to finish in under 15 minutes, spin them up, and tear them down when the run ends. You never buy or maintain one.
Every change gets a verdict with evidence
Pass or fail, back in the pull request before anyone merges. Failures come with video, logs and screenshots so they are fixed in minutes, not argued about.
What your team gets
Fewer bugs reach customers, and nobody waits for the test run
Every change is fully tested before it ships, in a fixed time budget, without a device lab to run.
A fixed 15-minute test gate
Suites of 50 or 5,000 tests finish in under 15 minutes. We add devices to fit your suite; the time budget never moves.
No device lab to buy or staff
No emulator hosts, no Mac minis, no engineer keeping them alive. Devices appear for the run and are gone afterwards.
False alarms handled automatically
A flaky test is re-run on a fresh device on its own. Nobody restarts the whole job, and a green result means green.
Regressions caught before merge
The full suite runs on every change, not nightly. Problems are found while the author still has the context to fix them.
Evidence, not arguments
Every failure comes with video, logs and screenshots from the device. Reports in Allure, JUnit and xcresult, so they drop into the dashboards you already use.
Works with the tests you have
Espresso, UI Automator, Kakao, Kaspresso and Cucumber on Android; XCTest, XCUITest and KIF on iOS; Patrol for Flutter; Maestro on both. Same command, same report, same retry policy on both platforms, and no rewrites.
Who you are buying from
The team behind Marathon, the open-source mobile test runner
Marathon has been open source since 2018 and runs mobile tests at some of the largest consumer apps in the world. Marathon Cloud, launched in 2022, is the hosted version: the same engine, with the devices, scaling and retries handled for you, and no lock-in because the runner stays open source. MarathonLabs, the trading name of TestWise Pte. Ltd. registered in Singapore, is bootstrapped and profitable, so the product is funded by customers rather than by a runway. Every customer has renewed, every year since launch. Your tests stay in the frameworks you already use, and the open-source runner is there if you ever need to bring execution back in-house.
Security and data
App binaries are kept for 7 days and test results for 30 days, then permanently deleted. Every run gets freshly provisioned devices that are destroyed afterwards, and nothing is shared between customers. Runs are processed across several cloud providers and regions, sized to the load. Enterprise plans add SAML SSO and IP allowlisting.
Support from the people who built it
Questions go to the engineers who wrote the runner, and they answer in minutes, not days. That includes help with your testing strategy, not just the buttons.
Questions
What buyers ask before they say yes
Are these real devices?
No. Marathon Cloud runs Android emulators and iOS simulators, provisioned fresh for every run and destroyed when it ends. That is what makes "any suite in 15 minutes" and pay-per-second pricing possible, and it is the same environment your engineers already use to run UI tests locally. Physical hardware still matters for what cannot be emulated yet: a real camera, fingerprint and face sensors, NFC and Bluetooth radios, manufacturer skins, and real-hardware performance numbers. Most teams keep a small physical lab for those and move the rest to Marathon Cloud.
Is it always under 15 minutes?
For most suites, yes. We add devices until the run is as parallel as it can be, so the number of tests is not the limit. The 15 minutes comes from the defaults: a single test may take up to 5 minutes, and a failing test gets two more attempts, so the slowest path is three attempts of five minutes. Three things stretch it: a concurrency cap set because your backend cannot take the load, a custom retry policy, and very large binaries. Distributing a 100 MB app to every device is quick; a 4 GB one is not.
Retries and timeoutsWhich OS versions and devices are covered?
Android 8 and newer across phone, watch and TV form factors, with plain AOSP, Google APIs or Play Store system images. On iOS, the three latest major versions on current iPhone models; new major releases are added once Apple has stabilised them. The live list is one command away in the CLI.
Do our engineers have to rewrite the tests?
No. Marathon Cloud runs what you already have: Espresso, UI Automator, Kakao and Kaspresso, Cucumber and Patrol on Android; XCTest, XCUITest and KIF on iOS; Maestro flows on both. You upload the same app and test binaries your build already produces.
How does it fit into our CI?
There is an official GitHub Action, and a single-binary CLI for every other CI system. One step in the pipeline uploads the build, waits for the verdict and pulls the report back. Nothing to host.
CI/CD integrationWhat exactly is a device-hour?
Time on a virtual device from the moment the first test starts until the last one finishes, billed to the second. Device boot, app installation and artifact upload are not billed. A retry of a flaky test is billed as normal test time for that one test; the run is never restarted.
How billing worksWhat happens with flaky tests?
A test that fails is re-run on its own, on a fresh device, within the same run. The rest of the suite is untouched, so a single flaky test never costs your team another full cycle, and a green result means the code is green.
RetriesWhere does our data go, and for how long?
Test runs are processed across several cloud providers and regions, sized to the spiky load of CI, and everything travels over HTTPS. App binaries are kept for 7 days and test results for 30 days, then permanently deleted. Every run gets freshly provisioned devices that are destroyed afterwards; nothing is shared between customers. Enterprise organisations can add SAML SSO and IP allowlisting. Marathon Cloud does not hold a SOC 2 certification today; if your procurement needs one, talk to us before you start.
Security and dataHow long until we are running?
Minutes per engineer. There is no infrastructure to provision, so the first run is an upload and a command. Tinder reported two to three minutes of setup per engineer.
Start with 50 free
device hours
Run your real suite today. No credit card, no sales call required.