gojuno / composer

Reactive Android Instrumentation Test Runner. Archived. Marathon is recommended as an alternative (https://github.com/Malinskiy/marathon).
Apache License 2.0
546 stars 45 forks source link

Screenshots not being pulled on API 22 #151

Open Sloy opened 6 years ago

Sloy commented 6 years ago

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/ https://github.com/gojuno/composer/blob/53197950a4ca1260e435484d633a97614e48ea7c/composer/src/main/kotlin/com/gojuno/composer/TestRun.kt#L166

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

yunikkk commented 6 years ago

Thanks for detailed description! I'll add external storage retrieval to commander soon, then fix the bug here

CristianGM commented 5 years ago

Any news on that?

mikepenz commented 5 years ago

This would be really great to get in :)

artem-zinnatullin commented 5 years ago

There is a comment on #168 that I want @plastiv to take a look at