Automatically test all plateform versions and devices on iOS

Hi guys,

Making iOS test with Appium, I would like to know if there any way to automatically test all plateform version and devices when I run a test.

Today I have to be compatible with iOS7+ and all size of iPhone and iPad. For now, I can only make a test to a platform version and a specific device at a time. I already try to create a “loop” for all available platform and version, but when a test fails, all next will fail too.

I hope have something like giving all platform versions and devices to test directly into the driver capabilities.

Thanks,

Ben

this test style is wrong. any test should run independently from other once.

Yep, that’s why I’m asking, to avoid making a loop of all platform version and devices.

you can do it using e.g. testNG + DataGenerator assertion.
each test will be run on device given by DataGenerator and will report it result independently.

or use device factories like saucelabs.com

or create your own Grid Appium - Parallel Execution (Grid)

1 Like

Thanks for your quick answer.

I already started using saucelab.com, but it seems to be the same: I have to create capabilities for my driver first, and didn’t find yet a setup to automatically test all devices.

They have a page to automatically set platform configuration : https://docs.saucelabs.com/reference/platforms-configurator but can’t select all of them in the selection.

Thanks

well look like they not support multiple config but there are many others to try. sorry i have no experience with it.

you can try http://aws.amazon.com/device-farm/

Hey,

Amazon AWS is really impressive for that, I already tried that that too but the price becomes expensive for massive test (almost 10$ / device / hour after 250 free minutes), but SauceLab stays cheaper and probably easier to use.

Thanks again.

Okay I think I get it, on SauceLab, using continuous integration environment like Bamboo ( https://docs.saucelabs.com/ci-integrations/bamboo/#referencing-job-configuration), you can bind your variable environment like version or browser name.

desiredCapabilities.setBrowserName(System.getenv("SELENIUM_BROWSER"));
desiredCapabilities.setVersion(System.getenv("SELENIUM_VERSION"));
desiredCapabilities.setCapability(CapabilityType.PLATFORM, System.getenv("SELENIUM_PLATFORM"));
...```

I'm pretty sure I can do same for my Appium test and specify devices and platform versions I want to use.

Hope it can help someone else.

but this will use anyway devices one by one - but not set of devices simultaneously.

We use DataProvider with testNG and using CI Bamboo can also overwrite any device as variable.