Merge branch 'master' into patch-1

This commit is contained in:
Budi Utomo
2023-01-02 11:37:05 +01:00
committed by GitHub
8 changed files with 75 additions and 32 deletions

View File

@@ -63,11 +63,6 @@ If you want to add more arguments for running emulator, you can ***pass an envir
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" -e EMULATOR_ARGS="-no-snapshot-load -partition-size 512" --name android-container budtmo/docker-android-x86-8.1
```
Appium Test Distribution (ATD)
------------------------------
You can enable [ATD](https://github.com/AppiumTestDistribution/AppiumTestDistribution) by passing environment variable ATD=true and bind the port to the host, e.g. -p 4567:4567
SaltStack
---------

View File

@@ -1,4 +1,4 @@
FROM appium/appium:v1.22.3-p0
FROM appium/appium:v1.22.3-p1
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
@@ -183,7 +183,7 @@ EXPOSE 4723 6080 5554 5555
#======================
# Add Emulator Devices
#======================
COPY devices /root/devices
COPY devices ${ANDROID_HOME}/devices
#===================
# Run docker-appium
@@ -195,6 +195,6 @@ RUN chmod -R +x /root/src && chmod +x /root/supervisord.conf
HEALTHCHECK --interval=2s --timeout=40s --retries=1 \
CMD timeout 40 adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done'
RUN ln -s /root/emulator/emulator /usr/bin/
RUN ln -s ${ANDROID_HOME}/emulator/emulator /usr/bin/
CMD /usr/bin/supervisord --configuration supervisord.conf

View File

@@ -1,4 +1,4 @@
FROM appium/appium:v1.22.3-p0
FROM appium/appium:v1.22.3-p1
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
@@ -168,5 +168,5 @@ EXPOSE 4723 6080 5555
COPY src /root/src
COPY supervisord.conf /root/
RUN chmod -R +x /root/src && chmod +x /root/supervisord.conf /root/geny_start.sh
RUN gmsaas config set android-sdk-path /root
RUN gmsaas config set android-sdk-path ${ANDROID_HOME}
CMD ["./geny_start.sh"]

View File

@@ -1,4 +1,4 @@
FROM appium/appium:v1.22.3-p0
FROM appium/appium:v1.22.3-p1
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"

View File

@@ -98,12 +98,12 @@ def prepare_avd(device: str, avd_name: str, dp_size: str):
profile_dst_path = os.path.join(ROOT, '.android', 'devices.xml')
if 'samsung' in device.lower():
# profile file name = skin name
profile_src_path = os.path.join(ROOT, 'devices', 'profiles', '{profile}.xml'.format(profile=skin_name))
profile_src_path = os.path.join(ANDROID_HOME, 'devices', 'profiles', '{profile}.xml'.format(profile=skin_name))
logger.info('Hardware profile resource path: {rsc}'.format(rsc=profile_src_path))
logger.info('Hardware profile destination path: {dst}'.format(dst=profile_dst_path))
symlink_force(profile_src_path, profile_dst_path)
avd_path = '/'.join([ANDROID_HOME, 'android_emulator'])
avd_path = '/'.join([ROOT, 'android_emulator'])
creation_cmd = 'avdmanager create avd -f -n {name} -b {img_type}/{sys_img} -k "system-images;android-{api_lvl};' \
'{img_type};{sys_img}" -d {device} -p {path}'.format(name=avd_name, img_type=IMG_TYPE,
sys_img=SYS_IMG,
@@ -226,10 +226,10 @@ def run():
if is_first_run:
logger.info('Emulator was not previously initialized. Preparing a new one...')
cmd = 'emulator/emulator @{name} -gpu swiftshader_indirect -accel on -wipe-data -writable-system -verbose {custom_args}'.format(name=avd_name, custom_args=custom_args)
cmd = 'emulator @{name} -gpu swiftshader_indirect -accel on -wipe-data -writable-system -verbose {custom_args}'.format(name=avd_name, custom_args=custom_args)
else:
logger.info('Using previously initialized AVD...')
cmd = 'emulator/emulator @{name} -gpu swiftshader_indirect -accel on -verbose -writable-system {custom_args}'.format(name=avd_name, custom_args=custom_args)
cmd = 'emulator @{name} -gpu swiftshader_indirect -accel on -verbose -writable-system {custom_args}'.format(name=avd_name, custom_args=custom_args)
appium = convert_str_to_bool(str(os.getenv('APPIUM', False)))
if appium:

View File

@@ -1,6 +0,0 @@
#!/bin/bash
if [ "$ATD" = true ]; then
echo "Starting ATD..."
java -jar /root/RemoteAppiumManager.jar -DPort=4567
fi

View File

@@ -10,7 +10,7 @@ function wait_emulator_to_be_ready () {
boot_completed=true
else
sleep 1
fi
fi
done
}
@@ -52,7 +52,7 @@ function enable_proxy_if_needed () {
adb shell "content update --uri content://telephony/carriers --bind proxy:s:"0.0.0.0" --bind port:s:"0000" --where "mcc=310" --where "mnc=260""
sleep 5
adb shell "content update --uri content://telephony/carriers --bind proxy:s:"${p[0]}" --bind port:s:"${p[1]}" --where "mcc=310" --where "mnc=260""
if [ ! -z "${HTTP_PROXY_USER}" ]; then
sleep 2
adb shell "content update --uri content://telephony/carriers --bind user:s:"${HTTP_PROXY_USER}" --where "mcc=310" --where "mnc=260""
@@ -61,7 +61,7 @@ function enable_proxy_if_needed () {
sleep 2
adb shell "content update --uri content://telephony/carriers --bind password:s:"${HTTP_PROXY_PASSWORD}" --where "mcc=310" --where "mnc=260""
fi
adb unroot
# Mobile data need to be restarted for Android 10 or higher
@@ -77,8 +77,69 @@ function enable_proxy_if_needed () {
fi
}
function check_emulator_popups() {
echo "Waiting for device..."
wait_emulator_to_be_ready
$ANDROID_HOME/platform-tools/adb wait-for-device shell true
EMU_BOOTED=0
n=0
first_launcher=1
echo 1 > /tmp/failed
while [[ $EMU_BOOTED = 0 ]];do
echo "Test for current focus"
CURRENT_FOCUS=`$ANDROID_HOME/platform-tools/adb shell dumpsys window 2>/dev/null | grep -i mCurrentFocus`
echo "Current focus: ${CURRENT_FOCUS}"
case $CURRENT_FOCUS in
*"Launcher"*)
if [[ $first_launcher == 1 ]]; then
echo "Launcher seems to be ready, wait 10 sec for another popup..."
sleep 10
first_launcher=0
else
echo "Launcher is ready, Android boot completed"
EMU_BOOTED=1
rm /tmp/failed
fi
;;
*"Not Responding: com.android.systemui"*)
echo "Dismiss System UI isn't responding alert"
adb shell su root 'kill $(pidof com.android.systemui)'
first_launcher=1
;;
*"Not Responding: com.google.android.gms"*)
echo "Dismiss GMS isn't responding alert"
adb shell input keyevent KEYCODE_ENTER
first_launcher=1
;;
*"Not Responding: system"*)
echo "Dismiss Process system isn't responding alert"
adb shell input keyevent KEYCODE_ENTER
first_launcher=1
;;
*"ConversationListActivity"*)
echo "Close Messaging app"
adb shell input keyevent KEYCODE_ENTER
first_launcher=1
;;
*)
n=$((n + 1))
echo "Waiting Android to boot 10 sec ($n)..."
sleep 10
if [ $n -gt 60 ]; then
echo "Android Emulator does not start in 10 minutes"
exit 2
fi
;;
esac
done
echo "Android Emulator started."
}
change_language_if_needed
sleep 1
enable_proxy_if_needed
sleep 1
install_google_play
sleep 1
check_emulator_popups

View File

@@ -42,13 +42,6 @@ stdout_logfile=%(ENV_LOG_PATH)s/screen-copy.stdout.log
stderr_logfile=%(ENV_LOG_PATH)s/screen-copy.stderr.log
priority=3
[program:atd]
command=./src/atd.sh
autorestart=false
stdout_logfile=%(ENV_LOG_PATH)s/atd.stdout.log
stderr_logfile=%(ENV_LOG_PATH)s/atd.stderr.log
priority=4
[program:docker-appium]
command=./src/appium.sh
autorestart=false
@@ -64,7 +57,7 @@ stderr_logfile=%(ENV_LOG_PATH)s/video-recording.stderr.log
priority=4
[program:adb-utils]
command=./src/utils.sh
command=bash ./src/utils.sh
autorestart=false
stdout_logfile=%(ENV_LOG_PATH)s/adb-utils.stdout.log
stderr_logfile=%(ENV_LOG_PATH)s/adb-utils.stderr.log