Can we test both IOS and Android apps at a time on one Machine?

Could you please tell me how both the apps can be done in one machine at a time?
Is this possible !!!

I know, that you can do that by running Appium servers on different ports and pass URL with corresponding ports.
Don’t have such experience though.

1 Like

That could be working fine…! But both IOS and Android apps can be tested at a time possible only on MAC OS.
Am i correct???

Yes. One iOS device per mac.

1 Like

May i know how this can be achieved ???
Just start two appium servers on two different ports, then have to give respective port numbers to the capabilities of each device.
Need to configure selenium grid through json files.?

Thank you very much for your time @kirill , it is much appreciated…!!!

Is it correct @kirill ,as above i mentioned…!!!

@bhaskar, unfortunately, I don’t have such experience. I wish would help with this…

1 Like

Yes, it is possible and we’ve been doing it for months.


Hi @dimaj ,Thanks for your reply…!!! So, Could you please elobarate how this can be possible.?


So, we are using framework called Zucchini (it’s a wrapper around Cucumber). This tool allows for concurrent execution of our tests across multiple devices. On the Appium side, I am running 3 commands:

  1. ios_webkit_debug_proxy -d -c my_device_udid: 27753
  2. appium -p 4723 -bp 4724 <= For iOS; not quite sure why we’re using bootstrap port and not quite sure what it’s about
  3. appium -p 4823 -bp 4824 <= For Android

Because we use some homegrown tools in combination with Zucchini, I cannot give any specific details, but the gist of it should work like this:
You pass in your udid for both iOS and Android devices to your script. If you’re using Java, you can do something like this:

mvn clean test -DiosUdid=1234 -DandroidUdid=1234 -DiosPort=4723 -DiosBPort=4724 -DandroidPort=4823 -DandroidBPort=4824 -DiosAppPath=/path/to/my/app.ipa -DandroidAppPath=/path/to/my/app.apk

Since Zucchini spawns off a new thread per device (or TestContext), your appium driver will connect to appropriate server port as specified by your command line arguments.

So, this is a quick and dirty outline of how this works. If you need more details or help getting started, let me know and I’ll do my best to help you out.

1 Like