Git Product home page Git Product logo

calabash-ios-example's Introduction

master license
Build Status License

LPSimpleExample

This project demonstrates how to integrate Calabash into an existing Xcode project and provides an introduction to UI testing with Calabash.

If you have any trouble building the app on the command line, please see the xcpretty and Code Signing sections for debugging tips.

Requirements

  • MacOS 10.10 or 10.11
  • Xcode 6 or 7
  • iOS Devices >= 7.1
  • iOS Simulators >= 8.0
  • ruby >= 2.0 (latest is preferred)

We recommend a managed ruby environment like rbenv or rvm. If you are installing gems with sudo, please see our guide on why you should stop.

Bundler needs to be installed.

$ gem install bundler

Step 1: Install calabash.framework

You can find complete tutorials on the Tutorial: How to add Calabash to Xcode page of the Calabash iOS wiki. To get started quickly, we'll use the Debug Config approach.

# Install the necessary gems
$ bundle update

# Make sure you can build the app
$ make app

# Download the last calabash.framework
$ bundle exec calabash-ios download

Open Xcode and update the Linker Flags for the Debug Configuration.

alt text

These are the linker flags:

-ObjC -force_load "$(SOURCE_ROOT)/calabash.framework/calabash" -framework CFNetwork

Try to build and run on an iOS Simulator from Xcode In the Console you should see output like this:

DEBUG CalabashServer:222 | Creating the server: <LPHTTPServer: 0x7fe97a507ef0>
DEBUG CalabashServer:223 | Calabash iOS server version: CALABASH VERSION: 0.16.4

Step 2: Run cucumber

# Generate a features dir
$ bundle exec calabash-ios gen

# Tell Calabash where your app is (see Where is are the .app and ipa? below)
$ export APP=Products/app/LPSimpleExample.app

# Try running cucumber
$ bundle exec cucumber

Step 3: Open a console

# The console is a ruby irb
$ bundle exec calabash-ios console

# Launch the app with Calabash.
> start_test_server_in_background

# Type some text
> query("* marked:'Name'")
> touch("* marked:'Name'")
> keyboard_enter_text("Hello!")

Where to go from here?

Topic Description
Getting Started A more in-depth tutorial using this app.
Testing on Physical Devices Everything you need to know about testing on physical devices.
API Docs The Calabash iOS ruby API
iOS Smoke Test App Demonstrates advanced features, setups, and workflows
iOS WebView Test App Demonstrates how to interact with UIWebView and WKWebView
Getting Help The Calabash iOS Wiki

Where are the .app and .ipa?

This project includes a Run Phase build script that copies binaries built by Xcode to a local Products/ directory - this is the same directory that the make rules stage their build products. We encourage you to use this technique to ensure that you are always testing the most recent build of your app - whether it was built with Xcode or from the command line.

Troubleshooting

xcpretty

https://github.com/supermarin/xcpretty

We use xcpretty to make builds faster and to reduce the amount of logging. Travis CI, for example, has a limit on the number of lines of logging that can be generated; xcodebuild breaks this limit.

The only problem with xcpretty is that it does not report build errors very well. If you encounter an issue with any of the make rules, run without xcpretty:

$ XCPRETTY=0 make ipa

Code Signing

If you have multiple code signing identities, you might need to set the CODE_SIGN_IDENTITY variable for the make scripts. If you are running with xcpretty, you might see output like this:

$ make ipa
** INSTALL FAILED **

The following build commands failed:
        PhaseScriptExecution Run\ Script\ Add\ Calabash\ dylibs\ to\
Bundle
<snip>/Debug-iphoneos/CalSmoke.build/Script-F51F2E8E1AB359A6002326D0.sh

Try again without xpretty to reveal the problem:

$ XCPRETTY=0 make ipa
iPhone Developer: ambiguous (matches "iPhone Developer: Some Developer
(89543FK9SZ)" and "iPhone Developer: Some Other Developer (7QJQJFT49Q)"
Command /bin/sh failed with exit code 1

** INSTALL FAILED **

Fix this problem by telling Xcode which identity to use:

$ export CODE_SIGN_IDENTITY="iPhone Developer: Joshua Moody (7QJQJFT49Q)"
$ make ipa

calabash-ios-example's People

Contributors

igorfedotenkov avatar jmoody avatar krukow avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.