-
Notifications
You must be signed in to change notification settings - Fork 44
Screenshots not being pulled on API 22 #151
Description
Hi there!
TL;DR:
Composer always pulls screenshots from /storage/emulated/0/ but in API 22 they're stored in /storage/sdcard/.
Long version:
We have a device farm with some API 22 emulators, and we're seeing that the screenshots are not being pulled off the device.
The error printed by Composer is basically:
[emulator-5554] Failed to pull files from /storage/emulated/0/app_spoon-screenshots/com.infojobs.Screenshots/testMethod to /Users/.../app/build/reports/composer/debug/screenshots/emulator-5554/com.infojobs.Screenshots
failed: java.lang.IllegalStateException:
Process [script, -F, /Users/.../app/39436924747650.output, /.../adb, -s, emulator-5554, pull, /storage/emulated/0/app_spoon-screenshots/com.infojobs.app.Screenshots/testMethod, /Users/.../app/build/reports/composer/debug/screenshots/emulator-5554/com.infojobs.Screenshots]
exited with non-zero code 1 Script started on Thu Jun 14 15:49:15 2018
After much digging, we're seeing that Composer has a hardcoded folder to pull screenshots from: /storage/emulated/0/
| folderOnDevice = "/storage/emulated/0/app_spoon-screenshots/${test.className}/${test.testName}", |
But Spoon (and similar tools) save screenshots in Environment.getExternalStorageDirectory().
here. In API 22 emulators this route corresponds to /storage/sdcard/, while in higher versions it's /storage/emulated/0/.
Since Composer has a hardcoded path to a different root it's not able to pull screenshots from the right directory.
A possible fix would be to get the external storage path from the device like Spoon does by reading the EXTERNAL_STORAGE environment variable. here