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
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:
After much digging, we're seeing that Composer has a hardcoded folder to pull screenshots from:
/storage/emulated/0/composer/composer/src/main/kotlin/com/gojuno/composer/TestRun.kt
Line 166 in 5319795
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_STORAGEenvironment variable. here