Configuration for iOS native app testing on VMs

Testing your native iOS App on a Virtual Machine

Setting up your application file for testing:

To run tests on an iOS VM, follow these steps to set up your app as a .app file:

1. Generate a simulator build using the xcodebuild command

Make sure xcode Command Line tools are installed. They come bundled with xcode.

To build simulator builds you need to build your app for x86 64-bit. The command you will run to make the build should look similar to this:

xcodebuild ENABLE_BITCODE=NO -workspace '/path/to/YourWorkspace.xcworkspace' -scheme 'myScheme' -arch x86_64 -sdk iphonesimulator

  • ENABLE_BITCODE=NO turns off bitcode for the build.
  • -workspace takes your .xcworkspace file
  • -scheme is the build scheme. You may instead need to use -project myproject.xcodeproj or -target myTarget, depending on your setup.
  • -arch x86_64 sets the build to be 64-bit which will let it run on simulators. If you need to build 32-bit use -arch i386. Apple deprecated 32-bit support in iOS 11 so most builds should be 64-bit now. Your app MUST be built with one of these to run on simulators.
  • -sdk iphonesimulator sets the sdk to simulator. If you want a specific sdk you can list your installed sdks with xcodebuild -showsdks and change the option to be explicit: -sdk iphonesimulator11.1
  • Depending on your setup you may need to use the option -configuration "Debug"or -configuration "Release"
  • If you need more help with xcodebuild check out Apple's documentation here and here.
  • IMPORTANT: Test that your .app works on a local iOS simulator by dragging and dropping the .app file onto your local xcode simulator. If it does not work on your local iOS simulator, it won't work on ours.
  • IMPORTANT: Zip the .app file produced by the command. Rainforest supports .zip , .tar and .gz

2. Host your app somewhere that supports direct downloads.

  • The hosted file URL MUST be a direct download link. If this is not the case, Rainforest will not be able to install the .app file.
  • Do not use links that redirect, require credentials, or limit access; the link should lead to a direct download.

3. To set up your app for testing, simply add a link to your iOS .app file under ‘Apps’ in your site settings, and set the device 'Type' to ‘iOS’

  • Please Note: if you set the 'Type' to 'iOS Device Farm' your runs will error due to the difference between file types (.ipa for iOS device testing and .app for iOS VM testing)!

Creating a new native iOS test

  1. To create a new test for your native iOS application, click New Test, then select ‘App’

2. Click the drop-down, and select the URL for the .app file you wish to test

  • NOTE: As Rainforest will automatically download, install and start your application for testing, you cannot select non-iOS VMs for this test.

3. To preview the test hit the Glasses Icon or to run the test, select the 'Run Test' button and then 'Run' to choose the iOS VM from the Platforms section.

Can I reuse my existing web tests?

In most cases, a company’s web app and native app are fundamentally different, so you will not be able to reuse your existing web tests for your native app. However, in some cases, you can (and should!) reuse the work that you have already done.

If your mobile and web apps are very similar, you can simply copy the appropriate tests for your web app to a new test for your mobile application.

Native mobile app and web application tests are separated in the Rainforest interface, since they cannot share a starting URL.

  • The URL for a web browser test serves as a direction for the testers
  • The URL for a native app test is a source, where Rainforest will access and install your native application

Supported Devices for VM testing

Troubleshooting

App won’t load? Take a look at the following

Testing your build

If your app is not running properly on Rainforest’s VMs, we strongly recommend that you test it locally to ensure that your application is configured properly for running in a simulator. Try the following code to test that your build loads as expected on a simulator.

# list devicesxcrun simctl listEx: iPhone 7 (BCFE928E-1FFB-446B-A41C-288558412F0D) (Shutdown)# open the simulatoropen -a /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator --args -CurrentDeviceUDID BCFE928E-1FFB-446B-A41C-288558412F0D# install .app# xcrun simctl install  xcrun simctl install BCFE928E-1FFB-446B-A41C-288558412F0D /tmp/Example.app# get bundle IDosascript -e 'id of app "/tmp/Example.app"'# Ex: com.rainforestqa.ExampleApp# launch app#xcrun simctl launch  xcrun simctl launch BCFE928E-1FFB-446B-A41C-288558412F0D com.rainforestqa.ExampleApp# terminate appxcrun simctl terminate BCFE928E-1FFB-446B-A41C-288558412F0D com.rainforestqa.ExampleApp# unistall appxcrun simctl uninstall BCFE928E-1FFB-446B-A41C-288558412F0D com.rainforestqa.ExampleApp# shutdown the simulatorxcrun simctl shutdown BCFE928E-1FFB-446B-A41C-288558412F0D 

Make sure your app URL is a direct download link

The hosted file URL MUST be a direct download link. If this is not the case, Rainforest will not be able to install the .app file.

  • “Note: If you are using a Dropbox link, please make sure it ends in dl=1. See Dropbox help for more info.[https://www.dropbox.com/en/help/201]"
  • Some users have used this workaround for Dropbox
  • These applications do not need to be signed.

Verify Site URL

Rainforest will add a trailing slash "/" when launching running the test. This will sometimes lead to an error that does not allow the test to direct to the correct URL which will fail the test. This can be avoided by adding a "#" to the end of your site url.

Whitelisting IPs

Our testers come from various IP address, secure environments may block testers from reaching your site. Whitelisting Rainforest IP addresses may be required.

Did this answer your question?