> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qawolf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# iOS devices

> QA Wolf runs your iOS tests on real devices, with allowlisted and private device options for cases the shared pool can't cover.

QA Wolf runs your iOS tests on real, physical devices. By default these devices are shared across customers, and QA Wolf cleans up data and configuration between runs so each run starts from a known state.

Choose an iOS target in your flow and QA Wolf allocates a device for it.

```typescript theme={null}
import { flow } from "@qawolf/flows/ios";

export default flow(
  "Open iOS app",
  { target: "Latest iOS (iPhone)", launch: true },
  async ({ driver, test }) => {
    await test("app launches", async () => {
      await driver.pause(1000);
    });
  },
);
```

To install unreleased builds on shared devices without a per-app provisioning profile, QA Wolf resigns your app during installation. Resigning covers most test cases, but two situations need a different setup:

* Some features cannot be tested on a resigned app — see [Allowlisted devices](/qawolf/mobile/ios-allowlisted-devices).
* Some tests need devices that are not shared with other customers — see [Private devices](/qawolf/mobile/ios-private-devices).

See the [iOS Reference](/qawolf/libraries/flows/api-reference/ios) for the full list of targets and device controls.
