@sapieneptus
I saw in a recent PR that you tested rotate against Google Maps and a drawing application.
I would like to stand up some kind of integration tests in this repo.
I have some recommendations, but am interested to know if you have any suggestions.
I want to make a decision on this quickly because I want to have cucumbers for the 2-finger tap gesture.
UnitTestApp
This is what I do in the LPServer. I use the LPTestTarget as the unit test target and cucumber test target. These cucumber tests are transient - they are eventually deleted when the feature stabilizes. Most of the time I move the feature to Permissions, CalSmokeApp, or CalWebApp. Sometimes I just delete the feature (if it is not interesting).
There are some drawbacks to this approach.
- I end up duplicating the feature and the implementation (e.g. a view that responds to double tap) later in another app.
- The UnitTest app has two roles - unit testing and integration testing. I have never had a problem with this on the LPServer, but the unit test coverage is light in that repo.
The benefit to this approach is that there is no other target to maintain. It also supports a BDD workflow. I want to implement 2 finger tap? I write the cucumber, I add the server side implementation, and then I write the application code to add a view that demonstrates 2 finger tapping.
(Yet) Another App Target
This is only interesting if there is some problem using the UnitTest app as the integration test target.
The drawback here is that the we have to manage (yet) another target in the DeviceAgent target. This is not terrible, just something to consider.
CalSmoke-cal.app
We do like UITest does - we add a CalSmoke-cal.app directly to this repo. The benefit is that the CalSmoke-cal.app has views that cover the majority of gestures.
The drawback here is that maintaining the CalSmoke-cal.app. The static binary will need to be updated everytime there is a release or a change in the app. There is already a lot of work around what happens after a Calabash iOS release. And the CalSmokeApp will require more updates.
I would prefer not to use the CalSmokeApp in this way. This app has a clear role these days: demonstrate good Cucumber and that the Calabash API works. It should always be passing and always in the best possible state.
CalSmoke git submodule
I don't want to do this. I mention it as an option so you can argue for it if you want.