|
// |
|
// Springboard.swift |
|
// PriorityMatrixUITests |
|
// |
|
// Created by Saul Moreno Abril on 09/07/2018. |
|
// |
|
import Foundation |
|
import XCTest |
|
|
|
class Springboard { |
|
|
|
static let shared = Springboard() |
|
|
|
let springboard = XCUIApplication(privateWithPath: nil, bundleID: "com.apple.springboard")! |
|
let settings = XCUIApplication(privateWithPath: nil, bundleID: "com.apple.Preferences")! |
|
|
|
func deleteApp(withName name: String) { |
|
XCUIApplication().terminate() |
|
|
|
let springboard = self.springboard |
|
springboard.resolve() |
|
|
|
let predicate = NSPredicate(format: "label = %@", name); |
|
var count = springboard.icons.matching(predicate).count; |
|
while count > 0 { |
|
let icon = springboard.icons.matching(predicate).firstMatch |
|
if !icon.exists || !icon.isHittable { |
|
break; |
|
} |
|
|
|
let iconFrame = icon.frame |
|
let springboardFrame = springboard.frame |
|
|
|
//Tap & Hold the app icon in order to go to edit mode |
|
Thread.sleep(forTimeInterval: 0.5) |
|
icon.press(forDuration: 2.0) |
|
|
|
//Tap the little "X" button at approximately where it is. The X is not exposed directly |
|
Thread.sleep(forTimeInterval: 0.5) |
|
let vector = CGVector(dx: (iconFrame.minX + 5) / springboardFrame.maxX, dy: (iconFrame.minY + 5) / springboardFrame.maxY) |
|
springboard.coordinate(withNormalizedOffset: vector).tap() |
|
|
|
//tap the delete alert button if it appears (optional) |
|
Thread.sleep(forTimeInterval: 0.5) |
|
let deleteButton = springboard.alerts.buttons["Delete"]; |
|
if (deleteButton.exists) { |
|
deleteButton.tap(); |
|
} |
|
|
|
//Press home once make the icons stop wiggling |
|
Thread.sleep(forTimeInterval: 0.5) |
|
XCUIDevice.shared.press(.home); |
|
|
|
Thread.sleep(forTimeInterval: 0.5) |
|
count = springboard.icons.matching(predicate).count; |
|
} |
|
} |
|
|
|
func resetLocationAndPrivacySettings() { |
|
|
|
XCUIApplication().terminate() |
|
|
|
let springboard = self.springboard |
|
springboard.resolve() |
|
|
|
let settingsIcon = springboard.icons["Settings"] |
|
if settingsIcon.exists { |
|
|
|
//Press home button twise slowly in order to go to the first page of the springboard |
|
Thread.sleep(forTimeInterval: 0.5) |
|
XCUIDevice.shared.press(.home); |
|
|
|
//Press home button twise slowly in order to go to the first page of the springboard |
|
Thread.sleep(forTimeInterval: 0.5) |
|
XCUIDevice.shared.press(.home); |
|
|
|
//tap the settings icon |
|
Thread.sleep(forTimeInterval: 0.5) |
|
settingsIcon.tap() |
|
|
|
let settings = XCUIApplication(privateWithPath: nil, bundleID: "com.apple.Preferences")! |
|
|
|
//go to `General` -> `Reset` and tap `Reset Location & Privacy` |
|
settings.tables.staticTexts["General"].tap() |
|
settings.tables.staticTexts["Reset"].tap() |
|
settings.tables.staticTexts["Reset Location & Privacy"].tap() |
|
|
|
//tap the `Reset Warnings` button |
|
Thread.sleep(forTimeInterval: 0.5) |
|
settings.buttons["Reset Warnings"].tap() |
|
settings.terminate() |
|
} |
|
} |
|
} |