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

Podfile

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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.

ScreenshotsProjectUITests+Help.swift

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 *