Cucumber+Ruby: Distributed tests in iOS

I see that xcode 9 beta supports launching sessions on multiple simulator simultaneously and appium 1.7.0 supports it.

Is there a ruby client for having distributed tests across many simulators in Appium? I am not finding much materials online that is supporting ruby tests.

My requirement is

  1. I run the first case across all the simulators in parallel and
  2. Distribute the rest of the test cases to run simultaneously across the connected simulators.

Do we have to manually give desired capabilities for each simulator? or use ideviceinstaller -i to get the list of simulators and have an .each loop for this in the desired capabilities?

Please help me with any documentation or approach for this.

I haven’t implemented multiple session x single Appium server in my production yet.
But I’ve prepared simple scenarios with ruby thread against multiple simulators.

I hope they will help you even slightly.

Thanks, this is a good start for me, but I beleive this capability will make my tests run in parallel across devices, how do I distribute them? is there a .yml configurations for this?

In my case, I’ve managed configurations as JSON format like the following example, but yml also looks pretty good.

{
  "sample1": { configuration 1 for iPhone SE },
  "sample2": { configuration 2 for iPhone 6s }
}

@KazuCocoa
Thanks, but Sorry, I am not getting what is Sample1 and Sample2 mean here?

@KazuCocoa
I was thinking of specifying cucumber tags, and then initiating tests with those tags on different drivers at the same time would be a good idea.

Does, appium, launch drivers on various simulators at the same time in a mac machine?

"sample" is just a key for each configuration and just a name for each configuration in this case.

As I implement here, if you handle each driver with an instance, you can manage each driver instance at the same time.
@reach2jeyan

@KazuCocoa
Sorry buddy! But I am still not getting it

I have two sets of desired capabilities now for two same simulators of different versions. When I try to run it, the framework appears to follow sequential rather than parallel.

What I thought is, if I could initiate multiple desired capabilities parallel, and use cucumber tags tagged to each desired capability to run parallely on various simulators.

Is this the first time to boot each simulator? We should wait a bit for the booting simulators phase because booting simulators need time, and it looks sequential.
But if each simulator is already booted, each scenario works parallel, install the target app, launch it and run test scenarios.

Do u have a Skype @KazuCocoa

If yes, could you please ping me in reach2jeyan

Sorry, but I rarely active on Skype. So, if you’d like to use any chat-services, I’d love to use Slack on seleniumhq, for example. (But I have little experiences for distributed tests with Xcode 9 like an example on ruby_lib’s ios_tests/parallel/test.rb.) @reach2jeyan

@KazuCocoa: Could you please let me know your slack link? You can email me the way I can get conencted to you to [email protected]

I would be really interested to have a chat with you on this topic for its implementation in my current automation suite which is highly demanded here

@KazuCocoa Unfortunately I am not authorized to join seleniumhq on slack. Could you please give me an other way to contact on chat

Unfortunately I am not authorized to join seleniumhq on slack.

hm… couldn’t you join the slack via https://seleniumhq.herokuapp.com ?

I guess we can find only a few distributed tests experiences on the web since the feature is the new one, and we should leave know-how on the web.

Checking, Please wait for smetime

Done! Sent you a message on slack