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

# Appium Capabilities

> Pass custom Appium capabilities to control how the app starts.

Under the hood, noqa drives your app through Appium. For most tests you never need to think about this — the defaults just work. But when you need finer control over how a session starts, you can pass custom **Appium capabilities**, and noqa applies them when it opens the app.

## Where to set them

You can set capabilities at two levels:

* **Per test case** — Dashboard → Test Cases → open a case → **Configuration** → **Appium Capabilities**. These apply to that case only.
* **Per app** — Dashboard → app **Settings** → **Appium Capabilities**. These apply to every case in the app.

Case-level capabilities override app-level ones with the same key. Each capability is a key/value pair — for example the key `appium:autoLaunch` with the value `false`. The same values apply to both local and cloud runs.

<Tip>Only add capabilities when you actually need them. The defaults are right for most tests.</Tip>

## Start without launching the app

By default noqa launches your app at the start of a test. Sometimes you don't want that — for example, when the flow starts on a website rather than in the app.

Set `appium:autoLaunch` to `false`. noqa still installs the app, but leaves it closed. Then describe where to start in the instructions:

```
Open example.com and sign in with test@example.com.
```

The agent begins from the home screen (or the browser) instead of your app.

| Capability          | Value   |
| ------------------- | ------- |
| `appium:autoLaunch` | `false` |

## Android: apps with more than one entry point

Some Android apps have several launch activities — a normal entry, a debug entry, a deeplink handler, and so on. To make a test start from a specific one, name it with `appium:appActivity`.

If the activity that opens is not the one you end up on (for example, a splash screen hands off to the main screen), also set `appium:appWaitActivity` so Appium waits for the right screen before the test begins:

| Capability               | Value                       |
| ------------------------ | --------------------------- |
| `appium:appActivity`     | `.debug.DebugEntryActivity` |
| `appium:appWaitActivity` | `.main.MainActivity`        |

You can use `*` as a wildcard in `appWaitActivity` — for example `*.MainActivity` — when the package prefix varies between builds.
