@appium/execute-driver-plugin
v6.0.6
Published
Plugin for batching and executing Appium driver commands
Readme
@appium/execute-driver-plugin
Appium plugin for running a driver script in a child process
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
vmcontext with a hardened view of the WebdriverIO driver (host-realm prototype metadata is not exposed), butvmis still not a full security boundary for untrusted code; treat this plugin as highly privileged.
Installation
appium plugin install execute-driverUsage
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, and must also be explicitly enabled:
appium --use-plugins=execute-driver --allow-insecure=<driver>:execute_driver_scriptOnce the plugin is running, you can call the new command:
// 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 executionRefer 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:
// this will take around one second to execute
const script = `return await new Promise((resolve) => setTimeout(resolve, 1000));`;API
Refer to the Appium documentation.
License
Apache-2.0
