# @appium/execute-driver-plugin

> Plugin for batching and executing Appium driver commands

Latest version **7.0.0** (published 2026-08-24) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @appium/execute-driver-plugin
pnpm add @appium/execute-driver-plugin
yarn add @appium/execute-driver-plugin
bun add @appium/execute-driver-plugin
```

## Health

**Score 80/100 (A)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score; popular repo.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 7.0.0 |
| Published | 2026-08-24 |
| First published | 2022-01-22 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | ^20.19.0 \|\| ^22.12.0 \|\| >=24.0.0 |
| Dependencies | 2 |
| Unpacked size | 92.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 21962 |
| Author | https://github.com/appium |
| Maintainers | jlipps, nick.mokhnach, kazucocoa |
| Keywords | android, automation, firefoxos, ios, javascript, selenium, testing, webdriver |

## Links

- npm: https://www.npmjs.com/package/@appium/execute-driver-plugin
- Repository: https://github.com/appium/appium
- Homepage: https://appium.io
- Issues: https://github.com/appium/appium/issues
- npm.io page: https://npm.io/package/@appium/execute-driver-plugin

## Dependencies (2)

- [webdriverio](https://npm.io/package/webdriverio.md) 9.31.1
- [@appium/support](https://npm.io/package/@appium/support.md) 7.2.7

## 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

- 7.0.0 (latest) — 2026-08-24
- 8.0.0-beta.1 (beta) — 2026-09-19
- 5.0.0-rc.1 (rc) — 2025-08-14
- 8.0.0-beta.0 — 2026-09-19
- 6.0.7 — 2026-07-25
- 6.0.6 — 2026-06-18
- 6.0.5 — 2026-06-18
- 6.0.4 — 2026-05-31
- 6.0.3 — 2026-05-06
- 6.0.2 — 2026-04-23
- 6.0.1 — 2026-04-09
- 6.0.0 — 2026-03-08
- 5.1.0 — 2026-01-26
- 5.0.3 — 2025-12-04
- 5.0.2 — 2025-10-08
- … 57 more at https://npm.io/package/@appium/execute-driver-plugin/versions

## README

# @appium/execute-driver-plugin

> Appium plugin for running a driver script in a child process

[![NPM version](https://img.shields.io/npm/v/@appium/execute-driver-plugin.svg)](https://npmjs.org/package/@appium/execute-driver-plugin)
[![Downloads](https://img.shields.io/npm/dm/@appium/execute-driver-plugin.svg)](https://npmjs.org/package/@appium/execute-driver-plugin)

This plugin adds a new server endpoint that allows executing scripts in a child process. Currently,
the only supported driver type is `webdriverio`, therefore the script must also be written in JS.

## Motivation

Running a driver script in a child process adds a degree of parallelisation, which may result in
faster test execution.

> [!WARNING]
> This plugin enables execution of arbitrary JavaScript code. We recommend only using this plugin in a controlled environment. Scripts run in a Node.js `vm` context with a hardened view of the WebdriverIO driver (host-realm prototype metadata is not exposed), but `vm` is still not a full security boundary for untrusted code; treat this plugin as highly privileged.

## Installation

```
appium plugin install execute-driver
```

## Usage

Like all plugins, this plugin must be explicitly activated when launching the Appium server. Since
the input script can be arbitrary JavaScript, this is [an insecure feature](https://appium.io/docs/en/latest/guides/security/),
and must also be explicitly enabled:

```
appium --use-plugins=execute-driver --allow-insecure=<driver>:execute_driver_script
```

Once the plugin is running, you can call the new command:

```js
// JavaScript (WebdriverIO)
const script = `return await driver.getTimeouts();`;
const {result, logs} = await driver.executeDriverScript(script);
// 'result' contains the data returned by the script (in this case, the response to 'getTimeouts')
// 'logs' contains everything logged to console during script execution
```

Refer to your Appium client documentation for the exact syntax of the script execution command.

Since plugin version `6.0.0`, scripts can also use the `setTimeout`/`clearTimeout` methods,
enabling the use of unconditional delays:

```js
// this will take around one second to execute
const script = `return await new Promise((resolve) => setTimeout(resolve, 1000));`;
```

## API

[Refer to the Appium documentation](https://appium.io/docs/en/latest/reference/api/plugins/#execute-driver-plugin).

## License

Apache-2.0

---
_Source: https://npm.io/package/@appium/execute-driver-plugin · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
