diff --git a/.npmignore b/.npmignore index 1c8025f951a..07954b47075 100644 --- a/.npmignore +++ b/.npmignore @@ -2,6 +2,8 @@ assets/ submodules/ publish.sh reset.sh +reset.bat +test.sh sample-code/ test/ android/bootstrap/bin/ diff --git a/README.md b/README.md index 8597c80d4ab..5deb85e9f40 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ you can pass in): Hacking with Appium (iOS) -------------- -(First, have a look at [setting up your system for Appium iOS support](docs/running-on-osx.md#ios).) +(First, have a look at [setting up your system for Appium iOS support](docs/running-on-osx.md#ios). Pay particular attention to the [section on running multiple versions of Xcode](docs/running-on-osx.md#ios_multiple), as Appium tests require this.) To avoid a security dialog that may appear when launching your iOS apps you'll have to modify your `/etc/authorization` file in one of two ways: diff --git a/app/appium.js b/app/appium.js index c756d12c30f..a7f1d7368ed 100644 --- a/app/appium.js +++ b/app/appium.js @@ -359,7 +359,7 @@ Appium.prototype.configureDownloadedApp = function(appPath, origin, cb) { Appium.prototype.configureSafari = function(desiredCaps, cb) { this.desiredCapabilities.safari = true; - var safariVer = "6.0"; + var safariVer = "6.1"; var usingDefaultVer = true; if (typeof desiredCaps.version !== "undefined") { safariVer = desiredCaps.version; diff --git a/app/helpers.js b/app/helpers.js index 1bf84ad3977..d5d26748de1 100644 --- a/app/helpers.js +++ b/app/helpers.js @@ -137,11 +137,11 @@ exports.checkBuiltInApp = function(appName, version, cb) { var appPath = path.resolve(appDir, appName + ".app"); fs.stat(appPath, function(err, s) { if (err) { - cb(err, appPath); + cb(err); } else if (!s.isDirectory()) { cb("App package was not a directory", appPath); } else { - logger.info("Got app, trying to copy to tmp dir"); + logger.info("Got app, trying to copy " + appPath + " to tmp dir"); exports.copyBuiltInApp(appPath, appName, cb); } }); diff --git a/docs/running-on-osx.md b/docs/running-on-osx.md index 5e2626cba58..d351403d1c6 100644 --- a/docs/running-on-osx.md +++ b/docs/running-on-osx.md @@ -7,14 +7,42 @@ Appium on OS X supports iOS and Android testing. -------- * Appium requires Mac OS X 10.7, but 10.8 is recommended. -* Make sure you have XCode and the iOS SDK(s) installed. -* You might also want to install additional versions of the iOS SDKs if you - want to test on older or multiple versions. +* Make sure you have XCode and the iOS SDK(s) installed. (Appium currently + supports Xcode 4.6.3 for iOS up to 6.1 and Xcode 5 for iOS 7.0. Note that + testing against iOS versions below 7.0 using Xcode 5 is not recommended. See + the next section for more information.) * You need to authorize use of the iOS Simulator. If you are running Appium from NPM, you'll do this by running `sudo authorize_ios` (`authorize_ios` is a binary made available by the Appium npm package). If you're running Appium from source, simply run `sudo grunt authorize` to do the same thing. +Testing against multiple iOS SDKs +----------- + +Apple's `instruments` binary, which Appium uses to launch the iOS simulator, by +default uses the currently-selected Xcode, and the highest iOS SDK installed +with that version of Xcode. This means that if you want to test iOS 6.1, but +have iOS 7.0 installed, Appium will be forced to use the 7.0 Simulator +regardless. The only way around this is to have multiple copies of Xcode +installed with different sets of SDKs. You can then switch to the particular +copy of Xcode that has the versions you want to test with before starting +Appium. + +In addition, it's been discovered that testing against iOS 6.1 with Xcode +5 causes increased slowness and instability, so it's recommended that for +testing against iOs 6.1 and below we use Xcode 4.6.3, and for testing against +iOS 7.0 we use Xcode 5.We can do this by, say, having Xcode 5 at +`/Applications/Xcode.app`, and Xcode 4.6 and `/Applications/Xcode-4.6.app`. +Then we use the following command: + + sudo xcode-select -switch /Applications/Xcode-4.6.app + +To prepare for iOS 6.1 testing. We run it again with a different Xcode: + + sudo xcode-select -switch /Applications/Xcode.app + +To go back to iOS 7.0 testing. + System setup (Android) -------- diff --git a/grunt-helpers.js b/grunt-helpers.js index 84795bc9f01..2cb47329d63 100644 --- a/grunt-helpers.js +++ b/grunt-helpers.js @@ -262,7 +262,7 @@ module.exports.build = function(appRoot, cb, sdk) { module.exports.buildApp = function(appDir, cb, sdk) { if(typeof sdk === "undefined") { - sdk = "iphonesimulator6.1"; + sdk = "iphonesimulator7.0"; } var appRoot = path.resolve(__dirname, 'sample-code/apps/', appDir); module.exports.build(appRoot, function(err) { diff --git a/reset.sh b/reset.sh index b2e774d569f..4c8eae6bc40 100755 --- a/reset.sh +++ b/reset.sh @@ -10,7 +10,7 @@ should_reset_ios=false should_reset_selendroid=false should_reset_gappium=false include_dev=false -ios_sdk_ver="6.1" +ios_sdk_ver="7.0" appium_home=$(pwd) reset_successful=false apidemos_reset=false diff --git a/test/helpers/driverblock.js b/test/helpers/driverblock.js index 7607b000208..04ae6533eac 100644 --- a/test/helpers/driverblock.js +++ b/test/helpers/driverblock.js @@ -9,7 +9,7 @@ var wd = require('wd') , should = require("should") , defaultHost = '127.0.0.1' , defaultPort = process.env.APPIUM_PORT || 4723 - , defaultIosVer = '6.1' + , defaultIosVer = '7.0' , defaultCaps = { browserName: '' , device: 'iPhone Simulator'