Espresso or UIAtomator2

I plan to use Appium as a part of my team’s automation project to be able to test an Android app.
I am trying to decide which driver to choose EspressoDriver or UIAtomator2Driver.
Android Espresso advantages over UIAtomator2:

  1. gray-box testing - allow me to check internal functionalities (i.e intents).
  2. IdlingResource synchronization mechanism - reduces test execution flakiness.
  3. Execution speed expected to be higher due to lighter implementation and api.

My concern is that the EspressoDriver is newer driver and still has bugs which are not part of the UIAtomator2Driver.
I saw Github issues posted by developer which say the bugs reported do not happen then the test executed with the UIAutomator2Driver.
Do you agree on the assumption i raised?
Is there a stable Espresso client you suggest to use?

UIAtomator2:

  1. Speed is so fast that it trying to tap on elements while they appear with animation. This cause need to slow down it a bit OR disable all animation on test phones. Cause while animate tap may happen in wrong place. So speed is not a problem for UIAtomator2. (UIAtomator2 speed if interested link)
  2. No need to build app with Espresso driver. Can be used with any app.

Espresso:

  1. all plusses you mention
  2. minus - need to be added into app build
  3. gray-box should trigger more issues that is not possible to reproduce manually. while UIAtomator2 problems appears mostly due to high test speed. which possible to reproduce manually but really hard to follow speed. speed reproducing problem valid for both frameworks.
1 Like

Can u expend what it means?

It means that android developers need to add espresso framework to your application. More info https://developer.android.com/training/testing/espresso/setup