# @config-plugins/detox

> Config plugin to auto configure detox on prebuild

Latest version **11.0.0** (published 2025-06-02) · MIT license · 0 weekly downloads

## Install

```sh
npm install @config-plugins/detox
pnpm add @config-plugins/detox
yarn add @config-plugins/detox
bun add @config-plugins/detox
```

## Health

**Score 50/100 (C)** — status: stable.

Positive: has types; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 11.0.0 |
| Published | 2025-06-02 |
| First published | 2021-06-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 24.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 567 |
| Maintainers | fiber-god, betoatexpo, ide, brentvatne, evanbacon, quinlanj, expoadmin, tsapeta, exponent, wschurman, bycedric, lukmccall, jonsamp, princefleaswallow, kudochien, keith-kurak, alanhughes, simek, gabrieldonadel, douglowder, kadikraman, aleqsio, radoslawkrzemien, expo-bot, philpl, marklawlor |
| Keywords | react-native, expo, detox, e2e |

## Links

- npm: https://www.npmjs.com/package/@config-plugins/detox
- Repository: https://github.com/expo/config-plugins
- Homepage: https://github.com/expo/config-plugins#readme
- Issues: https://github.com/expo/config-plugins/issues
- npm.io page: https://npm.io/package/@config-plugins/detox

## Dependencies (1)

- [expo-build-properties](https://npm.io/package/expo-build-properties.md) ^0.13.1

## Alternatives

- [@snazzah/davey](https://npm.io/package/@snazzah/davey.md) — 1.5M weekly downloads
- [@vendure/testing](https://npm.io/package/@vendure/testing.md) — 8.3K weekly downloads
- [vue-simple-context-menu](https://npm.io/package/vue-simple-context-menu.md) — 6.6K weekly downloads
- [cypress-webpack-preprocessor-v5](https://npm.io/package/cypress-webpack-preprocessor-v5.md) — 2.1K weekly downloads
- [@backstage/plugin-catalog-backend-module-puppetdb](https://npm.io/package/@backstage/plugin-catalog-backend-module-puppetdb.md) — 1.3K weekly downloads

## Recent versions

- 11.0.0 (latest) — 2025-06-02
- 9.0.0 — 2024-12-03
- 8.0.0 — 2024-05-08
- 7.0.0 — 2024-02-06
- 6.0.0 — 2023-07-14
- 5.0.1 — 2023-03-09
- 5.0.0 — 2023-03-07
- 4.0.0 — 2022-11-17
- 3.0.0 — 2022-08-08
- 2.0.0 — 2022-05-13
- 1.2.3 — 2022-03-22
- 1.2.2 — 2022-03-16
- 1.2.1 — 2022-03-16
- 1.0.1 — 2022-03-15
- 1.2.0 — 2022-03-03
- … 3 more at https://npm.io/package/@config-plugins/detox/versions

## README

# config-plugins/detox

Config plugin to auto-configure Detox when the native code is generated (`npx expo prebuild`).

## Versioning

Ensure you use versions that work together!

| `expo` | `detox` | `@config-plugins/detox` |
| ------ | ------- | ----------------------- |
| 53.0.0 | 20.37.0 | ^10.0.0                 |
| 52.0.0 | 20.28.0 | ^9.0.0                  |
| 51.0.0 | 20.20.3 | ^8.0.0                  |
| 50.0.0 | 20.17.0 | ^7.0.0                  |
| 49.0.0 | 20.11.0 | ^6.0.0                  |
| 48.0.0 | 20.5.0  | ^5.0.0                  |
| 47.0.0 | 19.13.0 | ^4.0.0                  |
| 46.0.0 | 19.9.0  | ^3.0.0                  |
| 45.0.0 | 19.6.9  | ^2.0.0                  |
| 44.0.0 | 19.1.0  | ^1.1.0                  |
| 43.0.0 | 19.1.0  | ~1.0.0                  |
| 40.0.0 | 18.6.2  | ~0.0.0                  |

Most notably, the minimum required Kotlin version changed from `1.3.50` in SDK 40 to `1.4.21` in SDK 43. Failure to use the correct versioning could result in Android build errors like `Execution failed for task ':react-native-screens:compileDebugKotlin'.` or `Execution failed for task ':expo:compileDebugKotlin'.`.

### Add the package to your npm dependencies

First install the package with yarn, npm, or [`npx expo install`](https://docs.expo.io/workflow/expo-cli/#expo-install).

```
npx expo install detox @config-plugins/detox
```

Detox is an end-to-end (e2e) testing library for iOS and Android. You can use it to automate usage of your native project. This example demonstrates how to use Detox and Jest in a native project that you build locally.

## 🚀 How to use

- Install with `yarn` or `npm install`
  - Install iOS packages: `npx pod-install`
- Run `yarn e2e:ios` to build and test the iOS app on a simulator (macOS only).
  - This combines `yarn build:ios` and `yarn test:ios`.
  - You can run `yarn test:ios --watch` after building to keep the tests in watch mode.
- Run `yarn e2e:android` to build and test the Android app on a Google emulator (Genymotion requires extra config).
  - This combines `yarn build:android` and `yarn test:android`.
  - You can run `yarn test:android --watch` after building to keep the tests in watch mode.
- Run `yarn e2e:android-release` to build and test the Android app in release mode.

## Recreate this example

- `npx create-react-native-app -t blank`
  - `cd` into the project
- Install packages:
  - `yarn add -D detox @config-plugins/detox @babel/core @babel/runtime @types/jest babel-jest jest jest-circus ts-jest`
  - touch `tsconfig.json`
  - Run `expo start` to ensure TS is setup correctly.
- Add the following plugin to your `app.json` plugins array (before prebuilding). This'll automatically configure the Android native code to support Detox:
  ```json
  {
    "plugins": ["@config-plugins/detox"]
  }
  ```
- Generate the native code `npx expo prebuild`
- Run `yarn detox init -r jest`

## API

The plugin provides props for extra customization. Every time you change the props or plugins, you'll need to rebuild (and `prebuild`) the native app. If no extra properties are added, defaults will be used.

- `skipProguard` (_boolean_): Disable adding proguard minification to the `app/build.gradle`. Defaults to `false`.
- `subdomains` (_string[] | '\*'_): Hostnames to add to the network security config. Pass `'*'` to allow all domains. Defaults to `['10.0.2.2', 'localhost']`.

`app.config.js`

```ts
export default {
  plugins: [
    [
      "@config-plugins/detox",
      {
        skipProguard: false,
        subdomains: ["10.0.2.2", "localhost"],
      },
    ],
  ],
};
```

## FAQ

If the following commands fail, you can get better debug info by running a subset command:

- `yarn e2e:ios`: `yarn ios` (builds the iOS app). xcodebuild compile errors may show in a more helpful format (using xcpretty).
- `yarn e2e:android`: `yarn android` (builds the Android app). Android compile errors may show in a more helpful format.

### `yarn e2e:android` failed

If you get the error:

```sh
detox[98696] ERROR: DetoxRuntimeError: Cannot boot Android Emulator with the name: 'Pixel_API_28'

HINT: Make sure you choose one of the available emulators: Pixel_3_API_30,Pixel_6_Pro_API_33,Pixel_C_API_30
```

Be sure to change the first emulator name (in my case "Pixel_API_28") with one of the suggested emulators (in my case Pixel_3_API_30, Pixel_6_Pro_API_33, Pixel_C_API_30), in the `detox.config.js` file under `devices.emulator.device.avdName`. More emulators can be created in Android Studio.

---

If you get the error:

```sh
Error: app binary not found at '/Users/.../with-detox/android/app/build/outputs/apk/debug/app-debug.apk', did you build it
```

It means the build step failed, ensure running `yarn android`, and `yarn build:android` works before trying `yarn e2e:android` again.

---

If you get the error:

```sh
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
```

Be sure to disable any proxies running on your computer that may be blocking requests (i.e. Charles Proxy). You may need to run `yarn clean:android` before attempting to build again.

---

If you get the error:

```sh
CLEARTEXT communication to [some host] not permitted by network security policy
```

This means you're attempting to connecting over plain HTTP (not HTTPS) to a host that _isn't_ in your `subdomains` settings (defaults to `['10.0.2.2', 'localhost']`). Set your subdomain settings appropriately. For example, if you're building Detox into a dev-client, you'll want to make sure you can connect to your Metro server:

```javascript
module.exports = {
  plugins: [
    [
      "@config-plugins/detox",
      {
        subdomains:
          process.env.EAS_BUILD_PROFILE === "development"
            ? "*"
            : ["10.0.2.2", "localhost"],
      },
    ],
  ],
};
```

## 📝 Notes

- [Detox docs](https://wix.github.io/Detox/docs/introduction/getting-started/)

---
_Source: https://npm.io/package/@config-plugins/detox · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
