Automate tests in
months seconds.

We received your invite request! For any questions, shoot us a note at contact@bytesalt.com.
NOW SUPPORTS MOBILE APPS
iOS Android
Time spent on automation

How Runpad works

Steps
Create a test
Just use your app as usual. Runpad remembers your actions.
Run on any device
Run the test on devices of any shape or size.
Debug failures easily
No more wasted time troubleshooting failing tests.

Simple, powerful.

Easy to maintain
Stop wasting engineering time on test maintenance
Easy maintenance
Integrate your CI
Works with your CI provider
CI Integration
Re-usable data
Scale your tests with re-usable variables
Data-driven tests
Add code anywhere
Support advanced use cases with scripting
Add code anywhere

FAQs

What mobile app frameworks does Runpad support? Toggle icon
Runpad supports most mobile app frameworks, including native iOS, native Android, React Native, and Flutter.
What CI tools does Runpad work with? Toggle icon
Runpad works with most CI tools. You can simply add the Runpad CLI command as a step to your CI pipeline. Learn more here.
Does Runpad scale for complex apps? Toggle icon
Although Runpad offers simplicity, it is designed to handle complexity. You can add custom code anywhere in your test, call APIs, re-use data using variables, and support dynamic UI with custom element selectors.
How does Runpad make maintenance easier in the long run? Toggle icon
While Runpad makes test creation super fast, its true value is in long-term maintenance. When a test run fails, Runpad provides a visual comparison of the expected and actual results, along with video recordings and device logs, making it easy to identify the root cause of the failure. Additionally, updating tests due to UI changes is effortless - you can modify existing tests by adding or removing screens at any point, without having to re-record the entire test.
How does element selection work? Toggle icon
When you select an element, Runpad scans the page source and automatically generates the most suitable selector, based on industry best practices. For stable tests, the algorithm prefers identifying an element using its Accessibility Identifier. In cases where an Accessibility Identifier is unavailable, it falls back to an XPath based on the element hierarchy, accompanied with a warning to add an Accessibility Identifier for improved stability. If you need to, you have full control to edit the selector to your liking. Read more here.