Verifying tracking events in XCUITest
UI tests are a great way to verify if your application is working correctly. Using them, you can verify if certain actions cause certain effects. However, you usually don’t want your application to send any data to production services, especially when the application is doing requests that modify the data on the server. In case when we know what request and response bodies should look like, it’s not a big problem. We can mock all the requests that the application makes and stub the responses.
However, it’s harder if you want to mock requests that are sent to analytics, which is very often handled by some third party provider like Google Firebase. Doing it the same way would require you to intercept requests sent to the third party provider …
Faster pull request checks for modular iOS app
This blog post is a follow-up of Enhancing XcodeGen for simpler maintenance of dependencies in modular iOS app . In the mentioned article I showed you how we enhanced XcodeGen format so only direct dependencies of modules are needed to be specified in project definitions. In this article I would like to present to you a solution that made our PR checks faster, as we run them only for modules that need it. It’s best if you first read the mentioned article to fully understand the issues that we faced. Anyway, I’ll start with a quick recap of the problem.
In the sample setup we had 3 projects defined with XcodeGen:
- "ModularApp" application
- “FeatureModule” dynamic framework imported by the application
- “ApiModule” dynamic framework imported by the …
Enhancing XcodeGen for simpler maintenance of dependencies in modular iOS app
- 1 Breaking the monolith
- 2 What’s the problem?
- 3 What’s the solution?
- 4 Summary
Developers that take the challenge of breaking the monolith in their iOS codebase and splitting it into separate modules face another problem: How to best manage multiple .xcodeproj files and potential conflict resolution on them? Fortunately, there’s a really convenient tool called XcodeGen that makes it quite easy – it generates the .xcodeproj files based on the YAML files stored in the codebase. Using YAML files greatly simplifies conflict resolution since you no longer need to version control .xcodeproj files. Instead, you can define your project with a much simpler syntax.
However, when you have a bunch of dynamic framework targets with dependencies between them and…