diff --git a/bin/test.sh b/bin/test.sh index ef61cab67..568acb4a6 100755 --- a/bin/test.sh +++ b/bin/test.sh @@ -9,6 +9,7 @@ android_only=false android_arm_only=false selendroid_only=false all_tests=true +xcode_switch=true xcode_path="" if command -v xcode-select 2>/dev/null; then xcode_path="$(xcode-select -print-path | sed s/\\/Contents\\/Developer//g)" @@ -37,6 +38,8 @@ for arg in "$@"; do elif [ "$arg" = "--ios71" ]; then ios71_only=true all_tests=false + elif [ "$arg" = "--no-xcode-switch" ]; then + xcode_switch=false elif [ "$arg" =~ " " ]; then mocha_args="$mocha_args \"$arg\"" else @@ -49,12 +52,16 @@ appium_mocha="./node_modules/.bin/mocha --recursive $mocha_args" run_ios_tests() { echo "RUNNING IOS $1 TESTS" echo "---------------------" - if test -d /Applications/Xcode-$1.app; then - echo "Found Xcode for iOS $1, switching to it" - sudo xcode-select -switch /Applications/Xcode-$1.app - did_switch_xcode=true - else - echo "Did not find /Applications/Xcode-$1.app, using default" + + + if $xcode_switch; then + if test -d /Applications/Xcode-$1.app; then + echo "Found Xcode for iOS $1, switching to it" + sudo xcode-select -switch /Applications/Xcode-$1.app + did_switch_xcode=true + else + echo "Did not find /Applications/Xcode-$1.app, using default" + fi fi echo DEVICE=$2 time $appium_mocha -g $3 -i \ diff --git a/test/functional/common/jsonwp-specs.js b/test/functional/common/jsonwp-specs.js index 655b1f45a..7184960c2 100644 --- a/test/functional/common/jsonwp-specs.js +++ b/test/functional/common/jsonwp-specs.js @@ -5,7 +5,7 @@ var chai = require('chai') , serverHub = serverUrl + '/wd/hub/session' , request = require('request'); -describe("common - jsonwp @skip-ci", function () { +describe("common - jsonwp @skip-ci @skip-ios6", function () { // TODO: This cannot be tested using Sauce. It need to be run within a Travis // instance. describe('to a non-existent url', function () { diff --git a/test/functional/common/prelaunch-specs.js b/test/functional/common/prelaunch-specs.js index 090a98cba..453236f8b 100644 --- a/test/functional/common/prelaunch-specs.js +++ b/test/functional/common/prelaunch-specs.js @@ -46,7 +46,7 @@ var waitForLaunch = function (app, extraArgs, done) { return proc; }; -describe("common - prelaunch @skip-ci", function () { +describe("common - prelaunch @skip-ci @skip-ios6", function () { // TODO: test helpers need to be modified to cope prelaunch on sauce. // leaving it out for now. this.timeout(env.MOCHA_INIT_TIMEOUT); diff --git a/test/functional/gappium/basic-specs.js b/test/functional/gappium/basic-specs.js index 77046d6b9..3822ba4de 100644 --- a/test/functional/gappium/basic-specs.js +++ b/test/functional/gappium/basic-specs.js @@ -37,7 +37,7 @@ var activateWebView = function (driver) { }); }; -describe("gappium", function () { +describe("gappium @skip-ios6", function () { describe('HelloGappium', function () { var driver; setup(this, desired).then(function (d) { driver = d; }); diff --git a/test/functional/ios/prefs/autocomplete-settings-specs.js b/test/functional/ios/prefs/autocomplete-settings-specs.js index 364f5c4a3..0bc54e49c 100644 --- a/test/functional/ios/prefs/autocomplete-settings-specs.js +++ b/test/functional/ios/prefs/autocomplete-settings-specs.js @@ -10,8 +10,8 @@ var desired = { app: 'settings' }; -describe("prefs @skip-ios7", function () { - +describe("prefs @skip-ios6", function () { + // TODO: cannot install settings app on ios6 describe('settings app', function () { var driver; setup(this, desired).then(function (d) { driver = d; }); diff --git a/test/functional/ios/prefs/location-settings-specs.js b/test/functional/ios/prefs/location-settings-specs.js index 1cc8785df..6d336340f 100644 --- a/test/functional/ios/prefs/location-settings-specs.js +++ b/test/functional/ios/prefs/location-settings-specs.js @@ -10,7 +10,9 @@ var desired = { app: 'settings' }; -describe("prefs @skip-ios7", function () { +describe("prefs @skip-ios7 @skip-ios6", function () { + // TODO: check why it fails on ios7 + // TODO: cannot install settings app on ios6 var checkLocServ = function (driver, expected, cb) { driver diff --git a/test/functional/ios/prefs/safari-allows-popup-specs.js b/test/functional/ios/prefs/safari-allows-popup-specs.js index 4280c8a94..c705f735f 100644 --- a/test/functional/ios/prefs/safari-allows-popup-specs.js +++ b/test/functional/ios/prefs/safari-allows-popup-specs.js @@ -1,6 +1,7 @@ "use strict"; -var setup = require("../../common/setup-base") +var env = require("../../../helpers/env") + , setup = require("../../common/setup-base") , chai = require('chai') , _ = require('underscore'); @@ -10,52 +11,57 @@ var desired = { browserName: 'safari' }; -describe('safari prefs @skip-ios7', function () { - var checkSafariSetting = require('./check-safari-settings').ios6; +if (env.IOS6) { + describe('safari prefs @skip-ios6', function () { + // TODO: safari does not install on ios6 + var checkSafariSetting = require('./check-safari-settings').ios6; - describe('using safariAllowPopups', function () { - var driver; - setup(this, _.defaults({safariAllowPopups: true}, desired)) - .then(function (d) { driver = d; }); + describe('using safariAllowPopups', function () { + var driver; + setup(this, _.defaults({safariAllowPopups: true}, desired)) + .then(function (d) { driver = d; }); - it('should respond to cap when true', function (done) { - checkSafariSetting(driver, 'popups', 0, done); + it('should respond to cap when true', function (done) { + checkSafariSetting(driver, 'popups', 0, done); + }); + }); + + describe('using safariAllowPopups', function () { + var driver; + setup(this, _.defaults({safariAllowPopups: false}, desired)) + .then(function (d) { driver = d; }); + + it('should respond to cap when false', function (done) { + checkSafariSetting(driver, 'popups', 1, done); + }); }); }); +} else if (env.IOS7) { + describe('safari ios7 prefs @skip-ci', function () { + // TODO modify the test to enable ci, right know it is checking a local file, + // not gonna work with sauce + var checkSafariSetting = require('./check-safari-settings').ios7; - describe('using safariAllowPopups', function () { - var driver; - setup(this, _.defaults({safariAllowPopups: false}, desired)) - .then(function (d) { driver = d; }); + describe('using safariAllowPopups', function () { + var driver; + setup(this, _.defaults({safariAllowPopups: true}, desired)) + .then(function (d) { driver = d; }); - it('should respond to cap when false', function (done) { - checkSafariSetting(driver, 'popups', 1, done); + it('should respond to cap when true', function (done) { + checkSafariSetting('WebKitJavaScriptCanOpenWindowsAutomatically', true, done); + }); + }); + + describe('using safariAllowPopups', function () { + var driver; + setup(this, _.defaults({safariAllowPopups: false}, desired)) + .then(function (d) { driver = d; }); + + it('should respond to cap when false', function (done) { + checkSafariSetting('WebKitJavaScriptCanOpenWindowsAutomatically', false, done); + }); }); }); -}); +} -describe('safari ios7 prefs @skip-ios6 @skip-ci', function () { - // TODO modify the test to enable ci, right know it is checking a local file, - // not gonna work with sauce - var checkSafariSetting = require('./check-safari-settings').ios7; - describe('using safariAllowPopups', function () { - var driver; - setup(this, _.defaults({safariAllowPopups: true}, desired)) - .then(function (d) { driver = d; }); - - it('should respond to cap when true', function (done) { - checkSafariSetting('WebKitJavaScriptCanOpenWindowsAutomatically', true, done); - }); - }); - - describe('using safariAllowPopups', function () { - var driver; - setup(this, _.defaults({safariAllowPopups: false}, desired)) - .then(function (d) { driver = d; }); - - it('should respond to cap when false', function (done) { - checkSafariSetting('WebKitJavaScriptCanOpenWindowsAutomatically', false, done); - }); - }); -}); diff --git a/test/functional/ios/prefs/safari-ignore-fraud-warning-specs.js b/test/functional/ios/prefs/safari-ignore-fraud-warning-specs.js index 312c4a9b6..042dede4a 100644 --- a/test/functional/ios/prefs/safari-ignore-fraud-warning-specs.js +++ b/test/functional/ios/prefs/safari-ignore-fraud-warning-specs.js @@ -1,6 +1,7 @@ "use strict"; -var setup = require("../../common/setup-base") +var env = require("../../../helpers/env") + , setup = require("../../common/setup-base") , chai = require('chai') , _ = require('underscore'); @@ -10,52 +11,55 @@ var desired = { browserName: 'safari' }; -describe('safari prefs @skip-ios7', function () { - var checkSafariSetting = require('./check-safari-settings').ios6; +if (env.IOS6) { + describe('safari prefs @skip-ios6', function () { + // TODO: safari does not install on ios6 + var checkSafariSetting = require('./check-safari-settings').ios6; - describe('using safariIgnoreFraudWarning', function () { - var driver; - setup(this, _.defaults({safariIgnoreFraudWarning: true}, desired)) - .then(function (d) { driver = d; }); + describe('using safariIgnoreFraudWarning', function () { + var driver; + setup(this, _.defaults({safariIgnoreFraudWarning: true}, desired)) + .then(function (d) { driver = d; }); - it('should respond to cap when true', function (done) { - checkSafariSetting(driver, 'fraud', 0, done); + it('should respond to cap when true', function (done) { + checkSafariSetting(driver, 'fraud', 0, done); + }); + }); + + describe('using safariIgnoreFraudWarning', function () { + var driver; + setup(this, _.defaults({safariIgnoreFraudWarning: false}, desired)) + .then(function (d) { driver = d; }); + + it('should respond to cap when false', function (done) { + checkSafariSetting(driver, 'fraud', 1, done); + }); }); }); +} else if (env.IOS7) { + describe('safari ios7 prefs @skip-ci', function () { + // TODO modify the test to enable ci, right know it is checking a local file, + // not gonna work with sauce + var checkSafariSetting = require('./check-safari-settings').ios7; - describe('using safariIgnoreFraudWarning', function () { - var driver; - setup(this, _.defaults({safariIgnoreFraudWarning: false}, desired)) - .then(function (d) { driver = d; }); + describe('using safariIgnoreFraudWarning', function () { + var driver; + setup(this, _.defaults({safariIgnoreFraudWarning: true}, desired)) + .then(function (d) { driver = d; }); - it('should respond to cap when false', function (done) { - checkSafariSetting(driver, 'fraud', 1, done); + it('should respond to cap when true', function (done) { + checkSafariSetting('WarnAboutFraudulentWebsites', false, done); + }); + }); + + describe('using safariIgnoreFraudWarning', function () { + var driver; + setup(this, _.defaults({safariIgnoreFraudWarning: false}, desired)) + .then(function (d) { driver = d; }); + + it('should respond to cap when false', function (done) { + checkSafariSetting('WarnAboutFraudulentWebsites', true, done); + }); }); }); -}); - -describe('safari ios7 prefs @skip-ios6 @skip-ci', function () { - // TODO modify the test to enable ci, right know it is checking a local file, - // not gonna work with sauce - var checkSafariSetting = require('./check-safari-settings').ios7; - - describe('using safariIgnoreFraudWarning', function () { - var driver; - setup(this, _.defaults({safariIgnoreFraudWarning: true}, desired)) - .then(function (d) { driver = d; }); - - it('should respond to cap when true', function (done) { - checkSafariSetting('WarnAboutFraudulentWebsites', false, done); - }); - }); - - describe('using safariIgnoreFraudWarning', function () { - var driver; - setup(this, _.defaults({safariIgnoreFraudWarning: false}, desired)) - .then(function (d) { driver = d; }); - - it('should respond to cap when false', function (done) { - checkSafariSetting('WarnAboutFraudulentWebsites', true, done); - }); - }); -}); +} \ No newline at end of file diff --git a/test/functional/ios/safari/screenshot-specs.js b/test/functional/ios/safari/screenshot-specs.js index 5b8a53d8d..7a4c6dea4 100644 --- a/test/functional/ios/safari/screenshot-specs.js +++ b/test/functional/ios/safari/screenshot-specs.js @@ -2,7 +2,7 @@ var setup = require("../../common/setup-base"); -describe('safari - screenshots', function () { +describe('safari - screenshots @skip-ios6', function () { var driver; setup(this, {browserName: 'safari'}).then(function (d) { driver = d; }); diff --git a/test/functional/ios/safari/webview/alerts-specs.js b/test/functional/ios/safari/webview/alerts-specs.js index 97bf752b2..b5533d809 100644 --- a/test/functional/ios/safari/webview/alerts-specs.js +++ b/test/functional/ios/safari/webview/alerts-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/alerts-base')(desired); }); diff --git a/test/functional/ios/safari/webview/basics-specs.js b/test/functional/ios/safari/webview/basics-specs.js index 2f5bbad48..ce5d63589 100644 --- a/test/functional/ios/safari/webview/basics-specs.js +++ b/test/functional/ios/safari/webview/basics-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/basics-base')(desired); }); diff --git a/test/functional/ios/safari/webview/cookies-specs.js b/test/functional/ios/safari/webview/cookies-specs.js index 63174960a..44a4cb523 100644 --- a/test/functional/ios/safari/webview/cookies-specs.js +++ b/test/functional/ios/safari/webview/cookies-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/cookies-base')(desired); }); diff --git a/test/functional/ios/safari/webview/execute-async-specs.js b/test/functional/ios/safari/webview/execute-async-specs.js index 476a73809..806823f85 100644 --- a/test/functional/ios/safari/webview/execute-async-specs.js +++ b/test/functional/ios/safari/webview/execute-async-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/execute-async-base')(desired); }); diff --git a/test/functional/ios/safari/webview/execute-specs.js b/test/functional/ios/safari/webview/execute-specs.js index 714d06d98..71c0c202c 100644 --- a/test/functional/ios/safari/webview/execute-specs.js +++ b/test/functional/ios/safari/webview/execute-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/execute-base')(desired); }); diff --git a/test/functional/ios/safari/webview/frames-specs.js b/test/functional/ios/safari/webview/frames-specs.js index a53de9c85..4b6c50606 100644 --- a/test/functional/ios/safari/webview/frames-specs.js +++ b/test/functional/ios/safari/webview/frames-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/frames-base')(desired); }); diff --git a/test/functional/ios/safari/webview/iframes-specs.js b/test/functional/ios/safari/webview/iframes-specs.js index 88f0d3fc8..9546fd0e7 100644 --- a/test/functional/ios/safari/webview/iframes-specs.js +++ b/test/functional/ios/safari/webview/iframes-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/iframes-base')(desired); }); diff --git a/test/functional/ios/safari/webview/implicit-wait-specs.js b/test/functional/ios/safari/webview/implicit-wait-specs.js index a0a8e031b..7ec5f2e35 100644 --- a/test/functional/ios/safari/webview/implicit-wait-specs.js +++ b/test/functional/ios/safari/webview/implicit-wait-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/implicit-wait-base')(desired); }); diff --git a/test/functional/ios/safari/webview/window-title-specs.js b/test/functional/ios/safari/webview/window-title-specs.js index 6f17d7138..b2d29b3f8 100644 --- a/test/functional/ios/safari/webview/window-title-specs.js +++ b/test/functional/ios/safari/webview/window-title-specs.js @@ -1,6 +1,6 @@ "use strict"; var desired = require('./desired'); -describe("safari - webview", function () { +describe("safari - webview @skip-ios6", function () { require('../../../common/webview/window-title-base')(desired); }); diff --git a/test/functional/ios/safari/windows-frame-specs.js b/test/functional/ios/safari/windows-frame-specs.js index 26a1bdc4e..d556375f7 100644 --- a/test/functional/ios/safari/windows-frame-specs.js +++ b/test/functional/ios/safari/windows-frame-specs.js @@ -5,7 +5,7 @@ var env = require('../../../helpers/env') , loadWebView = webviewHelper.loadWebView , spinTitle = webviewHelper.spinTitle; -describe("safari - windows-frame", function () { +describe("safari - windows-frame @skip-ios6", function () { // TODO: enable safari tests on ci describe('windows and frames (' + env.DEVICE + ')', function () { var driver; diff --git a/test/functional/ios/testapp/basic-specs.js b/test/functional/ios/testapp/basic-specs.js index 6d36cf821..53ad3b43e 100644 --- a/test/functional/ios/testapp/basic-specs.js +++ b/test/functional/ios/testapp/basic-specs.js @@ -195,7 +195,7 @@ describe('testapp - basic', function () { }).nodeify(done); }); - it('should be able to get syslog logs', function (done) { + it('should be able to get syslog logs @skip-ios6', function (done) { driver .setImplicitWaitTimeout(4000) .elementByName('SumLabelz') diff --git a/test/functional/ios/testapp/location-specs.js b/test/functional/ios/testapp/location-specs.js index 0d9dfc6a8..fd126e1c3 100644 --- a/test/functional/ios/testapp/location-specs.js +++ b/test/functional/ios/testapp/location-specs.js @@ -35,7 +35,7 @@ describe('testapp - location - 1', function () { }); }); -describe('testapp - location - 2', function () { +describe('testapp - location - 2 @skip-ios6', function () { var driver; var newDesired = _.clone(desired); _.extend(newDesired, { diff --git a/test/functional/ios/webview/basics-specs.js b/test/functional/ios/webview/basics-specs.js index 7194c1706..aa70d54f0 100644 --- a/test/functional/ios/webview/basics-specs.js +++ b/test/functional/ios/webview/basics-specs.js @@ -98,7 +98,7 @@ describe('webview - basics', function () { .nodeify(done); }); - it('switching back and forth between native and webview contexts should work', function (done) { + it('switching back and forth between native and webview contexts should work @skip-ios6', function (done) { driver .contexts() .context("WEBVIEW_1") diff --git a/test/functional/ios/webview/desired.js b/test/functional/ios/webview/desired.js index 7ebb83eab..d807db82b 100644 --- a/test/functional/ios/webview/desired.js +++ b/test/functional/ios/webview/desired.js @@ -1,7 +1,8 @@ "use strict"; -var getAppPath = require('../../../helpers/app').getAppPath; +var env = require('../../../helpers/env') + , getAppPath = require('../../../helpers/app').getAppPath; module.exports = { - app: getAppPath('WebViewApp') + app: env.IOS6 ? "assets/WebViewApp6.1.app.zip" : getAppPath('WebViewApp') };