Automating screenshots

There is tangible profit from automating screenshots, first of all, you can create screenshots of the App for App Store on any languages and localizations. Secondly, when the app is on the process of localization, it should be sent to native speakers to check if the language is used correctly. And also for this you should make screenshots of all the screens and localizations. In case of App Store you need just several TOP screens but for checking the localization you’ll need all the screens. As the result, in several minutes you’ll get all the screens in all localizations and sizes. If to take 1 screen for 10 devices and 25 localizations, you’ll need 250 screenshots.

Let’s create a test project ScreenshotsProject

Add the target for tests ScreenshotsProjectUITests

For the project we will need dependency Cocoapods:

Localize-Swift – for changing the localization

iOSSnapshotTestCase – for the screenshots
















Create test ViewController and xib for it view









The color view will make different from the color label and stretch label around all the area of  SafeArea in order to control the correctness of the elements rendering  taking into account SafeArea


Create the file of  Localizable.strings and several localizations for it




Add code to AppDelegate, in addition display ViewController with  UINavigationController in UITabBarController











The result of the performance












In the target ScreenshotsProjectUITests add Asset Catalog and also pictures of all necessary sizes  for StatusBar



In the target ScreenshotsProjectUITests create the file Device.swift with enum Device and enum Orientation












Add extension for Device





















Add scale factor for Device












In the target ScreenshotsProjectUITests create file ScreenshotsProjectUITests+Help.swift where we will add support functions.


Add extension for UIViewController and in it add the function for adding a picture for StatusBar










Also in extension UIViewController add:

correction function for SafeArea insets








Сorrection function of TabBar frame










Сorrection function of NavigationBar frame








For correct rendering we should use right Trait Collections depending on the device and orientation.

In ScreenshotsProjectUITests+Help.swift we also add the function of getting Trait Collections for the device and orientation.




















In addition, we will need several auxiliary functions









The screenshots will be created with  UIWindow, so you should add the last auxiliary function.

It will create UIWindow for our ViewController  depending on the device and orientation






















Almost everything is ready for creating the screenshots

We just need to add the work with Localize-Swift in the target ScreenshotsProjectUITests

Crete file  Localize+Bundle.swift and add it to extension for  Localize










While creating the target ScreenshotsProjectUITests, ScreenshotsProjectUITests.swift file has been created.

We have to change it


















After you start the test testScreenShot(), the screenshots are generated for all devices and in all accessible localizations.


























Now you can see how the automating process works. It will save your time and efforts.


Leave a Reply

Your email address will not be published. Required fields are marked *