private func acceptPermissionAlert() {
_ = addUIInterruptionMonitor(withDescription: \"\") { alert -> Bool in
if alert.buttons[\"Don’t Allow\"].exists {
I'vs found that addUIInterruptionMonitor sometimes doesn't handle an alert in time, or until tests have finished. If it isn't working, try using Springboard, which manages the iOS home screen. You can access alerts, buttons, and more from there, and this is particularly useful for tests where you know exactly when an alert will show.
So, something like this:
`let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
let alertAllowButton = springboard.buttons.element(boundBy: 1)
if alertAllowButton.waitForExistence(timeout: 5) {
alertAllowButton.tap()
}`
The buttons.element(boundBy:1)
will ensure you tap the button on the right, change 1 to 0 to tap the left, (because sometimes the ' in "Don't Allow"
causes a problem).