iOS App with CocoaPods Test Automation with GitHub Actions CI

If you write tests for your app at some point you will want to run them in an automated way to increase the effectiveness and ease of use of your tests. When already hosting your project on GitHub, then GitHub Actions is the easiest way to add CI (continuous integration) to your app project.

GitHub Actions workflow file (iOS CI)

Triggers

The workflow is triggered for each commit to the main branch and also for each PR (Pull request) to main. It can be changed to your liking. Triggers for github

Caching

To speed of the workflow is added especially when using Cocoapods this help a lot. The key specifies which cache to look for. When using the hashed Podfile.lock file the cache is used from another build with exactly the same Podfile.lock file. The restore-key is used as an alternative if an exact key match couldn't be found

CocoaPod Install

This step is only needed when using CocoaPods when using SPM (Swift Package Manager) this step can be omitted.

Build

The build step is no requirement for the test step to work but I always like to see if the Release configuration of the app even builds in the neutral environment of the build server. This way can be ensured that there a no dependencies of the project that weren't pushed to the repository.

Test

The actual test step running the tests. It is important to specify -workspace attribute with your YourAppName.xcworkspace (this is only needed when using CocoaPods). Also specify the scheme to be run with the -scheme attribute. GitHub Actions unfortunately only supports simulators so that is why only the simulators are targeted.

Special Mention

This script was developed for the XPO App. Go check out the app.