Compare commits

...
28 Commits
Author SHA1 Message Date
butomo1989 15cddf08c4 Merge branch 'master' of github.com:butomo1989/docker-android 2021-02-03 16:55:06 +01:00
butomo1989 71949ee857 Using Appium 1.20.1 2021-02-03 16:54:51 +01:00
Budi UtomoandGitHub d0e3c619ca Merge pull request #277 from iqalab-cloud/bug-fix-incorrect-max-session
Bug fix: maxSession in appium config should be 1
2021-01-13 13:07:30 +01:00
Zhaopeng XUAN 8dc87a3a3c Bug fix: maxSession in appium config should be 1 2021-01-13 12:39:36 +01:00
Budi UtomoandGitHub 76617374c0 Merge pull request #274 from iqalab-cloud/feature-support-selenium-proxy-class
Feature: Support customised Selenium Proxy Class when use Appium
2021-01-09 11:21:30 +01:00
Zhaopeng XUAN 70fc3b411c Fix the issue 2021-01-08 12:05:34 +01:00
Zhaopeng XUAN 5e7ce8ce66 Feature: Support Selenium Proxy Class when use Appium 2021-01-08 11:44:56 +01:00
butomo1989 1d7121c41b Merge branch 'master' of github.com:butomo1989/docker-android 2021-01-08 08:34:25 +01:00
butomo1989 0a1758091f Updated base image 2021-01-08 08:34:06 +01:00
Budi UtomoandGitHub eb045aa644 Merge pull request #270 from jnvillar/patch-1
Update README_VMWARE.md
2021-01-07 10:42:00 +01:00
Juan Ignacio Noli VillarandGitHub e5a9fe7031 Update README_VMWARE.md 2020-12-17 10:49:08 -03:00
butomo1989 fdb464781a Added monitoring section 2020-09-02 11:33:07 +02:00
Budi UtomoandGitHub 2e5237ec80 Merge pull request #260 from yintro4ha/master
Able to add proxy user and password on Android emulator
2020-08-27 12:56:15 +02:00
yintro4haandGitHub b1f9ec5e79 Merge pull request #1 from yintro4ha/add-proxy-auth
Update utils.sh
2020-08-24 15:14:00 +08:00
yintro4haandGitHub 1ac4a6484e Update README_CUSTOM_CONFIG.md
Add document for new proxy auth variable
2020-08-24 15:10:03 +08:00
yintro4haandGitHub f09e38c92c Update utils.sh
Add Variable: 
1. HTTP_PROXY_USER
2. HTTP_PROXY_PASSWORD
2020-08-24 15:05:22 +08:00
butomo1989 e051faf84a Updated the base image 2020-07-31 10:51:08 +02:00
butomo1989 2461a6e832 Restart mobile data for specific version 2020-07-23 17:26:36 +02:00
butomo1989 20120f5c0a Added stargazers 2020-07-22 09:12:27 +02:00
butomo1989 6a0f135247 Typo 2020-07-17 14:59:21 +02:00
butomo1989 b36847817d Enable Animation 2020-07-17 14:58:17 +02:00
butomo1989 0196d23103 Switched the order because of bug on Android 10 or higher 2020-07-17 14:57:20 +02:00
butomo1989 01d1c663c1 Updated documentation 2020-07-14 09:54:31 +02:00
butomo1989 5b8ef77bba Updated link 2020-07-14 09:53:05 +02:00
butomo1989 3b3746fff3 Updated security link 2020-07-14 09:52:38 +02:00
butomo1989 d9ba33c9fa Renamed 2020-07-14 09:50:31 +02:00
butomo1989 94132acf41 Updated user statistics 2020-07-14 09:47:13 +02:00
butomo1989 86e7e0f8e5 Updated ga lines 2020-07-13 14:59:51 +02:00
13 changed files with 61 additions and 23 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ Docker-Android's analytics are sent throughout Docker-Android's execution to Goo
Docker-Android's analytics are accessible to Docker-Android's current maintainers. Contact [@budtmo](https://github.com/budtmo) if you are a maintainer and need access.
## How?
The code is viewable in [this lines](./src/appium.sh#L225-L247).
The code is viewable in [this script](./src/appium.sh).
## Opting out before starting Docker-Android
Docker-Android analytics helps us, maintainers and leaving it on is appreciated. However, if you want to opt out and not send any information, you can do this by using passing environment variable GA=false to the Docker container.
+11 -2
View File
@@ -249,13 +249,22 @@ The Emulator skins are taken from [Android Studio IDE](https://developer.android
Security
--------
All docker images are protected by [Polyverse](https://polyverse.io/) by scrambling the Linux packages. For more information please read [this](https://polyverse.io/how-it-works/)
All docker images are protected by [Polyverse](https://polyverse.io/) by scrambling the Linux packages. For more information please visit [this link](https://youtu.be/eSZNP42n-pM)
Monitoring
----------
You can use [cadvisor](https://github.com/google/cadvisor) combined with influxdb / prometheus and grafana if needed to monitor each running container.
Users
-----
Docker-Android are being used by 100+ countries around the world.
[![ga-datastudio-docker-android](./images/users.png)](https://datastudio.google.com/s/ht7HVKHKAQE)
[![ga-datastudio-docker-android](./images/docker-android_users.png)](https://datastudio.google.com/s/ht7HVKHKAQE)
Stargazers over time
--------------------
[![Stargazers over time](https://starchart.cc/budtmo/docker-android.svg)](https://starchart.cc/budtmo/docker-android)
Special Thanks
--------------
+1
View File
@@ -25,6 +25,7 @@ It is also possible to connect appium server that run inside docker-android with
- SELENIUM_HOST="\<host\_ip\_address>"
- SELENIUM_PORT=\<port\_number>
- SELENIUM_TIMEOUT=\<timeout\_in\_seconds>
- SELENIUM_PROXY_CLASS=\<selenium\_proxy\_class\_name>
To run tests for mobile browser, following parameter can be passed:
+9
View File
@@ -13,6 +13,15 @@ You can enable proxy inside container and Android emulator by passing following
- NO_PROXY="localhost"
- ENABLE_PROXY_ON_EMULATOR=true
Proxy with authentication
----
You can set proxy with authentication by passing following environment variable:
- HTTP_PROXY_USER="\<username>"
- HTTPS_PROXY_PASSWORD="\<password>"
Language
--------
+10 -1
View File
@@ -38,10 +38,19 @@ The following instructions are used for OS X. You'll need [docker-machine-parall
![Enable nested virtualization for Parallels Desktop](images/parallels_enable_nested_virtualization.png)
4. Enable kvm inside virtual machine
4.0 Check kvm version
```bash
# version
$ 10.1
```
Go to http://tinycorelinux.net/10.x/x86_64/tcz/ and check your kvm version, for version 10.1 is kvm-4.19.10-tinycore64.tcz
4.1. Run as an account other than root to install kvm packages using tce-load.
```bash
# su docker
$ tce-load -wi kvm
$ tce-load -wi kvm-4.19.10-tinycore64.tcz
```
4.2. Run as root to load kvm module after kvm packages install.
+1 -1
View File
@@ -1,4 +1,4 @@
FROM appium/appium:1.17.1-p1
FROM appium/appium:1.21.0-p0
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
+1 -1
View File
@@ -1,4 +1,4 @@
FROM appium/appium:1.17.1-p1
FROM appium/appium:1.21.0-p0
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
+1 -1
View File
@@ -1,4 +1,4 @@
FROM appium/appium:1.17.1-p1
FROM appium/appium:1.21.0-p0
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

+6 -4
View File
@@ -149,9 +149,10 @@ def appium_run(avd_name: str):
selenium_host = os.getenv('SELENIUM_HOST', '172.17.0.1')
selenium_port = int(os.getenv('SELENIUM_PORT', 4444))
selenium_timeout = int(os.getenv('SELENIUM_TIMEOUT', 30))
selenium_proxy_class = os.getenv('SELENIUM_PROXY_CLASS', 'org.openqa.grid.selenium.proxy.DefaultRemoteProxy')
browser_name = default_web_browser if mobile_web_test else 'android'
create_node_config(avd_name, browser_name, appium_host, appium_port, selenium_host, selenium_port,
selenium_timeout)
selenium_timeout, selenium_proxy_class)
cmd += ' --nodeconfig {file}'.format(file=CONFIG_FILE)
except ValueError as v_err:
logger.error(v_err)
@@ -160,7 +161,7 @@ def appium_run(avd_name: str):
def create_node_config(avd_name: str, browser_name: str, appium_host: str, appium_port: int, selenium_host: str,
selenium_port: int, selenium_timeout: int):
selenium_port: int, selenium_timeout: int, selenium_proxy_class: str):
"""
Create custom node config file in json format to be able to connect with selenium server.
@@ -170,6 +171,7 @@ def create_node_config(avd_name: str, browser_name: str, appium_host: str, appiu
:param selenium_host: Host where selenium server is running
:param selenium_port: Port number where selenium server is running
:param selenium_timeout: Selenium session timeout in seconds
:param selenium_proxy_class: Selenium Proxy class created in Selenium hub
"""
config = {
'capabilities': [
@@ -185,11 +187,11 @@ def create_node_config(avd_name: str, browser_name: str, appium_host: str, appiu
'configuration': {
'cleanUpCycle': 2000,
'timeout': selenium_timeout,
'proxy': 'org.openqa.grid.selenium.proxy.DefaultRemoteProxy',
'proxy': selenium_proxy_class,
'url': 'http://{host}:{port}/wd/hub'.format(host=appium_host, port=appium_port),
'host': appium_host,
'port': appium_port,
'maxSession': 6,
'maxSession': 1,
'register': True,
'registerCycle': 5000,
'hubHost': selenium_host,
+2 -1
View File
@@ -58,7 +58,8 @@ class TestAppium(TestCase):
def test_config_creation(self):
from src import CONFIG_FILE
self.assertFalse(os.path.exists(CONFIG_FILE))
app.create_node_config('test', 'android', '127.0.0.1', 4723, '127.0.0.1', 4444, 30)
app.create_node_config('test', 'android', '127.0.0.1', 4723, '127.0.0.1', 4444, 30,
'org.openqa.grid.selenium.proxy.DefaultRemoteProxy')
self.assertTrue(os.path.exists(CONFIG_FILE))
os.remove(CONFIG_FILE)
+18 -11
View File
@@ -31,13 +31,6 @@ function install_google_play () {
adb install -r "/root/google_play_store.apk"
}
function disable_animation () {
# To improve performance
adb shell "settings put global window_animation_scale 0.0"
adb shell "settings put global transition_animation_scale 0.0"
adb shell "settings put global animator_duration_scale 0.0"
}
function enable_proxy_if_needed () {
if [ "$ENABLE_PROXY_ON_EMULATOR" = true ]; then
if [ ! -z "${HTTP_PROXY// }" ]; then
@@ -56,9 +49,24 @@ function enable_proxy_if_needed () {
adb root
echo "Set up the Proxy"
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""
fi
if [ ! -z "${HTTP_PROXY_PASSWORD}" ]; then
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
adb shell svc data disable
adb shell svc data enable
else
echo "Please use http:// in the beginning!"
fi
@@ -69,9 +77,8 @@ function enable_proxy_if_needed () {
fi
}
enable_proxy_if_needed
sleep 1
change_language_if_needed
sleep 1
enable_proxy_if_needed
sleep 1
install_google_play
disable_animation