Permissions

Grant, deny or unset the app's privacy permissions from a spec or a suite before it launches, so the test reaches the screen behind the prompt, or the denied path.

device.permissions sets the app's privacy permissions directly, so a spec does not tap through a system prompt (iOS does not always raise one) and can test the denied path on purpose.

await device.permissions.set({ location: "denied", notifications: "granted" });
await app.open();

Set permissions before app.open(): iOS terminates a running app whose permission changes.

MemberDoes
set({ location?, camera?, photos?, … }, { bundleId? })each "granted" | "denied" | "unset" (unset asks again). Returns { bundleId, applied, skipped }; none applicable throws E_UNSUPPORTED. Default app: the suite's
reset({ bundleId? })every name this test set back to the suite's value, else "unset"

Names: location locationAlways camera photos photosAdd contacts contactsLimited notifications microphone calendar reminders motion mediaLibrary siri. A name the platform or the app cannot take comes back in skipped (which).

In a suite

warden.config.ts
conditions: { permissions: { location: "denied", camera: "granted" } },

Applied before the app launches, and put back after each spec.

By hand with warden ui permission: Permissions on a simulator.

On this page