Has anybody managed to disable animations through code when running Espresso tests? I've been trying to follow the instructions in this webpage (linked to from here):
https://code.google.com/p/android-test-kit/wiki/DisablingAnimations
Unfortunately it does not appear to be working, as I keep seeing this permissions error:
04-27 15:48:28.694 303-342/system_process W/PackageManager﹕ Not granting permission android.permission.SET_ANIMATION_SCALE to package com.cookbrite.dev (protectionLevel=50 flags=0x18be46)
I was really hoping to avoid reconfiguring my device/emulators. We frequently run individual tests locally and it will annoy me if I have to keep toggling settings.
I noticed some other developers complaining that this doesn't work, so I might not be alone:
https://groups.google.com/forum/#!msg/android-test-kit-discuss/TCil7kMQRTM/QK1qCjzM6KQJ
In macOS: System Preferences > Accessibility > Display > Reduce motion. In iOS: Settings > General > Accessibility > Reduce Motion. In Android 9+: Settings > Accessibility > Remove animations.
It doesn't affect battery life and performance just that the animations take a long time to render giving a feeling of sluggishness.
I'm executing these three commands for each animation type and they are working for me:
adb shell settings put global window_animation_scale 0.0
adb shell settings put global transition_animation_scale 0.0
adb shell settings put global animator_duration_scale 0.0
More information here - prepare android emulator for UI test automation.
I finally got this to work. Here is a Gist listing the required steps:
https://gist.github.com/daj/7b48f1b8a92abf960e7b
The key step that I had missed was running adb
to grant the permission:
adb shell pm grant com.mypackage android.permission.SET_ANIMATION_SCALE
Adding the permission to the manifest and running the reflection steps did not seem to be enough on their own.
Even better approach is to update app/build.gradle
, if you're running tests from command line.
android {
...
...
testOptions {
animationsDisabled = true
}
}
You may have to do ./gradlew clean
before rebuilding. If you used android studio, it may not update the apk on your device assuming that nothing changed in the apk. Watch out for those to ensure that the change is actually taking effect on your device.
Also read the documentation here.
Disables animations during instrumented tests you run from the cammand line.
If you set this property to true, running instrumented tests with Gradle from the command line executes am instrument with the --no-window-animation flag. By default, this property is set to false.
This property does not affect tests that you run using Android Studio.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With