Przygotowanie emulatora androida w wersji non gui pod testy automatyczne po GUI

0

Cześć!
rozwijam testy dla aplikacji androidowej po GUI (technologia appium). Obecnie testy odpalam na fizycznych telefonach i nie są podpięte pod CI/CD.

Chcę wpiąć testy pod CI i myślałem aby przygotować emulator w wersji non gui i opakować go w dockera.

Moglibyście mnie naprowadzić jak to zrobić? W sieci widzę nie jest to popularne podejście, pewnie większość firm korzysta z chmur z farmami urządzeń.
Założenie jest takie że soft jest i tak testowany przez testerów/biznes i jestem w stanie zaakceptować potencjalną ułomność emulacji telefonu na serwerze (zdaję sobie sprawę że takie rozwiązanie może mieć swoje minusy bo telefon fizyczny to to nie jest, ale do smoke testów w sam raz moim zdaniem aby nie oddać aplikacji w której podstawowe procesy nie działają).

Jakie macie doświadczenia z emulatorami non gui? Chętnie bym przygarnął każde info, polecane obrazy z dockerem jeśli takie znacie. Jakoś na oficjalnych dokumentacjach z google nie widziałem takich tematów.

Jak ktoś nie zna technologii appium to możemy założyć że potrzebuję odpalić testy Espresso na emulatorze podpiętym pod Jenkins.
(Testy nie są pisane w natywnej technologii z myślą by odpalić jest dalej na iOS - ot tak jakby ktoś się zastanawiał czemu tak)

1

Żeby zrobić takie coś to trzeba pomyśleć o kilku rzeczach.

  1. Na jakiej maszynie wystartujesz dockera w ktorym odpalisz emu. U mnie to wyglądało w ten sposób, że najpierw miałem wirtualną maszynę w której odpalałem dokera z jakimś prostym obrazem do którego dociągałem wszystkie instrumenty typu Android SDK, device manager, etc. Na maszynie musi być włączona wirtualizacja.
  2. Posiadałem skrypt który po prostu spawnował instancję emulatora w/w contenerze

Tutaj jest przygotowanie "skórki" emulatora, to jakie to jest urządzenie jaki system

  echo "no" | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/avdmanager --verbose create avd --force --name "generic_10" --package "system-images;android-30;google_apis;x86_64" --device 'pixel_4a' -c 2048M

A potem uruchomienie tego emulatora z odpowiednimi parametrami, dobranymi do środowiska i wymagań

${ANDROID_SDK_ROOT}/emulator/emulator -avd generic_10 -cores 2 -no-window -noaudio -no-snapshot -no-boot-anim -accel on -gpu swiftshader_indirect -skip-adb-auth -read-only -qemu -m 2048M &

Z doświadczenia powiem, że odpalanie emulatora na VM i puszczanie tam potem testów ssie pałe. Wiesza się, tiemouty. Dużo lepiej mi sie to sprawdzało, jak miałem to uruchamiane na fizycznej maszynie. Wtedy to chodziło szybciej. Dodatkowo parametr -accel on -gpu swiftshader_indirect pozwala na wykorzystanie karty graficznej jako boost dla emu. Trzeba mieć tylko karte Nvidi

1 użytkowników online, w tym zalogowanych: 0, gości: 1