Automate iOS application with Appium in Docker Automate iOS application with Appium in Docker docker docker

Automate iOS application with Appium in Docker


You should be able to use the appium-docker-ios Docker image for this.

You'll need an Apple Developer account, a developer profile (with a provisioning profile and a developer certificate), and the developer disk images before you get started.

On your Linux machine, you need to:

  • Install docker and usbmuxd
  • Pair your iOS device with your host
  • Copy your developer profile to ~/.quamotion/quamotion.developerprofile, save the password to your developer profile in ~/.quamotion/quamotion.developerprofile.password and save the developer disks to /.quamotion/devimg.

Then, you can start Appium using the following command:

docker run \    -p 4723:4723 \    -v /var/run/usbmuxd:/var/run/usbmuxd \    -v ~/.quamotion/:/etc/quamotion/    -e DEVELOPER_PROFILE_PASSWORD=1    --name appium-docker-ios    quamotion/appium-docker-ios

You should see the Appium server starting.

From here, you should be able to launch iOS automation just like you would on iOS devices.


You can do it but it not an easy path.

1) You must have some Linux system with nested virtualization enabled(good for this Ubuntu 18.04);

2) To check that virtualization is supported - verify that /dev/kvm file is present:

$ ls -l /dev/kvmcrw-rw---- 1 root kvm 10, 232 мар  8 19:38 /dev/kvm

3) Qemu machine emulator installed. It is important to use the same qemu version on host machine where images are built and inside Docker image;

4) Download macOS installation image remember you can’t up macOS in non-apple technique, so you can use this hacking option(or some Hackintosh)

5) Install macOS image in a virtual machine (more about this in link example for windows but you can do this for macOS)

6) Install Xcode,appium, and add you app to macOS image

7) Creating Quick Boot Memory Snapshot (more about how in link)

8) Finally, build a docker image (more in link)

It experimental technic so a lot can go wrong, but this is the only working option I've heard about.