> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.doc-detective.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.doc-detective.com/_mcp/server.

# context

> A context in which to perform tests. If no contexts are specified but a context is required by one or more tests, Doc Detective attempts to identify a supported context in the current environment and run tests against it. For example, if a browser isn't specified but is required by steps in the test, Doc Detective will search for and use a supported browser available in the current environment.

A context in which to perform tests. If no contexts are specified but a context is required by one or more tests, Doc Detective attempts to identify a supported context in the current environment and run tests against it. For example, if a browser isn't specified but is required by steps in the test, Doc Detective will search for and use a supported browser available in the current environment.

## Referenced In

* [config](/reference/schemas/config)
* [specification](/reference/schemas/specification)
* [test](/reference/schemas/test)

## Fields

| Field           | Type                                                                                                                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Default |
| :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |
| \$schema        | string                                                                                                                                    | Optional. JSON Schema for this object. Accepted values: `https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/context_v3.schema.json`                                                                                                                                                                                                                                                                                                                                                                                             | —       |
| contextId       | string                                                                                                                                    | Optional. Unique identifier for the context.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | —       |
| platforms       | one of: - string - array of string                                                                                                        | Optional. Platforms to run tests on.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | —       |
| browsers        | one of: - string - object([Browser](/reference/schemas/browser)) - array of one of: string, object([Browser](/reference/schemas/browser)) | Optional. Browsers to run tests on. On a mobile (`android`/`ios`) platform entry, the browser runs on the managed device: `chrome` on Android, `safari` on iOS (other combinations skip the context), and it fills in automatically when omitted. Device browsers don't take desktop display config: authored `window`/`viewport` dimensions and `headless: false` are rejected on mobile entries (the device owns its display — control it via the device descriptor's `headless`/`deviceType`); `headless: true` matches this schema's default and is ignored. | —       |
| browserFallback | string                                                                                                                                    | Optional. Per-context override for the config-level [`browserFallback`](config) policy that governs whether a context whose browser can't start a driver session falls back to another available browser. Accepts the same values — `auto`, `explicit`, `off` — and, when set, takes precedence over the config-level value for the contexts this entry expands into. Omit it to inherit the config-level policy (which itself defaults to `auto`). Accepted values: `auto`, `explicit`, `off`                                                                   | —       |
| retries         | integer                                                                                                                                   | Optional. Per-context override for the config-level [`retries`](config) policy — how many times to re-run this context on a fresh session when its session turns out to be unusable mid-run. When set, takes precedence over the config-level value for the contexts this entry expands into. Omit it to inherit the config-level policy (which defaults to `1`). Set to `0` to disable retries for this context. Minimum: 0. Maximum: 10                                                                                                                        | —       |
| requires        | one of: - string - array of string - object([Requirements](/reference/schemas/requirements))                                              | Optional. Capabilities the environment must provide for this context to run. A string names a required command; an array names several; the object form checks commands (on PATH), files (paths, with `$VAR`/`$HOME` expansion), and environment variables. All entries are AND-ed. Any unmet requirement marks the context as SKIPPED — the same non-failing outcome as a `platforms` mismatch.                                                                                                                                                                 | —       |
| device          | one of: - string - object([Device descriptor](/reference/schemas/device-descriptor))                                                      | Optional. Default device for a mobile (`android`/`ios`) context. A string references a device by name; an object refines it. The `platform` is implied by the context, so it is not required here. When the named device doesn't already exist, Doc Detective creates it with defaults (see `deviceType`/`osVersion`), provided the toolchain is installed (`doc-detective install android` or `doc-detective install ios`). Same shape as `startSurface.device`.                                                                                                | —       |

## Examples

```json
{
  "platforms": "linux",
  "browsers": "chrome"
}
```

```json
{
  "platforms": [
    "windows",
    "mac",
    "linux"
  ],
  "browsers": [
    "chrome",
    "firefox",
    "webkit"
  ]
}
```

```json
{
  "browsers": {
    "name": "chrome",
    "headless": true
  }
}
```

```json
{
  "browsers": [
    {
      "name": "chrome",
      "headless": true
    },
    {
      "name": "firefox"
    }
  ]
}
```

```json
{
  "platforms": [
    "mac",
    "linux"
  ],
  "browsers": {
    "name": "chrome",
    "headless": true
  }
}
```

```json
{
  "platforms": [
    "windows",
    "mac",
    "linux"
  ],
  "browsers": [
    {
      "name": "chrome",
      "headless": true,
      "window": {
        "width": 1920,
        "height": 1080
      },
      "viewport": {
        "width": 1600,
        "height": 900
      }
    },
    {
      "name": "firefox",
      "window": {
        "width": 1366,
        "height": 768
      }
    },
    {
      "name": "webkit",
      "headless": false,
      "viewport": {
        "width": 1440,
        "height": 900
      }
    }
  ]
}
```

```json
{
  "platforms": "mac",
  "browsers": [
    {
      "name": "safari",
      "window": {
        "width": 1280,
        "height": 800
      }
    }
  ]
}
```

```json
{
  "platforms": "android"
}
```

```json
{
  "platforms": [
    "windows",
    "mac",
    "android",
    "ios"
  ],
  "browsers": "chrome"
}
```

```json
{
  "platforms": "ios",
  "browsers": "safari",
  "device": {
    "name": "test-iphone",
    "deviceType": "phone"
  }
}
```