mirror of
https://github.com/appium/appium.git
synced 2026-04-28 22:40:34 -05:00
restart sim if safari dirs don't exist too, and add tests for safari caps on ios7
This commit is contained in:
+20
-6
@@ -97,6 +97,7 @@ IOS.prototype.init = function (args) {
|
||||
this.curCoords = null;
|
||||
this.curWebCoords = null;
|
||||
this.onPageChangeCb = null;
|
||||
this.dontDeleteSimApps = false;
|
||||
this.useRobot = args.robotPort > 0;
|
||||
this.robotUrl = this.useRobot ? "http://" + args.robotAddress + ":" + args.robotPort + "" : null;
|
||||
this.logNoColors = args.logNoColors;
|
||||
@@ -428,12 +429,18 @@ IOS.prototype.setPreferences = function (cb) {
|
||||
'safariIgnoreFraudWarning',
|
||||
'safariOpenLinksInBackground'
|
||||
];
|
||||
var safariSettingsCaps = settingsCaps.slice(2, 4);
|
||||
var needToSet = false;
|
||||
var needToSetSafari = false;
|
||||
_.each(settingsCaps, function (cap) {
|
||||
if (_.has(this.capabilities, cap)) {
|
||||
needToSet = true;
|
||||
if (_.contains(safariSettingsCaps, cap)) {
|
||||
needToSetSafari = true;
|
||||
}
|
||||
}
|
||||
}.bind(this));
|
||||
|
||||
if (!needToSet) {
|
||||
logger.info("No iOS / app preferences to set");
|
||||
return cb();
|
||||
@@ -459,7 +466,8 @@ IOS.prototype.setPreferences = function (cb) {
|
||||
}.bind(this);
|
||||
|
||||
logger.info("Setting iOS and app preferences");
|
||||
if (!settings.simDirsExist(this.iOSSDKVersion)) {
|
||||
if (!settings.simDirsExist(this.iOSSDKVersion) ||
|
||||
(needToSetSafari && !settings.safari7DirsExist(this.iOSSDKVersion))) {
|
||||
logger.info("Sim files for this SDK do not yet exist, launching the sim " +
|
||||
"to populate the applications and preference dirs");
|
||||
this.instantLaunchAndQuit(setPrefs);
|
||||
@@ -528,6 +536,7 @@ IOS.prototype.setSafariPrefs = function () {
|
||||
}
|
||||
if (_.size(settings) > 0) {
|
||||
settings.updateSafariSettings(this.iOSSDKVersion, safariSettings);
|
||||
this.dontDeleteSimApps = true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -763,6 +772,11 @@ IOS.prototype.setDeviceAndLaunchSimulator = function (cb) {
|
||||
} else {
|
||||
|
||||
var cleanup = function (cb) {
|
||||
if ((this.fullReset || this.reset) && this.dontDeleteSimApps) {
|
||||
logger.info("Not deleting simulator apps since we need to update " +
|
||||
"their plists before launch");
|
||||
return cb();
|
||||
}
|
||||
if (this.fullReset) {
|
||||
this.deleteSim(cb);
|
||||
} else if (this.reset) {
|
||||
@@ -896,11 +910,11 @@ IOS.prototype.cleanupAppState = function (cb) {
|
||||
logger.info("Deleted " + tcc);
|
||||
}
|
||||
|
||||
//var caches = path.join(root, 'Library/Caches');
|
||||
//if (fs.existsSync(caches)) {
|
||||
//rimraf.sync(caches);
|
||||
//logger.info("Deleted " + caches);
|
||||
//}
|
||||
var caches = path.join(root, 'Library/Caches');
|
||||
if (fs.existsSync(caches)) {
|
||||
rimraf.sync(caches);
|
||||
logger.info("Deleted " + caches);
|
||||
}
|
||||
|
||||
var media = path.join(root, 'Media');
|
||||
if (fs.existsSync(media)) {
|
||||
|
||||
@@ -136,9 +136,10 @@ var getSafari7Dirs = function (sdk) {
|
||||
}
|
||||
if (safariDir) {
|
||||
safariDirs.push(safariDir);
|
||||
} else {
|
||||
logger.warn("Could not find MobileSafari in sim applications at " +
|
||||
appsDir);
|
||||
}
|
||||
logger.warn("Could not find MobileSafari in sim applications at " +
|
||||
appsDir);
|
||||
});
|
||||
return safariDirs;
|
||||
};
|
||||
@@ -252,7 +253,6 @@ settings.updateLocationSettings = function (sdk, bundleId, authorized) {
|
||||
});
|
||||
settings.writeSettings('locationClients', prefSetPerFile, true);
|
||||
settings.writeSettings('locationCache', cachePrefSetPerFile, true);
|
||||
console.log(settings.getSettings(sdk, 'locationClients'));
|
||||
};
|
||||
|
||||
settings.updateSafariSettings = function (sdk, settingSet) {
|
||||
@@ -304,4 +304,12 @@ settings.simDirsExist = function (sdk) {
|
||||
return getSimDirs(sdk).length > 0;
|
||||
};
|
||||
|
||||
settings.safari7DirsExist = function (sdk) {
|
||||
try {
|
||||
return getSafari7Dirs(sdk).length > 0;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = settings;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
var env = require("../../helpers/env")
|
||||
, setup = require("../common/setup-base")
|
||||
, initSession = require('../../helpers/session').initSession
|
||||
, settingsPlists = require('../../../lib/devices/ios/settings.js')
|
||||
, chai = require('chai')
|
||||
, _ = require('underscore');
|
||||
|
||||
@@ -47,24 +48,6 @@ describe("prefs @skip-ios7", function () {
|
||||
}).nodeify(cb);
|
||||
};
|
||||
|
||||
var checkSafariSetting = function (driver, setting, expected, cb) {
|
||||
driver
|
||||
.elementsByTagName("tableCell")
|
||||
.then(function (els) { return els[4].click(); })
|
||||
.then(function () {
|
||||
if (setting === 'fraud') {
|
||||
return driver.elementByName("Fraud Warning");
|
||||
} else if (setting === 'popups') {
|
||||
return driver.elementByName("Block Pop-ups");
|
||||
} else {
|
||||
return new Error("Bad setting " + setting);
|
||||
}
|
||||
})
|
||||
.getValue().then(function (checked) {
|
||||
(!!parseInt(checked, 10)).should.eql(!!expected);
|
||||
}).nodeify(cb);
|
||||
};
|
||||
|
||||
describe('settings app with location services', function () {
|
||||
var driver;
|
||||
setup(this, _.defaults({locationServicesEnabled: true}, desired))
|
||||
@@ -84,46 +67,138 @@ describe("prefs @skip-ios7", function () {
|
||||
checkLocServ(driver, 0, done);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('safari prefs', function () {
|
||||
describe('using safariIgnoreFraudWarning', function () {
|
||||
var driver;
|
||||
setup(this, _.defaults({safariIgnoreFraudWarning: true}, desired))
|
||||
.then(function (d) { driver = d; });
|
||||
describe('safari prefs @skip-ios7', function () {
|
||||
var checkSafariSetting = function (driver, setting, expected, cb) {
|
||||
driver
|
||||
.elementsByTagName("tableCell")
|
||||
.then(function (els) { return els[4].click(); })
|
||||
.then(function () {
|
||||
if (setting === 'fraud') {
|
||||
return driver.elementByName("Fraud Warning");
|
||||
} else if (setting === 'popups') {
|
||||
return driver.elementByName("Block Pop-ups");
|
||||
} else {
|
||||
return new Error("Bad setting " + setting);
|
||||
}
|
||||
})
|
||||
.getValue().then(function (checked) {
|
||||
(!!parseInt(checked, 10)).should.eql(!!expected);
|
||||
}).nodeify(cb);
|
||||
};
|
||||
|
||||
it('should respond to cap when true', function (done) {
|
||||
checkSafariSetting(driver, 'fraud', 0, done);
|
||||
});
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
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: false}, 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 false', function (done) {
|
||||
checkSafariSetting(driver, 'fraud', 1, done);
|
||||
});
|
||||
});
|
||||
|
||||
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; });
|
||||
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);
|
||||
});
|
||||
it('should respond to cap when false', function (done) {
|
||||
checkSafariSetting(driver, 'popups', 1, done);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('safari ios7 prefs @skip-ios6', function () {
|
||||
|
||||
var desired = {
|
||||
app: 'safari'
|
||||
, device: 'iPhone Simulator'
|
||||
};
|
||||
|
||||
var checkSafariSetting = function (setting, expected, cb) {
|
||||
var settingsSets;
|
||||
var foundSettings;
|
||||
try {
|
||||
settingsSets = settingsPlists.getSettings('7', 'mobileSafari');
|
||||
} catch (e) {
|
||||
return cb(e);
|
||||
}
|
||||
_.size(settingsSets).should.be.above(0);
|
||||
for (var i = 0; i < settingsSets.length; i++) {
|
||||
try {
|
||||
foundSettings.push(settingsSets[i][setting]);
|
||||
} catch (e) {
|
||||
return cb(e);
|
||||
}
|
||||
}
|
||||
if (settingsSets.length > 0) {
|
||||
console.log("More than one safari settings set found, a failure here " +
|
||||
"might not be accurate");
|
||||
}
|
||||
for (i = 0; i < settingsSets.length; i++) {
|
||||
foundSettings[i].should.eql(expected);
|
||||
}
|
||||
cb();
|
||||
};
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user