Mobile Automation Newsletter - #3

Your biweekly report of the most popular
Mobile Automation news, articles, podcasts and projects

Last Week’s Project

How They Automate on Mobile

I've shared a collection of publicly available resources on how software companies build CI/CD and automated testing on iOS and Android platforms. This might help to get a better understanding of the current state of the industry and to find inspiration for your own projects. Contributions are more than welcome!

Curated From The Community

WORKSPACE

2,000 imports: Organizing my Apps' SwiftPM modules

Cihat Gündüz shows such an excellent way to organise imports in the Xcode projects. Should be super helpful if you have a bunch of native and 3rd-party packages and struggling with copy-pasting the imports. Looks beautiful, will definitely give it a try!

How to remove unused codes from Swift projects in Xcode

Javier Fransiscus shares his experience with Periphery, a tool for identifying unused code in Swift projects. If you've never heard of this project or had no time to try it out, this article should be a good starting point.

TESTING

Using Deeplink and UI Testing in Jetpack Compose Navigation

Mert Toptaş gives us a brilliant walkthrough of the deep linking, what it is, how to cook it, and mainly, how to properly test it in Jetpack Compose. I highly recommend adding it to your bookmarks if you know you have a chance of bumping into the development or automated testing on Android.

Get access to string resources in UiAutomator

Even though Espresso is the de-facto standard for "low-level" UI testing on Android, I've always liked UiAutomator for its simplicity, as it allows to focus on testing the UI without "overcomplicating" things. I thought accessing the string resources was one of UiAutomator's main limitations, and surprisingly enough, it is not a limitation at all. It's undoubtedly a hidden gem that I opened for myself, thanks to Alex!

Flutter Integration Tests: A Comprehensive Guide to Test Reporting

It's always easier to debug things when you have a good test report, and I was curious how it's done in Flutter. If you too have wondered about this, Akanksha kindly offered multiple solutions.

XCUITest Interview Questions/Answers

In this Q&A, Nishith Shah takes the XCTest framework apart. This might be helpful not only to prepare yourself for the interview but also to figure out some core features and limitations of this framework, which in turn will help to make the right architectural decisions in general.

Activities and attachments in the XCTest framework

Majid Jabrayilov gives us an idea of what XCTContext, XCTActivity and XCTAttachment are and how they can improve the process of automating things within XCTest, whether it's testing or collecting screenshots for the App Store.

XCTCast as an alternative to XCTUnwrap

Bad error messages are awful and waste readers' time. Paul Samuels shows what this might look like, and introduces a nice way to improve the situation when tests fail on unwrapping the custom classes. "Cmd + Shift + F" your codebase in Xcode, if you use XCTUnwrap, Paul's extension can be a pretty helpful alternative for you.

CI/CD

GitHub announces the GitHub Actions extension for VS Code

First Copilot, then this. GitHub is investing a lot into VS Code. Will definitely give this extension a try and look forward to seeing what comes next!

Android CI/CD

In these two parts, Bevan Steele walks us through the whole process of automating the deployment of Android apps to Google Play. He also gives an intro to using fastlane on Android, which is, from my point of view, unforgivably undervalued in the Android world. As for me, I prefer to use fastlane everywhere, be it iOS, Android or CLI projects, and so, in my humble opinion, this series of articles is an excellent read.



Thanks for reading!

If you like this newsletter and want to support its development, there is a way. Every thanks and coffee counts. Cheers!


🅧

No spam, ever. Your email address will never be shared and you can opt out at any time.

Updated: