Run tests on multiple devices

Hello there,

Intro
I just started with Appium a few months ago. We extended the testautomation to the mobile section in my company. We have built a solid foundation to automate tests using the Java client library. We are currently doing everything on one machine within a Java project:

  • Start the Appium server programmatically
  • Run the tests with Appiums Java client library
  • Stop the Appium server programmatically

To run a test on several attached devices, we just stop the Appium server and start it again with different capabilities.

What is my problem
Appium itself does not offer a way to run a test on multiple devices attached to one Appium Server. Please correct me if I am wrong.

What do I want
I want to build a real Client - Server architecture. That means I have a machine where the Appium Server runs on. This machine has let’s say 10 devices attached. Now I want to be able to execute my test from the client (a different machine) on 3 of those 10 devices on the server. I could not believe the fact that you have to start a server for each device. This destroys the Client - Server advantage IMO (except for the programming language independency). But now I have to find a workaround.

What’s my idea
To accomplish my requirements I have thought about an Appium Server Wrapper. That means I would build an API on the Server whose responsibility is to start and stop Appium Servers on different ports. I will just request an Appium Server address for a specific device over this API and it will then start a Server on a free port and return it’s address. I’m thinking about a NodeJs Application.

What do you think about that

  • I would like to know what you think about my idea?
  • How would you handle it?
  • Or is there already a similar solution for this problem?

I have also heard about saucelabs which basically provides Appium Servers. But I would like to build an own solution.

Best regards
Mike

1 Like

I would like tu up this post because i’m facing the same questions and this post is pretty clear.