badoo / ios-device-server

A server to manage remote iOS simulators and devices for parallel testing
MIT License
43 stars 11 forks source link

Adapt ios-device-server for use with native Swift XCUI tests #30

Open MaxCiv opened 5 years ago

MaxCiv commented 5 years ago

Hi! I am currently working on running iOS UI tests in parallel on multiple computers and I found your ios-device-server, but I do not need to use WebDriverAgent or even fbsimctl. My tests are written in Swift and kif-framework is used, I just need to build-for-test my app, upload it and file.xctestrun to host with simulators and run the tests like this: xcodebuild test-without-building -xctestrun ./ui-tests-scheme_iphonesimulator12.1-x86_64.xctestrun -destination "platform=iOS Simulator,id=C701D686-219A-475B-AB98-0BC4A9451CDF,OS=12.1" -only-testing:ui-tests/SomeTest1

This command boots the simulator if it's shutdown, installs the app, runs test in headless mode and shutdown the simulator. It remains only to erase the simulator's data (xcrun simctl erase C701D686-219A-475B-AB98-0BC4A9451CDF) and the simulator ready to run next test.

I can modify your ios-device-server to fit my needs, but how easy will it be to get rid of WebDriverAgent and fbsimctl in programm logic and what's the best way to do that?

NickAb commented 5 years ago

Hi, sorry for the slow reply.

It should be relatively easy to add WebDriverAgent-less mode to the device server by adding a new desired capability to skip WebDriverAgent deploy and health-checks. I don't see a reason to get rid of fbsimctl. It will be hard to get rid of fbsimctl and we will be unlikely to pull such PR, as fbsimctl is used heavily to boot and shutdown simulators, and also used to interact with simulators and devices in our end-to-end testing.

If you interested in running pre-compiled XCUI tests bundles in parallel I would suggest taking a look at https://github.com/linkedin/bluepill as it seems that it was designed just for such case.