webdriverio/website/i18n/ar/docusaurus-plugin-content-docs/current/Capabilities.md
Christian Bromann eff39ea68e
chore(docs): New Crowdin updates (#11166)
* New translations docker.md (German)

* New translations docker.md (Italian)

* New translations docker.md (Japanese)

* New translations docker.md (Polish)

* New translations docker.md (Portuguese)

* New translations docker.md (Russian)

* New translations docker.md (Ukrainian)

* New translations docker.md (Chinese Simplified)

* New translations docker.md (Persian)

* New translations docker.md (Tamil)

* New translations docker.md (Hindi)

* New translations boilerplateprojects.md (Belarusian)

* New translations boilerplateprojects.md (Portuguese)

* New translations customreporter.md (Belarusian)

* New translations customreporter.md (Portuguese)

* New translations proxy.md (French)

* New translations configuration.md (Spanish)

* New translations proxy.md (Spanish)

* New translations proxy.md (Arabic)

* New translations cloudservices.md (Belarusian)

* New translations configuration.md (Belarusian)

* New translations proxy.md (Belarusian)

* New translations proxy.md (Bulgarian)

* New translations configuration.md (German)

* New translations proxy.md (German)

* New translations proxy.md (Italian)

* New translations proxy.md (Japanese)

* New translations proxy.md (Polish)

* New translations cloudservices.md (Portuguese)

* New translations configuration.md (Portuguese)

* New translations proxy.md (Portuguese)

* New translations proxy.md (Russian)

* New translations proxy.md (Ukrainian)

* New translations proxy.md (Chinese Simplified)

* New translations proxy.md (Persian)

* New translations proxy.md (Tamil)

* New translations configuration.md (Hindi)

* New translations proxy.md (Hindi)

* New translations setuptypes.md (French)

* New translations setuptypes.md (Spanish)

* New translations setuptypes.md (Arabic)

* New translations setuptypes.md (Belarusian)

* New translations setuptypes.md (Bulgarian)

* New translations setuptypes.md (German)

* New translations setuptypes.md (Italian)

* New translations setuptypes.md (Japanese)

* New translations setuptypes.md (Polish)

* New translations setuptypes.md (Portuguese)

* New translations setuptypes.md (Russian)

* New translations setuptypes.md (Ukrainian)

* New translations setuptypes.md (Chinese Simplified)

* New translations setuptypes.md (Persian)

* New translations setuptypes.md (Tamil)

* New translations setuptypes.md (Hindi)

* New translations appium.md (French)

* New translations appium.md (Belarusian)

* New translations appium.md (German)

* New translations appium.md (Japanese)

* New translations appium.md (Portuguese)

* New translations appium.md (Ukrainian)

* New translations appium.md (Tamil)

* New translations browser.md (French)

* New translations browser.md (Spanish)

* New translations browser.md (Arabic)

* New translations browser.md (Belarusian)

* New translations browser.md (Bulgarian)

* New translations browser.md (German)

* New translations browser.md (Italian)

* New translations browser.md (Japanese)

* New translations browser.md (Polish)

* New translations browser.md (Portuguese)

* New translations browser.md (Russian)

* New translations browser.md (Ukrainian)

* New translations browser.md (Chinese Simplified)

* New translations browser.md (Persian)

* New translations browser.md (Tamil)

* New translations browser.md (Hindi)

* New translations protocols.md (French)

* New translations vue.md (French)

* New translations protocols.md (Spanish)

* New translations vue.md (Spanish)

* New translations protocols.md (Arabic)

* New translations vue.md (Arabic)

* New translations frameworks.md (Belarusian)

* New translations protocols.md (Belarusian)

* New translations vue.md (Belarusian)

* New translations protocols.md (Bulgarian)

* New translations vue.md (Bulgarian)

* New translations protocols.md (German)

* New translations vue.md (German)

* New translations protocols.md (Italian)

* New translations vue.md (Italian)

* New translations protocols.md (Japanese)

* New translations vue.md (Japanese)

* New translations protocols.md (Polish)

* New translations vue.md (Polish)

* New translations frameworks.md (Portuguese)

* New translations protocols.md (Portuguese)

* New translations vue.md (Portuguese)

* New translations protocols.md (Russian)

* New translations vue.md (Russian)

* New translations protocols.md (Ukrainian)

* New translations vue.md (Ukrainian)

* New translations protocols.md (Chinese Simplified)

* New translations vue.md (Chinese Simplified)

* New translations protocols.md (Persian)

* New translations vue.md (Persian)

* New translations protocols.md (Tamil)

* New translations vue.md (Tamil)

* New translations protocols.md (Hindi)

* New translations vue.md (Hindi)

* New translations customreporter.md (Belarusian)

* New translations customreporter.md (Portuguese)

* New translations configuration.md (Belarusian)

* New translations configuration.md (Portuguese)

* New translations sharding.md (French)

* New translations sharding.md (Spanish)

* New translations sharding.md (Arabic)

* New translations vscodeextension.md (Belarusian)

* New translations sharding.md (Belarusian)

* New translations sharding.md (Bulgarian)

* New translations sharding.md (German)

* New translations sharding.md (Italian)

* New translations sharding.md (Japanese)

* New translations sharding.md (Polish)

* New translations vscodeextension.md (Portuguese)

* New translations sharding.md (Portuguese)

* New translations sharding.md (Russian)

* New translations sharding.md (Ukrainian)

* New translations sharding.md (Chinese Simplified)

* New translations sharding.md (Persian)

* New translations sharding.md (Tamil)

* New translations sharding.md (Hindi)

* New translations code.json (Portuguese, Brazilian)

* New translations options.json (Portuguese, Brazilian)

* New translations current.json (Portuguese, Brazilian)

* New translations current.json (Portuguese, Brazilian)

* New translations footer.json (Portuguese, Brazilian)

* New translations navbar.json (Portuguese, Brazilian)

* New translations api.md (Portuguese, Brazilian)

* New translations axecore.md (Portuguese, Brazilian)

* New translations autowait.md (Portuguese, Brazilian)

* New translations autocompletion.md (Portuguese, Brazilian)

* New translations automationprotocols.md (Portuguese, Brazilian)

* New translations watchfiles.md (Portuguese, Brazilian)

* New translations whywebdriverio.md (Portuguese, Brazilian)

* New translations browser.md (Portuguese, Brazilian)

* New translations createlocalworkerprocess.md (Portuguese, Brazilian)

* New translations donate.md (Portuguese, Brazilian)

* New translations materials.md (Portuguese, Brazilian)

* New translations openofficehours.md (Portuguese, Brazilian)

* New translations support.md (Portuguese, Brazilian)

* New translations team.md (Portuguese, Brazilian)

* New translations appium.md (Portuguese, Brazilian)

* New translations emulation.md (Portuguese, Brazilian)

* New translations visualtesting.md (Portuguese, Brazilian)

* New translations method-options.md (Portuguese, Brazilian)

* New translations methods.md (Portuguese, Brazilian)

* New translations writing-tests.md (Portuguese, Brazilian)

* New translations snapshot.md (Portuguese, Brazilian)

* New translations filedownloads.md (Portuguese, Brazilian)

* New translations events.md (Portuguese, Brazilian)

* New translations percy-overview.md (Portuguese, Brazilian)

* New translations integrate-with-app-percy.md (Portuguese, Brazilian)

* New translations integrate-with-percy.md (Portuguese, Brazilian)

* New translations browserstack.md (Portuguese, Brazilian)

* New translations clock.md (Portuguese, Brazilian)

* New translations argos.md (Portuguese, Brazilian)

* New translations seleniumgrid.md (Portuguese, Brazilian)

* New translations browserlogs.md (Portuguese, Brazilian)

* New translations axecore.md (Portuguese, Brazilian)

* New translations donate.md (Portuguese, Brazilian)

* New translations materials.md (Portuguese, Brazilian)

* New translations openofficehours.md (Portuguese, Brazilian)

* New translations support.md (Portuguese, Brazilian)

* New translations team.md (Portuguese, Brazilian)

* New translations events.md (Portuguese, Brazilian)

* New translations browserstack.md (Portuguese, Brazilian)

* New translations browser.md (Portuguese, Brazilian)

* New translations element.md (Portuguese, Brazilian)

* New translations environment.md (Portuguese, Brazilian)

* New translations events.md (Portuguese, Brazilian)

* New translations clock.md (Portuguese, Brazilian)

* New translations dialog.md (Portuguese, Brazilian)

* New translations globals.md (Portuguese, Brazilian)

* New translations axecore.md (Portuguese, Brazilian)

* New translations browser.md (Portuguese, Brazilian)

* New translations element.md (Portuguese, Brazilian)

* New translations globals.md (Portuguese, Brazilian)

* New translations mock.md (Portuguese, Brazilian)

* New translations modules.md (Portuguese, Brazilian)

* New translations protocols.md (Portuguese, Brazilian)

* New translations lit.md (Portuguese, Brazilian)

* New translations preact.md (Portuguese, Brazilian)

* New translations react.md (Portuguese, Brazilian)

* New translations solid.md (Portuguese, Brazilian)

* New translations svelte.md (Portuguese, Brazilian)

* New translations vue.md (Portuguese, Brazilian)

* New translations coverage.md (Portuguese, Brazilian)

* New translations mocking.md (Portuguese, Brazilian)

* New translations donate.md (Portuguese, Brazilian)

* New translations materials.md (Portuguese, Brazilian)

* New translations openofficehours.md (Portuguese, Brazilian)

* New translations support.md (Portuguese, Brazilian)

* New translations team.md (Portuguese, Brazilian)

* New translations stencil.md (Portuguese, Brazilian)

* New translations filedownloads.md (Portuguese, Brazilian)

* New translations events.md (Portuguese, Brazilian)

* New translations browserstack.md (Portuguese, Brazilian)

* New translations clock.md (Portuguese, Brazilian)

* New translations dialog.md (Portuguese, Brazilian)

* New translations mobile.md (Portuguese, Brazilian)

* New translations browserlogs.md (Portuguese, Brazilian)

* New translations createlocalworkerprocess.md (Portuguese, Brazilian)

* New translations highleveloverview.md (Portuguese, Brazilian)

* New translations testexecution.md (Portuguese, Brazilian)

* New translations wdiocommands.md (Portuguese, Brazilian)

* New translations webextension.md (Portuguese, Brazilian)

* New translations vscodeextension.md (Portuguese, Brazilian)

* New translations electron.md (Portuguese, Brazilian)

* New translations macos.md (Portuguese, Brazilian)

* New translations windows.md (Portuguese, Brazilian)

* New translations cli-wizard.md (Portuguese, Brazilian)

* New translations getting-started.md (Portuguese, Brazilian)

* New translations more-test-optimization.md (Portuguese, Brazilian)

* New translations ocr-click-on-text.md (Portuguese, Brazilian)

* New translations ocr-click-on-text.md (Portuguese, Brazilian)

* New translations ocr-faq.md (Portuguese, Brazilian)

* New translations ocr-get-element-position-by-text.md (Portuguese, Brazilian)

* New translations ocr-get-text.md (Portuguese, Brazilian)

* New translations ocr-set-value.md (Portuguese, Brazilian)

* New translations materials.md (Portuguese, Brazilian)

* New translations considerations.md (Portuguese, Brazilian)

* New translations compare-options.md (Portuguese, Brazilian)

* New translations faq.md (Portuguese, Brazilian)

* New translations integrate-with-app-percy.md (Portuguese, Brazilian)

* New translations ocr-wait-for-text-displayed.md (Portuguese, Brazilian)

* New translations what-is-wdio-ocr-service.md (Portuguese, Brazilian)

* New translations argos.md (Portuguese, Brazilian)

* New translations integrate-with-percy.md (Portuguese, Brazilian)

* New translations method-options.md (Portuguese, Brazilian)

* New translations whywebdriverio.md (Portuguese, Brazilian)

* New translations api.md (Portuguese, Brazilian)

* New translations frameworks.md (Portuguese, Brazilian)

* New translations gettingstarted.md (Portuguese, Brazilian)

* New translations selectors.md (Portuguese, Brazilian)

* New translations sponsor.md (Portuguese, Brazilian)

* update: translate doc to pt-br (#14388)

* New translations configuration.md (Portuguese, Brazilian)

* more german translations

---------

Co-authored-by: Lucas Barbosa <29305833+lucasbarbosaz@users.noreply.github.com>
2025-04-08 11:09:20 -07:00

12 KiB

id title
capabilities Capabilities

A capability is a definition for a remote interface. It helps WebdriverIO to understand in which browser or mobile environment you like to run your tests on. Capabilities are less crucial when developing tests locally as you run it on one remote interface most of the time but becomes more important when running a large set of integration tests in CI/CD.

:::info

The format of a capability object is well defined by the WebDriver specification. The WebdriverIO testrunner will fail early if user defined capabilities do not adhere to that specification.

:::

Custom Capabilities

While the amount of fixed defined capabilities is very low, everyone can provide and accept custom capabilities that are specific to the automation driver or remote interface:

Browser Specific Capability Extensions

  • goog:chromeOptions: Chromedriver extensions, only applicable for testing in Chrome
  • moz:firefoxOptions: Geckodriver extensions, only applicable for testing in Firefox
  • ms:edgeOptions: EdgeOptions for specifying the environment when using EdgeDriver for testing Chromium Edge

Cloud Vendor Capability Extensions

Automation Engine Capability Extensions

WebdriverIO Capabilities to manage browser driver options

WebdriverIO manages installing and running browser driver for you. WebdriverIO uses a custom capability that allows you to pass in parameters to the driver.

wdio:chromedriverOptions

Specific options passed into Chromedriver when starting it.

wdio:geckodriverOptions

Specific options passed into Geckodriver when starting it.

wdio:edgedriverOptions

Specific options passed into Edgedriver when starting it.

wdio:safaridriverOptions

Specific options passed into Safari when starting it.

wdio:maxInstances

Maximum number of total parallel running workers for the specific browser/capability. Takes precedence over maxInstances and maxInstancesPerCapability.

Type: number

wdio:specs

Define specs for test execution for that browser/capability. Same as the regular specs configuration option, but specific to the browser/capability. Takes precedence over specs.

Type: (String | String[])[]

wdio:exclude

Exclude specs from test execution for that browser/capability. Same as the regular exclude configuration option, but specific to the browser/capability. Takes precedence over exclude.

Type: String[]

wdio:enforceWebDriverClassic

By default, WebdriverIO attempts to establish a WebDriver Bidi session. If you don't prefer that, you can set this flag to disable this behavior.

Type: boolean

Common Driver Options

While all driver offer different parameters for configuration, there are some common ones that WebdriverIO understand and uses for setting up your driver or browser:

cacheDir

The path to the root of the cache directory. This directory is used to store all drivers that are downloaded when attempting to start a session.

Type: string
Default: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary

Path to a custom driver binary. If set WebdriverIO won't attempt to download a driver but will use the one provided by this path. Make sure the driver is compatible with the browser you are using.

You can provide this path via CHROMEDRIVER_PATH, GECKODRIVER_PATH or EDGEDRIVER_PATH environment variables.

Type: string

:::caution

If the driver binary is set, WebdriverIO won't attempt to download a driver but will use the one provided by this path. Make sure the driver is compatible with the browser you are using.

:::

Browser Specific Driver Options

In order to propagate options to the driver you can use the following custom capabilities:

  • Chrome or Chromium: wdio:chromedriverOptions
  • Firefox: wdio:geckodriverOptions
  • Microsoft Egde: wdio:edgedriverOptions
  • Safari: wdio:safaridriverOptions

<Tabs defaultValue="chrome" values={[ {label: 'wdio:chromedriverOptions', value: 'chrome'}, {label: 'wdio:geckodriverOptions', value: 'firefox'}, {label: 'wdio:edgedriverOptions', value: 'msedge'}, {label: 'wdio:safaridriverOptions', value: 'safari'}, ] }>

adbPort

The port on which the ADB driver should run.

Example: 9515

Type: number

urlBase

Base URL path prefix for commands, e.g. wd/url.

Example: /

Type: string

logPath

Write server log to file instead of stderr, increases log level to INFO

Type: string

logLevel

Set log level. Possible options ALL, DEBUG, INFO, WARNING, SEVERE, OFF.

Type: string

verbose

Log verbosely (equivalent to --log-level=ALL)

Type: boolean

silent

Log nothing (equivalent to --log-level=OFF)

Type: boolean

appendLog

Append log file instead of rewriting.

Type: boolean

replayable

Log verbosely and don't truncate long strings so that the log can be replayed (experimental).

Type: boolean

readableTimestamp

Add readable timestamps to log.

Type: boolean

enableChromeLogs

Show logs from the browser (overrides other logging options).

Type: boolean

bidiMapperPath

Custom bidi mapper path.

Type: string

allowedIps

Comma-separated allowlist of remote IP addresses which are allowed to connect to EdgeDriver.

Type: string[]
Default: ['']

allowedOrigins

Comma-separated allowlist of request origins which are allowed to connect to EdgeDriver. Using * to allow any host origin is dangerous!

Type: string[]
Default: ['*']

spawnOpts

Options to be passed into the driver process.

Type: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Default: undefined

See all Geckodriver options in the official driver package.

See all Edgedriver options in the official driver package.

See all Safaridriver options in the official driver package.

Special Capabilities for Specific Use Cases

This is a list of examples showing which capabilities need to be applied to achieve a certain use case.

Run Browser Headless

Running a headless browser means to run a browser instance without window or UI. This is mostly used within CI/CD environments where no display is used. To run a browser in headless mode, apply the following capabilities:

<Tabs defaultValue="chrome" values={[ {label: 'Chrome', value: 'chrome'}, {label: 'Firefox', value: 'firefox'}, {label: 'Microsoft Edge', value: 'msedge'}, {label: 'Safari', value: 'safari'}, ] }>

{
    browserName: 'chrome',    // or 'chromium'
    'goog:chromeOptions': {
        args: ['headless', 'disable-gpu']
    }
}
    browserName: 'firefox',
    'moz:firefoxOptions': {
        args: ['-headless']
    }
    browserName: 'msedge',
    'ms:edgeOptions': {
        args: ['--headless']
    }

It seems that Safari doesn't support running in headless mode.

Automate Different Browser Channels

If you like to test a browser version that is not yet released as stable, e.g. Chrome Canary, you can do so by setting capabilities and pointing to the browser you like to start, e.g.:

<Tabs defaultValue="chrome" values={[ {label: 'Chrome', value: 'chrome'}, {label: 'Firefox', value: 'firefox'}, {label: 'Microsoft Edge', value: 'msedge'}, {label: 'Safari', value: 'safari'}, ] }>

When testing on Chrome, WebdriverIO will automatically download the desired browser version and driver for you based on the defined browserVersion, e.g.:

{
    browserName: 'chrome', // or 'chromium'
    browserVersion: '116' // or '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' or 'latest' (same as 'canary')
}

If you like to test a manually downloaded browser, you can provide a binary path to the browser via:

{
    browserName: 'chrome',  // or 'chromium'
    'goog:chromeOptions': {
        binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
    }
}

Additionally, if you like to use a manually downloaded driver, you can provide a binary path to the driver via:

{
    browserName: 'chrome', // or 'chromium'
    'wdio:chromedriverOptions': {
        binary: '/path/to/chromdriver'
    }
}

When testing on Firefox, WebdriverIO will automatically download the desired browser version and driver for you based on the defined browserVersion, e.g.:

{
    browserName: 'firefox',
    browserVersion: '119.0a1' // or 'latest'
}

If you like to test a manually downloaded version you can provide a binary path to the browser via:

{
    browserName: 'firefox',
    'moz:firefoxOptions': {
        binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
    }
}

Additionally, if you like to use a manually downloaded driver, you can provide a binary path to the driver via:

{
    browserName: 'firefox',
    'wdio:geckodriverOptions': {
        binary: '/path/to/geckodriver'
    }
}

When testing on Microsoft Edge, make sure you have the desired browser version installed on your machine. You can point WebdriverIO to the browser to execute via:

{
    browserName: 'msedge',
    'ms:edgeOptions': {
        binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
    }
}

WebdriverIO will automatically download the desired driver version for you based on the defined browserVersion, e.g.:

{
    browserName: 'msedge',
    browserVersion: '109' // or '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}

Additionally, if you like to use a manually downloaded driver, you can provide a binary path to the driver via:

{
    browserName: 'msedge',
    'wdio:edgedriverOptions': {
        binary: '/path/to/msedgedriver'
    }
}

When testing on Safari, make sure you have the Safari Technology Preview installed on your machine. You can point WebdriverIO to that version via:

{
    browserName: 'safari technology preview'
}

Extend Custom Capabilities

If you like to define your own set of capabilities in order to e.g. store arbitrary data to be used within the tests for that specific capability, you can do so by e.g. setting:

export const config = {
    // ...
    capabilities: [{
        browserName: 'chrome',
        'custom:caps': {
            // custom configurations
        }
    }]
}

It is advised to follow the W3C protocol when it comes to capability naming which requires a : (colon) character, denoting an implementation specific namespace. Within your tests you can access your custom capability through, e.g.:

browser.capabilities['custom:caps']

In order to ensure type safety you can extend WebdriverIOs capability interface via:

declare global {
    namespace WebdriverIO {
        interface Capabilities {
            'custom:caps': {
                // ...
            }
        }
    }
}