Automating iOS tests with Docker - ios

There's another post about this, but it's four years old. Is there any way to run iOS Appium tests using docker, I've seen this image: quamotion/appium-docker-ios. But I think quamotion is a paid service with its own scripting language, and I'd like to run this for free (maybe just using some servers like DigitalOcean)

For running iOS tests Appium requires Xcode with the command-line build tool.
You may think of using Darwin docker image, but I doubt it is easy to install XCode there.
You can check vagrant-box-osx, but it looks outdated.

Related

How to generate an iOS build for a flutter app using Android Studio?

I have a Mac but for some complex reasons that is not worth explaining here, I will be not be able to install xCode. I have checked the tutorial here, where they provide two options. In both options, XCode is used. My question is: Is it possible to generate a build for iOS on a Mac without using XCode.
It is not possible to do this in Android Studio. If you don't have a machine with macOS (or are not able to use XCode in your case), you might be able to make a build using a macOS docker image.
You can find a macOS docker image (Docker-OSX) here (200k downloads). On this page, you can also find container images with XCode installed.
If you don't want to use the XCode app('s GUI) on your machine (or when using this Docker image), but you do have XCode (and Command Line Tools) installed - you can also make a build via the terminal using the xcodebuild command: https://developer.apple.com/library/archive/technotes/tn2339/_index.html
For more on xcodebuild, see this StackOverflow answer.
No, it's not.
What you can do though is use an external tool like appollo which will let you have access to a Mac build machine with XCode installed.
Then you can generate an IPA like this :
appollo build start --build-type ad-hoc
Here are some demo videos or Appollo's documentation

Using Flutter from Linux without XCode

I use Linux (Ubuntu 20.04) as my development environment. I was excited about the idea of reusing the same code for Android, iOS and event Web.
But I'm blocked because I'm using Linux and in all tutorials and examples are talking about the necessity of using XCode to things like setting the FireStore configuration.
I'm not an iOS developer, so I don't want to buy a more expensive and less powerful machine to be able to develop and release iOS applications, and looks like still, Flutter is not the solution.
So my question is, how can I develop iOS apps using Flutter without a Mac?
You can also use a CLI tool named Appollo : https://github.com/Appollo-CLI/Appollo
It's a simple python utility that let's you :
Configure XCode
Create an IPA
Test your app in the iOS simulator
Build and publish your app on the App Store
You can install it by running pip install appollo in your terminal. For a full tutorial check their documentation : https://appollo.readthedocs.io/en/master/tutorial/index.html
You can also view a few demo videos on the Appollo YT channel : https://www.youtube.com/channel/UCBNRrJd4UP0QQRoYF4JOEmA
You can do one of the following:
Use a Mac OS virtual machine.
Use a service to build remotely, like CodeMagic for example.
Get a friend or co-worker to build the app on their Apple machine.
Also check out this:
Is it possible to develop iOS apps with Flutter on a Linux virtual machine?

Is it possible to setup Continuous Integration & Continuous Deployment for iOS app development?

I am looking for a way to setup Centralized Continuous Integration and Continuous Deployment for iOS app development. Just like how we do it for Maven or Gradle builds.
I found couple of articles which explains how to achieve this, but for all them are using Xcode to build the iOS application. The key here is Xcode will run only on MacOS.
I found Jenkins Xcode plugin, but it clearly tells,
Obviously, the build machine has to be an OSX machine with XCode
developer tools installed.
Even if we are making one of the developer's OSX machine as Jenkins agent, we can't guarantee that developer's OSX machine will be always connected to Jenkins master. What if somebody else want to build the app and the OSX machine running Jenkins agent is not available?
I found fastlane, but that also seems to automate some of the manual steps like taking screenshots, code signing, releasing the app. It has to be run on only the developers machine if I am not wrong.
What is the generic approach people use to achieve this?
For CI/CD you can use remote build server like AppCenter from Microsoft (https://appcenter.ms/) or other.
And, obviously, without mac machine to build app you can't build your own system CI/CD. Unfortunately, developer can't build app without Apple Machine.
It is main problem for iOS development.
In this case, android is better.

Is it possible to run Appium iOS automated tests on Ubuntu?

I know that it's impossible to code the test on ubuntu since I need apple's xCode, but I would like to know if, once coded, it is possible to run the automated tests on Ubuntu.
Thanks.
No, appium needs xCode to use UiAutomation and instruments to perform testing on iOS unfortunately.
I did follow with success the following tutorial: Appium on Raspberry-Pi
My current setup is as follows:
iOS devices connected to Raspberry-Pi 4 (Ubuntu)
Appium server on RPi + Quamotion tools
Inspect/Run automation scripts from remote computer.
I tried this on RPi but I guess this works on any Ubuntu computer/server.

Build cordova apps via ssh on a remote Mac

I've been building Android Phonegap apps locally on my Windows PC and using Phonegap Build to build IOS apps.
The design guys have a Mac that we're already using to publish the app in iTunes.
But even if Phonegap build is a great tool, there are many drawbacks : build time can sometimes be quite long, not all plugins are available, plugins submission seems sometimes quite long and not always successfull, building debugging a home-made plugin using Phonegap build seems just impossible.
For all those reasons I feel the need to build locally also IOS projects and maybe also develop native plugins.
So my idea would be to use ssh to connect to the Designer's Mac and use it to build.
Do other people process in that way? Would it work? Are there things I should be carefull with when installing the CLI, sdk and other tools?
For example I think it would be a good idea to install npm locally in my user I'll use for SSH.
Any ideas?
it is possible
First you need to instal phonegap on Designer's Mac, and enable ssh
Then in your system open terminal/cmd type
ssh usernameOfDesignerMac#ipaddress
then enter yes,
then enter password of that user. thats all now you can access Designer's mac,
cd cordovaProjectLocation
sudo cordova build ios/android

Resources