1

I'm trying to Enable / Disable the OS Notification Switch for the app I'm testing and I'm unable to. I get as far as the Settings > Notifications > App screen itself but the switch doesn't seem to have a button I can interact with.

This is how far I get:

let settingsApp = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
        settingsApp.launch()
        
settingsApp.tables.cells.staticTexts["Notifications"].tap()
settingsApp.tables.cells.staticTexts["app_name"].tap()

So far so good but here the button list is returned like this:

Failed to get matching snapshot: No matches found for Element at index 7 from input {(
    Button,
    Button, identifier: 'Lock Screen', Selected,
    Button, identifier: 'Notification Center',
    Button, identifier: 'Banners',
    Button, Disabled,
    Button, Disabled
)}

I've tried settingsApp.buttons.element(boundBy: 0).tap() but that ends up being the back button and boundBy: 1 ends up being the 'Lock Screen' button.

Is the 'Allow Notifications' toggle un-tappable? :)

Jon Reid
  • 20,545
  • 2
  • 64
  • 95

1 Answers1

1

Allow Notifications is a switch, which will respond to tap(). The following should do the trick:

settingsApp.tables.cells.switches["Allow Notifications"].tap()

I typically wrap switch tapping in a toggle function, which takes an expected state and only taps if it's not already in that state.

Mike Collins
  • 4,108
  • 1
  • 21
  • 28