11

I am trying to click on the Allow button using Detox.

enter image description here

I have tried the following:

Detox: iOS Simulator how to confirm alert message

I have also tried targeting the "Allow" button by element(by.label('Allow')).tap() and also by.text

I do not want to set location permissions upon app launch. I would like to simulate a user allowing and not allowing location permissions.

RonE
  • 306
  • 2
  • 14

3 Answers3

12

In your init.js file you can allow the permissions:

beforeAll(async () => {
  await detox.init(config, { launchApp: false });
  await device.launchApp({newInstance: true, permissions: {notifications: 'YES'}});
});

Permissions:

calendar=YES|NO
camera=YES|NO
contacts=YES|NO
health=YES|NO
homekit=YES|NO
location=always|inuse|never
medialibrary=YES|NO
microphone=YES|NO
motion=YES|NO
notifications=YES|NO
photos=YES|NO
reminders=YES|NO
siri=YES|NO

You can check the documentation here: https://github.com/wix/detox/blob/master/detox/test/e2e/13.permissions.test.js

Juan P. Ortiz
  • 518
  • 6
  • 20
  • This allows the permission, but people on my team want an actual click on the permission popup when the app loads...like a user would see and interact with. – RonE Jun 11 '19 at 20:18
2

This is not possible using Detox. The alert is presented from a different process, while Detox operates strictly in the app's process realm.

Leo Natan
  • 55,734
  • 8
  • 140
  • 186
-1

To "Allow" I have used this with success:

element(by.type('_UIAlertControllerActionView')).atIndex(1);

And for "Don't Allow", this should work:

return element(by.type('_UIAlertControllerActionView')).atIndex(0);