Skip to content

Capabilities

This page lists various capabilities used and implemented by the Espresso driver. To learn more about capabilities, refer to the Appium documentation.

For other capabilities recognized by the Appium server, see their Appium docs reference page.

Standard

Refer to the W3C WebDriver documentation for more information about these capabilities.

platformName

Name Type Default
platformName string Not specified

May be set to android. Appium is not strict about this value if the appium:automationName capability is provided, so feel free to assign it to any platform name required, for example, for Selenium Grid compatibility.

pageLoadStrategy

Name Type Default
pageLoadStrategy string normal

General

automationName

Name Type Default
appium:automationName string Not specified

Specifies the Appium driver to use. Must be set to Espresso (case-insensitive)

Device Under Test

deviceName

Name Type Default
appium:deviceName string Not specified

The name of the device under test. Not used to select a device under test - use appium:udid for real devices and appium:avd for emulators.

platformVersion

Name Type Default
appium:platformVersion string Not specified

The platform version of the device under test. Used for device selection if appium:udid or appium:avd is not provided.

udid

Name Type Default
appium:udid string Not specified

UDID of the device under test. Can be retrieved by running adb devices. If neither this capability nor appium:avd is set, the driver will automatically try to use the first connected device. Always set this capability if you run parallel tests.

skipDeviceInitialization

Name Type Default
appium:skipDeviceInitialization boolean false

Whether to skip the device initialization phase of session creation, such as checking if the device is available, installing the Appium Settings helper, adjusting permissions, etc.. Can be useful if a session had already been previously started, and all the device setup steps were already completed.

skipSettingsAppReinstall

Name Type Default
appium:skipSettingsAppReinstall boolean false

Whether to skip installation of the Appium Settings helper application (io.appium.settings) upon session start. Can be useful for environments where this application is provisioned separately.

Available since driver version 9.0.2.

skipLogcatCapture

Name Type Default
appium:skipLogcatCapture boolean false

Whether to skip collecting device logcat logs.

clearDeviceLogsOnStart

Name Type Default
appium:clearDeviceLogsOnStart boolean false

Whether device logs should be cleared upon session start. Maps to the -c flag of adb logcat.

logcatFormat

Name Type Default
appium:logcatFormat string threadtime

The output format of device logcat logs. Maps to the -v flag of adb logcat. Refer to the logcat documentation for supported values.

logcatFilterSpecs

Name Type Default
appium:logcatFilterSpecs string or Array<string> Not specified

One or more filter expressions to use for filtering device logcat output. Refer to the logcat documentation for the format of a filter expression.

ignoreHiddenApiPolicyError

Name Type Default
appium:ignoreHiddenApiPolicyError boolean false

Whether to ignore failures caused by the driver automatically relaxing Android's hidden API access policies, in order to enable access to non-SDK interfaces (such as logging). May be useful on devices where access to these policies has been locked by its vendor.

disableSuppressAccessibilityService

Name Type Default
appium:disableSuppressAccessibilityService boolean false

Whether the instrumentation process should avoid suppressing accessibility services during the session. Useful if your automated test needs these services.

disableWindowAnimation

Name Type Default
appium:disableWindowAnimation boolean true

Whether to disable window animations. Google recommends disabling animations when running automated tests, in order to avoid flakiness. The animation state is automatically restored after the session is stopped, unless the session is ended unexpectedly.

Available since driver version 2.17.0.

timeZone

Name Type Default
appium:timeZone string Not specified

Value used to override the current timezone of the device. Persists until the next override. Must be a valid TZ identifier.

Available since driver version 2.38.0.

hideKeyboard

Name Type Default
appium:hideKeyboard boolean Not specified

Whether to hide the on-screen keyboard during the session. This is achieved by creating a custom "artificial" input method. It is recommended to use this feature only for special/exploratory cases, as it violates the way a user normally interacts with the application under test.

If explicitly set to false, adb shell ime reset is run on session startup, which resets the currently selected/enabled IMEs to the default ones, as if the device was initially booted with the current locale.

Available since driver version 2.28.0.

gpsEnabled

Name Type Default
appium:gpsEnabled boolean Not specified

Whether to enable or disable location services (GPS) upon session start. This functionality only works reliably starting from Android 12 (S / API level 31).

Available since driver version 9.1.0.

mockLocationApp

Name Type Default
appium:mockLocationApp string io.appium.settings

Package identifier of the app to use for mocking device location. Has no effect on emulators. If set to null or an empty string, Appium will skip the setup of the location mocking feature.

skipUnlock

Name Type Default
appium:skipUnlock boolean true

Whether to skip unlocking the device lockscreen on session startup, if one is present.

unlockType

Name Type Default
appium:unlockType string Not specified

The type of lockscreen security on the device, which can be used to unlock it. If omitted, the driver assumes no security is used, and the screen can be unlocked without additional details.

Supported values are pin, password, and pattern. Must be provided together with appium:unlockKey, whose value depends on the lockscreen type.

Refer to the Device Lock/Unlock guide for more details.

unlockKey

Name Type Default
appium:unlockKey string Not specified

The key used to unlock the lockscreen. The expected format depends on the value of appium:unlockType, which must be provided together with this capability. If omitted, the driver assumes no security is used, and the screen can be unlocked without additional details.

Refer to the Device Lock/Unlock guide for more details.

unlockStrategy

Name Type Default
appium:unlockStrategy string Not specified

The approach to use for unlocking the screen. Supported values are locksettings and uiautomator. The appium:unlockKey and appium:unlockType must be provided in order for this capability to take effect.

By default, or if set to locksettings, unlocking is done using adb-based fast unlock. If set to uiautomator, the unlock approach depends on the appium:unlockType capability.

unlockSuccessTimeout

Name Type Default
appium:unlockSuccessTimeout integer 2000

Maximum number of milliseconds to wait until the device is unlocked.

Emulator (AVD)

avd

Name Type Default
appium:avd string Not specified

The name of Android emulator to run the test on. The names of currently installed emulators can be listed by running avdmanager list avd. If the specified emulator is not running upon starting a session, the driver will automatically launch it.

avdLaunchTimeout

Name Type Default
appium:avdLaunchTimeout integer 60000

Maximum number in milliseconds to wait until the Android emulator has started.

avdReadyTimeout

Name Type Default
appium:avdReadyTimeout integer 60000

Maximum number of milliseconds to wait until the Android emulator has fully booted and is ready for usage.

avdArgs

Name Type Default
appium:avdArgs string or Array<string> Not specified

One or more supported command-line arguments to apply when starting the emulator. Only applied if the emulator is not already running.

avdEnv

Name Type Default
appium:avdEnv Record<string, any> Not specified

One or more environment variables to set when starting the emulator. Only applied if the emulator is not already running.

isHeadless

Name Type Default
appium:isHeadless boolean false

Whether to start the emulator in headless mode. Maps to the -no-window emulator command-line argument. Only applied if the emulator is not already running.

allowDelayAdb

Name Type Default
appium:allowDelayAdb boolean true

Whether to wait until the emulator has finished booting before processing ADB packets. Maps to the -delay-adb flag of adb. Requires emulator version 29.0.7 or later, running Android 9 (Pie / API level 28) or later.

Refer to this issue for more details.

networkSpeed

Name Type Default
appium:networkSpeed string Not specified

The network speed to apply to the emulator. Maps to the -netspeed emulator command-line argument. Only applied if the emulator is not already running.

injectedImageProperties

Name Type Default
appium:injectedImageProperties Record<string, Record<string, number>> Not specified

Adjusts properties of the image injected using the mobile: injectEmulatorCameraImage execute method. If the emulator is already running, it will be restarted in order to apply the properties.

The value of this capability is an object with the following keys. All keys and sub-keys are optional, with the given defaults used for absent keys.

Key Description Default
size Scale multipliers for X and Y axes {scaleX: 1, scaleY: 1}
position Offset coefficients for X/Y/Z axes, where 0 means centered {x: 0, y: 0, z: -1.5}
rotation Degrees of rotation for X/Y/Z axes {x: 0, y: 0, z: 0}

Available since driver version 2.42.1.

ADB

adbPort

Name Type Default
appium:adbPort integer 5037

Number of the port to use for starting ADB. Maps to the -P flag of adb.

remoteAdbHost

Name Type Default
appium:remoteAdbHost string localhost

Name of the ADB server host. Maps to the -H flag of adb.

adbExecTimeout

Name Type Default
appium:adbExecTimeout integer 20000

Maximum number of milliseconds to wait for the execution of any single ADB command.

buildToolsVersion

Name Type Default
appium:buildToolsVersion string Not specified

The version of Android build tools to use (name of a directory located at $ANDROID_HOME/build-tools). By default, the driver uses the most recent available version, but it may be useful to explicitly change this in case of any known bugs.

allowOfflineDevices

Name Type Default
appium:allowOfflineDevices boolean false

Whether to include offline devices in the list of devices returned by ADB.

suppressKillServer

Name Type Default
appium:suppressKillServer boolean false

Whether to prevent the driver from ever killing the ADB server. Can be useful if ADB is connected wirelessly.

adbListenAllNetwork

Name Type Default
appium:adbListenAllNetwork boolean false

Whether to listen on all network interfaces, not only localhost. Maps to the -a flag of adb. The adb_listen_all_network insecure feature must be enabled.

Available since driver version 6.2.0.

Espresso Server

systemPort

Name Type Default
appium:systemPort integer 8300

The port for the Espresso server to listen on. Must be unique for each session - see the Testing in Parallel guide for details. If not provided, Appium will try the first available port in the range [8300, 8399].

espressoBuildConfig

Name Type Default
appium:espressoBuildConfig string See below

Configuration for building the Espresso server. The value can be either a stringified JSON object, or path to a JSON file that contains the configuration. The configuration supports the following keys, all of which are optional:

composeSupport

Type Default
boolean true

Whether to include Jetpack Compose UI test dependencies in the server app. If disabled, the app size will be reduced, but any Compose-only functionality, including changing the driver setting to compose, will return an error.

toolsVersions

Type Default
Record<string, string> See below

Map of various tools to their versions that should be used during the build process. The mapping supports the following keys, all of which are optional. For most tools, their default version is automatically kept up-to-date, so each table entry includes a link to the version definition file for that tool.

Name
Description Default
gradle Gradle version to build the app with See gradle-wrapper.properties
compileSdk Android SDK version to compile the server for See appiumCompileSdk in gradle.properties
minSdk Minimum supported Android SDK version See appiumMinSdk in gradle.properties
targetSdk Target Android SDK version See appiumTargetSdk in gradle.properties
buildTools Android SDK Build-Tools version to build the server with See appiumBuildTools in gradle.properties
sourceCompatibility Minimum supported JVM version for the project sources See appiumSourceCompatibility in gradle.properties
targetCompatibility Target JVM version for the project sources See appiumTargetCompatibility in gradle.properties
jvmTarget Target version of the generated JVM bytecode See appiumJvmTarget in gradle.properties
androidGradlePlugin Android Gradle plugin version See libs.versions.toml
kotlin Kotlin version to compile the server for See libs.versions.toml
composeVersion Version of Jetpack Compose dependencies to compile the server for See composeUiTest in libs.versions.toml
espressoVersion Version of Espresso dependencies to compile the server for. Configurable since driver version 2.20.0. See espresso in libs.versions.toml
annotationVersion Version of the androidx.annotation:annotation package. Configurable since driver version 2.5.0. See annotation in libs.versions.toml

additionalAppDependencies

Type Default
Array<string> []

List of one or more Gradle module names and their versions to include as api dependencies.

additionalAndroidTestDependencies

Type Default
Array<string> []

List of one or more Gradle module names and their versions to include as androidTestImplementation dependencies.

Full Example

{
  "composeSupport": false,
  "toolsVersions": {
    "gradle": "9.5.0",
    "compileSdk": "32",
    "minSdk": "22",
    "targetSdk": "30",
    "buildTools": "32.0.0",
    "sourceCompatibility": "VERSION_12",
    "targetCompatibility": "VERSION_12",
    "jvmTarget": "9",
    "androidGradlePlugin": "9.0.0",
    "kotlin": "2.3.0",
    "composeVersion": "1.10.0",
    "espressoVersion": "3.5.0",
    "annotationVersion": "1.9.0"
  },
  "additionalAppDependencies": ["api.package:1.2.3", "api.otherpackage:4.5.6"],
  "additionalAndroidTestDependencies": ["test.package:1.2.3"]
}

espressoServerLaunchTimeout

Name Type Default
appium:espressoServerLaunchTimeout integer 45000

Maximum number of milliseconds to wait until the Espresso server has started.

skipServerInstallation

Name Type Default
appium:skipServerInstallation boolean false

Whether to skip installation of the Espresso server on the device under test, along with all other related checks. Useful for speeding up session startup if the device already has a compatible Espresso server app installed. Note that unexpected errors may occur if the Espresso server app is not compatible with the driver or the app under test.

Since driver version 3.3.0, the installed server app is always subject to simple compatibility checks - however, minor mismatches are treated as warnings, so a session can still be started.

forceEspressoRebuild

Name Type Default
appium:forceEspressoRebuild boolean false

Whether to always rebuild the Espresso server when starting a new session. By default, the driver caches the previously built server, and only rebuilds it if it does not match the target application under test.

showGradleLog

Name Type Default
appium:showGradleLog boolean false

Whether to show Gradle logs during the build process of the Espresso server.

App Management

app

Name Type Default
appium:app string Not specified

Full path to a file on the host machine, or URL to a remote location, that contains the application under test. Required unless appium:appPackage is specified.

The app file must have either the .apk or .aab extension. Files with the .aab extension are only supported since driver version 2.1.0, and require bundletool.jar to be present on the system PATH.

appPackage

Name Type Default
appium:appPackage string Not specified

Package identifier of the application under test. Required unless appium:app is specified.

It is allowed to set both appium:app and this capability, but if only appium:app is provided, the package identifier is automatically detected from the app manifest.

Refer to the Activity Startup guide for more details.

appActivity

Name Type Default
appium:appActivity string Not specified

Launchable activity identifier of the application under test. If not provided, the activity is automatically detected from either appium:app or appium:appPackage, in that order.

Refer to the Activity Startup guide for more details.

appWaitPackage

Name Type Default
appium:appWaitPackage string Matches the package identifier (see appium:appPackage)

Identifier of the first app package to be launched.

Refer to the Activity Startup guide for more details.

appWaitActivity

Name Type Default
appium:appWaitActivity string Matches the app main activity (see appium:appActivity)

Identifier of the first app activity to be launched.

Refer to the Activity Startup guide for more details.

appWaitDuration

Name Type Default
appium:appWaitDuration integer 20000

Maximum number of milliseconds to wait until the activity specified by appium:appWaitPackage and appium:appWaitActivity has started.

Refer to the Activity Startup guide for more details.

intentOptions

Name Type Default
appium:intentOptions Record<string, any> See below

Map of options to be applied for the intent passed to the launchable app activity. Refer to the Android Intent documentation for more details. The mapping supports the following options, all of which are optional:

Name
Type
Description
action string Name of the action. Application-specific actions should be prefixed with the vendor's package name. Set to ACTION_MAIN by default.
data string Data URI of the intent. Set to null by default.
type string MIME type of the intent. Set to null by default.
categories string One or more comma-separated intent categories
component string Component name with a package name prefix
intFlags string Sum of all intent flag integer or hexadecimal values, as a string. Refer to the setFlags documentation for more details.
flags string Comma-separated string of additional intent flag names. The FLAG_ prefix can be omitted. Refer to the addFlags documentation for more details.
className string Name of a class inside of the application package that will be used as the component for this intent. Set to the fully qualified name of the app activity by default.
e Record<string, string> Map of string parameters to apply to the intent. Same as es.
es Record<string, string> Map of string parameters to apply to the intent. Same as e.
esn Array<string> Array of null parameters to apply to the intent
ez Record<string, boolean> Map of boolean parameters to apply to the intent
ei Record<string, number> Map of integer parameters to apply to the intent
el Record<string, number> Map of long integer parameters to apply to the intent
ef Record<string, number> Map of float parameters to apply to the intent
eu Record<string, string> Map of URI-data parameters to apply to the intent
ecn Record<string, string> Map of component name parameters to apply to the intent
esa Record<string, Array<string>> Map of string array parameters to apply to the intent. Available since driver version 2.9.0.
eia Record<string, string> Map of integer array parameters (as comma-separated strings) to apply to the intent
ela Record<string, string> Map of long integer array parameters (as comma-separated strings) to apply to the intent
efa Record<string, string> Map of float array parameters (as comma-separated strings) to apply to the intent

Full Example

{
  "action": "ACTION_VIEW",
  "data": "content://contacts/people/1",
  "type": "image/png",
  "categories": "android.intent.category.APP_CONTACTS",
  "component": "com.example.app/.ExampleActivity",
  "intFlags": "15", // or 0x0F
  "flags": "FLAG_GRANT_READ_URI_PERMISSION, ACTIVITY_CLEAR_TASK",
  "className": "com.example.app.MainActivity",
  "e": {"foo": "bar"},
  "es": {"foo": "bar"},
  "esn": ["foo", "bar"],
  "ez": {"foo": true, "bar": false},
  "ei": {"foo": 1, "bar": 2},
  "el": {"foo": 1L, "bar": 2L},
  "ef": {"foo": 1.ff, "bar": 2.2f},
  "eu": {"foo": "content://contacts/people/1"},
  "ecn": {"foo": "com.example.app/.ExampleActivity"},
  "esa": {"foo": ["bar1","bar2","bar3","bar4"]},
  "eia": {"foo": "1,2,3,4"},
  "ela": {"foo": "1L,2L,3L,4L"},
  "efa": {"foo": "1.1,2.2,3.3,4.4"},
}

activityOptions

Name Type Default
appium:activityOptions Record<string, any> Not specified

Map of additional options to be applied for the launchable app activity. The mapping supports the following options:

Name
Type Description
launchDisplayId integer or string Identifier of the display to launch the activity on. Useful if the device under test supports multiple displays.

androidInstallTimeout

Name Type Default
appium:androidInstallTimeout integer 90000

Maximum amount of milliseconds to wait until the application under test is installed.

enforceAppInstall

Name Type Default
appium:enforceAppInstall boolean false

Whether to always reinstall the application under test, even if a newer version already exists on the device under test.

noReset

Name Type Default
appium:noReset boolean false

Whether to prevent the app from being automatically relaunched and its data cleaned before session startup.

Mutually exclusive with appium:fullReset.

fullReset

Name Type Default
appium:fullReset boolean false

Whether to always reinstall the app before session startup, and uninstall it after deleting the session.

Mutually exclusive with appium:noReset.

dontStopAppOnReset

Name Type Default
appium:dontStopAppOnReset boolean false

Whether to skip termination of the app under test upon session deletion.

autoLaunch

Name Type Default
appium:autoLaunch boolean true

Whether to launch the application under test on session start, and wait until it is ready.

autoGrantPermissions

Name Type Default
appium:autoGrantPermissions boolean false

Whether to automatically grant all requested application permissions upon session startup.

If the targetSdk of the application under test is below 23, or the device under test is running Android 5 (Lollipop / API level 22), granting permissions requires the application to be reinstalled, for example, using the appium:fullReset capability.

otherApps

Name Type Default
appium:otherApps string or Array<string> Not specified

One or more application packages (either filepaths on the host machine, or URLs to remote locations) that should be installed on the device along with the application under test. Unlike the app under test, these apps are not additionally signed, and only apps with the .apk extension are supported.

Available since driver version 9.2.0.

uninstallOtherPackages

Name Type Default
appium:uninstallOtherPackages string or Array<string> Not specified

One or more package identifiers to be uninstalled from the device upon session startup. Always excludes packages required by the driver (io.appium.settings and io.appium.espressoserver.test).

allowTestPackages

Name Type Default
appium:allowTestPackages boolean false

Whether to allow installation of test-only versions of the application under test. Maps to the -t flag of adb install. Only applied if the application is to be installed or reinstalled.

remoteAppsCacheLimit

Name Type Default
appium:remoteAppsCacheLimit integer 10

Maximum number of application packages to be cached on the device under test. Primarily needed for devices that don't support streamed installs (Android 7 and below), which require adb to push each installable package to the device first, requiring additional time.

If set to 0, the cache is disabled.

App Signing

useKeystore

Name Type Default
appium:useKeystore boolean false

Whether to use a custom keystore to sign the app under test. By default, apps are signed with the default Appium debug certificate, unless appium:noSign is used.

Used in combination with appium:keystorePath, appium:keystorePassword, appium:keyAlias and appium:keyPassword.

keystorePath

Name Type Default
appium:keystorePath string Not specified

Full path to the keystore file on the server filesystem.

Used in combination with appium:useKeystore, appium:keystorePassword, appium:keyAlias and appium:keyPassword.

keystorePassword

Name Type Default
appium:keystorePassword string Not specified

Password of the keystore file specified by appium:keystorePath.

Used in combination with appium:useKeystore, appium:keystorePath, appium:keyAlias and appium:keyPassword.

keyAlias

Name Type Default
appium:keyAlias string Not specified

Alias of the key in the keystore file specified by appium:keystorePath.

Used in combination with appium:useKeystore, appium:keystorePath, appium:keystorePassword and appium:keyPassword.

keyPassword

Name Type Default
appium:keyAlias string Not specified

Password of the key in the keystore file specified by appium:keystorePath.

Used in combination with appium:useKeystore, appium:keystorePath, appium:keystorePassword and appium:keyAlias.

noSign

Name Type Default
appium:noSign boolean false

Whether to skip signing of the application under test, and use it as-is. By default, all apps are signed with the default Appium debug signature. Make sure that the server package is signed with the same signature as the application under test before disabling this capability.

This capability does not affect .apks packages, as they are expected to be already signed.

App Localization

language

Name Type Default
appium:language string Not specified

Language code to use for setting the locale of the device under test. The code should match the language field for Android's Locale class. Must be provided together with appium:locale.

The language set by this capability is also used by the mobile: getAppStrings execute method, unless explicitly overridden.

In order to set the locale of only the application under test, use appium:appLocale.

locale

Name Type Default
appium:locale string Not specified

Country code to use for setting the locale of the device under test. The code should match the country field for Android's Locale class. Must be provided together with appium:language.

In order to set the locale of only the application under test, use appium:appLocale.

localeScript

Name Type Default
appium:localeScript string Not specified

Script code to use for setting the locale of the device under test. The code should match the script field for Android's Locale class. If specified, appium:language and appium:locale must also be provided.

appLocale

Name Type Default
appium:appLocale Record<string, string> Not specified

Map of language-related identifiers to use for setting the locale of the app under test. The mapping supports the following options:

Name Description
language Matches the language field for Android's Locale class
country? Matches the country field for Android's Locale class
variant? Matches the variant field for Android's Locale class

In order to set the locale of the entire device under test, use appium:language and appium:locale.

Web Context

autoWebview

Name Type Default
appium:autoWebview boolean false

Whether to automatically switch to the first available webview context upon session start.

autoWebviewTimeout

Name Type Default
appium:autoWebviewTimeout integer 2000

Maximum number of milliseconds to wait until a webview is available before switching to it. Requires appium:autoWebview to be set.

androidDeviceSocket

Name Type Default
appium:androidDeviceSocket string Not specified

Name of a Chromium DevTools socket on the device under test. If set, webview discovery will only return webviews running on this socket.

webviewDevtoolsPort

Name Type Default
appium:webviewDevtoolsPort integer 10900

The port to use for communicating with webviews over the DevTools protocol. Must be unique for each session - see the Testing in Parallel guide for details. If not provided, Appium will try the first available port in the range [10900, 11000].

ensureWebviewsHavePages

Name Type Default
appium:ensureWebviewsHavePages boolean true

Whether to skip web views that have no pages from being included in the list of available contexts. The driver uses the DevTools connection to retrieve information about existing pages.

enableWebviewDetailsCollection

Name Type Default
appium:enableWebviewDetailsCollection boolean true

Whether to retrieve extended webview information via DevTools. Enabling this capability improves detection of the required ChromeDriver version.

chromeOptions

Name Type Default
appium:chromeOptions Record<string, any> Not specified

Map of ChromeDriver options to apply. Refer to Google's ChromeOptions documentation for supported values.

chromeLoggingPrefs

Name Type Default
appium:chromeLoggingPrefs Record<string, string> {"browser": "ALL"}

Map of logging types to their levels that should be applied. Refer to Selenium's Logging documentation for supported type and level values.

chromedriverPort

Name Type Default
appium:chromedriverPort integer Random

The port to use for ChromeDriver communication. Must be unique for each session - see the Testing in Parallel guide for details. By default, a random free port is used.

chromedriverPorts

Name Type Default
appium:chromedriverPort Array<number | Array<number>> Not specified

List of possible ports and/or port ranges to use for ChromeDriver communication, for example, [5600, 5610, [5650, 5660]]. An error is thrown if all specified ports are busy.

chromedriverArgs

Name Type Default
appium:chromedriverArgs Array<string> Not specified

List of command line switches to apply to ChromeDriver. Refer to the links in Selenium's Chrome documentation for more details on supported switches. Note that not all desktop Chrome switches are available on mobile.

chromedriverExecutable

Name Type Default
appium:chromedriverExecutable string Not specified

Custom path to a ChromeDriver executable on the host file system. Takes priority over appium:chromedriverExecutableDir.

Refer to the Managing ChromeDriver guide for more details.

chromedriverExecutableDir

Name Type Default
appium:chromedriverExecutableDir string See below

Custom path to a directory on the host file system, containing ChromeDriver executables. If automatic ChromeDriver download is enabled, this folder is also used to store the downloaded executables.

The default value is node_modules/appium-chromedriver/chromedriver/<host os> in the driver's installation directory.

Refer to the Managing ChromeDriver guide for more details.

chromedriverChromeMappingFile

Name Type Default
appium:chromedriverExecutableDir string See below

Custom path to a JSON file containing a mapping of webview/browser versions to the ChromeDriver versions that are capable of automating them, similarly to the following:

{
  "2.42": "63.0.3239",
  "2.41": "62.0.3202"
}

The default value is node_modules/appium-chromedriver/config/mapping.json in the driver's installation directory.

Refer to the Managing ChromeDriver guide for more details.

chromedriverUseSystemExecutable

Name Type Default
appium:chromedriverUseSystemExecutable boolean false

Whether to use the ChromeDriver binary bundled with the driver.

This capability is primarily relevant for driver versions 3.3.1 or earlier, which automatically downloaded ChromeDriver upon installation.

chromedriverDisableBuildCheck

Name Type Default
appium:chromedriverDisableBuildCheck boolean false

Whether to disable the check that requires ChromeDriver and the browser executable to have matching versions. Maps to the --disable-build-check flag of the ChromeDriver binary.

chromedriverForwardBiDi

Name Type Default
appium:chromedriverForwardBiDi boolean false

Whether to automatically forward the ChromeDriver BiDi web socket to the Espresso driver web socket. This allows sending browser-specific BiDi commands in a webview context. Switching the session context terminates this connection. Requires the BiDi protocol to be enabled (webSocketUrl capability must be true).

Note that older ChromeDriver versions may only have partial to no support for the BiDi protocol.

Available since driver version 6.0.3.

chromedriverGrantPermissions

Name Type Default
appium:chromedriverGrantPermissions boolean false

Whether to automatically grant all requested runtime permissions for the Chrome/webview package, so that the session is not interrupted by any native runtime permission dialogs.

Available since driver version 9.0.2.

recreateChromeDriverSessions

Name Type Default
appium:recreateChromeDriverSessions boolean false

Whether the driver should kill the ChromeDriver session upon switching to native context and recreate it upon switching back, instead of merely suspending it.

nativeWebScreenshot

Name Type Default
appium:nativeWebScreenshot boolean false

Whether to use the screenshoting endpoint provided by the Espresso framework instead of the one provided by ChromeDriver. Can be useful if experiencing issues with the latter.

extractChromeAndroidPackageFromContextName

Name Type Default
appium:extractChromeAndroidPackageFromContextName boolean false

Whether to instruct ChromeDriver to attach to the Android package included in the context name, rather than the package of the application under test.

showChromedriverLog

Name Type Default
appium:showChromedriverLog boolean false

Whether to include ChromeDriver logs in Appium server logs.