Waldo sessions now support scripting! – Learn more

iOS Automated Testing Tools: A Guide

Suleiman Abubakar Sadeeq
Suleiman Abubakar Sadeeq
iOS Automated Testing Tools: A Guide
December 13, 2022
min read

Testing has always been a crucial aspect of the software development process. At this stage, software developers validate whether what they developed meets the expected outcome. In this post, we're going to discuss automated testing for iOS and some of the best tools you can use to carry out automation testing for your iOS application.

What Is iOS Automation Testing?

Automation testing, as the name implies, is an automated way of testing applications. A QA engineer or developer writes a set of test scripts, which a testing tool then runs, providing results and comparing those results to the initial app test results before production. Automation tests can run at any given time.

Unlike Android, iOS is a closed operating system that has only a single device bound to it. Carrying out manual tests on it might seem doable—at least until you have to test for UI display on various screen sizes, or even check for compatibility with the new iOS SDK for new and older versions. To make this happen manually, you'll need to purchase a bunch of devices with different OS versions. That will not only be very expensive but also take a long time to finish because your testing staff will have to use a physical device or an emulator to perform this task manually. Another issue is scalability when your application starts expanding.

5 iOS Automation Testing Tools You Can Use

A better way to test your iOS apps is through automated testing tools. Let's look at five popular options:

With cross-platform capabilities, you're able to write tests against both application platforms (iOS and Android) with the same test scripts


Although Appium is not an iOS-specific automation testing framework, it's a very popular open-source framework that enables testing for native, hybrid, PWA, and desktop applications. It uses the JSONWireProtocol to engage with iOS applications.

With cross-platform capabilities, you're able to write tests against both application platforms (iOS and Android) with the same test scripts. These test scripts will work just fine regardless of which platform it was intended for. Appium also supports multiple programming languages for scripting tests, unlike other platform-specific automation testing frameworks that are bound to only a few. This means QA teams and developers can script test cases in any language or framework they are more familiar with (e.g., Java, Swift, C#, Kotlin, JavaScript).

Why Use Appium?

  • Appium is open-source, which makes it free to use.
  • It supports testing for multiple OS platforms (iOS and Android) in case your application is not just for iOS devices.
  • It allows scripting with most languages, making it an easy-to-use option. For example, a QA team that's only familiar with Swift can easily test their app in the same language without having to adopt a new one.
  • Appium has a wide, active community that provides resources for troubleshooting.


Calabash is an open-source automation testing tool established by Xamarin. It uses behavior-driven development to enable testing for mobile applications that works for both Android and iOS platforms. But unlike Appium, it doesn't support test scripting with multiple programming languages. In fact, you can only use Gherkin, which is written under Ruby. However, Calabash utilizes cucumber, which means the test runs in plain English.

The cucumber framework enables individuals without coding knowledge (e.g., stakeholders and non-technical team members) to understand the test.

Why Use Calabash?

  • If your team is using Xamarin, Calabash is ideal since it integrates automatically with Xamarin.
  • Calabash is free to use and open source.
  • Tests are written in plain, understandable languages by utilizing cucumber. This will be a big advantage if you have non-technical individuals on your team.
  • It supports Android and iOS testing, which makes it cross-platform in case your application is not specific to a single platform.


XCTest is an automation testing tool that enables developers write and perform unit tests for applications that run on iOS devices. It is by far the most famous iOS testing framework, as it directly integrates with Xcode, which developers use to create iOS applications. It's also compatible with the iOS native programming languages (Objective-C and Swift).

XCUITest enables developers to test the UI interaction of their applications. This framework is also directly integrated into Xcode and built under the XCTest framework. It ships with subclasses that help in UI testing (e.g., UIAccessibility). It doesn't require any additional software or package to perform testing on the application. Also, tests can run on either real devices or emulators.

Why Use XCTest/XCUITest

  • XCTest/XCUITest operates at the object level, which makes maintenance easy for testers.
  • It may be faster than other frameworks as it closely relates to iOS.
  • Tests are written in the same programming language (Objective-C or Swift) as the application, saving your developers from having to learn a new language.
  • It eliminates any form of flakiness, as it's a very reliable framework with support from Apple.


EarlGrey is an open-source automation testing tool designed by Google. Google uses this testing framework internally to test its applications that run on native iOS (e.g., Photos, Gmail, Map, and YouTube, among others). EarlGrey is akin to Espresso for iOS because of their close similarities. Some of these include the ability to wait for events to happen before interacting with the UI, automatic synchronization to UI, and network requests.

Why Use EarlGrey

  • It has automatic synchronization support to U, which waits and makes sure it's in a stable condition before performing any action.
  • It integrates with Xcode, which can enable developers or testers to run tests directly from Xcode or the terminal.
  • With EarlGrey you get user-like interactions for your UI tests, including swipes and tap gestures.


This automated testing tool enables you to write tests for your native applications (iOS or Android) without having to script anything. This means that anybody can use Waldo to run tests with a few clicks in the browser. To do so, you simply use a visual test recorder that enables you to imitate a user's experience with the help of emulators and simulators to record tests.

With its proprietary screen analysis engine, Waldo studies the structure of every screen in your application and their interactions with one another. You can set a test to automatically continue to run so that any change in your application build doesn't require you to prepare a new test. Additionally, Waldo generates a full playback of the device session, which enables you to identify bugs in the user flow.

It integrates directly with your CI/CD, which helps in starting tests upon action like upload and pull requests

Why Use Waldo?

  • Anybody without coding knowledge can run a test using Waldo.
  • It saves you from spending a lot of time setting up and maintaining tests, as everything is done automatically. All you need to do is upload your APK to the Waldo cloud and with a few clicks, you're running a test for your application.
  • It integrates directly with your CI/CD, which helps in starting tests upon action like upload and pull requests.

How Do I Choose the Best Tool?

Now it's down to which iOS automated testing tool you should choose. Appium and Calabash are great for a team of testers, rather than developers, working on a cross-platform application. Both are popular options with strong community support. But keep in mind that with Calabash, your testers or developers are bound to a single programming language (Ruby).

For native applications that are made to support only iOS devices, your choice should be XCTest/XCUITest. It integrates well with Xcode, and it supports iOS updates out of the box. However, it may not be the best choice if your developers won't be the ones testing the app, or if your testers aren't conversant with the development process and able to use Swift or Objective-C.

If you care about speed and reliability, along with easier setup and test maintenance, consider Waldo. Waldo is that automation testing tool that handles all the setup for you and automatically maintains your application's test continuously with a few clicks in the browser.

Automated E2E tests for your mobile app

Waldo provides the best-in-class runtime for all your mobile testing needs.
Get true E2E testing in minutes, not months.

Reproduce, capture, and share bugs fast!

Waldo Sessions helps mobile teams reproduce bugs, while compiling detailed bug reports in real time.