Konfiguration
Basierend auf dem Setup-Type (z. B. die Verwendung der Raw-Protokollbindungen, WebdriverIO als eigenständiges Paket oder der WDIO-Testrunner) stehen verschiedene Optionen zur Verfügung, um die Umgebung zu steuern.
WebDriver-Optionen
Bei Verwendung des Protokollpakets webdriver
sind folgende Optionen definiert:
protocol
Bei der Kommunikation mit dem Browser Treibers zu verwendendes Protokoll.
Type: String
Default: http
hostname
Host Ihres Browser Treibers.
Type: String
Default: 0.0.0.0
port
Port für den Browser Treiber.
Type: Number
Default: undefined
path
Pfad zum Browser Treiber Endpunkt.
Type: String
Default: /
queryParams
Queryparameter, die an den Browser Treiber weitergegeben werden.
Type: Object
Default: undefined
user
Ihr Cloud-Service-Benutzername (funktioniert nur für Sauce Labs, Browserstack, TestingBot oder LambdaTest Konten). Wenn festgelegt, stellt WebdriverIO automatisch Verbindungsoptionen für Sie ein. Wenn Sie keinen Cloud-Anbieter verwenden, kann dies verwendet werden, um jedes andere WebDriver-Backend zu authentifizieren.
Type: String
Default: undefined
key
Ihr Cloud-Service-Benutzername (funktioniert nur für Sauce Labs, Browserstack, TestingBot oder LambdaTest Konten). Wenn festgelegt, stellt WebdriverIO automatisch Verbindungsoptionen für Sie ein. Wenn Sie keinen Cloud-Anbieter verwenden, kann dies verwendet werden, um jedes andere WebDriver-Backend zu authentifizieren.
Type: String
Default: undefined
capabilities
Definiert die Capabilities, die Sie in Ihrer WebDriver-Sitzung ausführen möchten. Sehen Sie sich das WebDriver-Protokoll für weitere Details an. Wenn Sie einen älteren Treiber ausführen, der das WebDriver-Protokoll nicht unterstützt, müssen Sie die JSONWireProtocol-Funktionen verwenden, um eine Sitzung erfolgreich auszuführen.
Neben den WebDriver-basierten Funktionen können Sie browser- und Cloud-Vendor-spezifische Optionen anwenden, die eine tiefere Konfiguration für den Remote-Browser oder das Remote-Gerät ermöglichen. Diese sind in den entsprechenden Herstellerunterlagen dokumentiert, z. B.:
goog:chromeOptions
: for Google Chromemoz:firefoxOptions
: for Mozilla Firefoxms:edgeOptions
: for Microsoft Edgesauce:options
: for Sauce Labsbstack:options
: for BrowserStackselenoid:options
: for Selenoid
Ein nützliches Dienstprogramm ist außerdem der Sauce Labs Automated Test Configurator, der Ihnen hilft, dieses Objekt zu erstellen, indem Sie Ihre gewünschten Capability zusammenklicken.
Type: Object
Default: null
Beispiel:
{
browserName: 'chrome', // options: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // browser version
platformName: 'Windows 10' // OS platform
}
Wenn Sie Web- oder native Tests auf Mobilgeräten ausführen, unterscheiden sich Capabilities
vom WebDriver-Protokoll. Siehe Appium Docs für weitere Details.
logLevel
Grad der Ausführlichkeit des Loggings.
Type: String
Default: info
Options: trace
| debug
| info
| warn
| error
| silent
outputDir
Verzeichnis zum Speichern aller Testrunner-Logdateien (inklusive Reporter-Logs und wdio
Logs). Wenn nicht festgelegt, werden alle Protokolle an stdout
weitergeleitet. Da die meisten Reporter ihre Information an das stdout
weitergeben, wird empfohlen, diese Option nur für bestimmte Reporter zu verwenden, bei denen es sinnvoller ist, den Bericht in eine Datei zu verschieben (wie zum Beispiel den junit
Reporter).
Bei der Ausführung im Standalone Modus ist die einzige generierte Log Datei die wdio
Log Datei.
Type: String
Default: null
connectionRetryTimeout
Timeout für jede WebDriver-Befehl, der an einen Treiber oder ein Grid gesendet wird.
Type: Number
Default: 120000
connectionRetryCount
Maximale Anzahl von Wiederholungsversuchen für Befehle an den Browser Treiber.
Type: Number
Default: 3
agent
Ermöglicht Ihnen, einen benutzerdefiniertenhttp
/https
/http2
Agenten zu verwenden, um Anfragen zu stellen.
Type: Object
Default:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
Specify custom headers
to pass into every WebDriver request. If your Selenium Grid requires Basic Authentification we recommend to pass in an Authorization
header through this option to authenticate your WebDriver requests, e.g.:
import { Buffer } from 'buffer';
// Read the username and password from environment variables
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// Combine the username and password with a colon separator
const credentials = `${username}:${password}`;
// Encode the credentials using Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
Type: Object
Default: {}
transformRequest
Function intercepting HTTP request options before a WebDriver request is made
Type: (RequestOptions) => RequestOptions
Default: none
transformResponse
Function intercepting HTTP response objects after a WebDriver response has arrived. The function is passed the original response object as the first and the corresponding RequestOptions
as the second argument.
Type: (Response, RequestOptions) => Response
Default: none
strictSSL
Whether it does not require SSL certificate to be valid. It can be set via an environment variables as STRICT_SSL
or strict_ssl
.
Type: Boolean
Default: true
enableDirectConnect
Whether enable Appium direct connection feature. It does nothing if the response did not have proper keys while the flag is enabled.
Type: Boolean
Default: true
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()
WebdriverIO
The following options (including the ones listed above) can be used with WebdriverIO in standalone:
automationProtocol
Define the protocol you want to use for your browser automation. Currently only webdriver
is supported, as it is the main browser automation technology WebdriverIO uses.
If you want to automate the browser using a different automation technology, make you set this property to a path that resolves to a module that adheres to the following interface:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* Start a automation session and return a WebdriverIO [monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* with respective automation commands. See the [webdriver](https://www.npmjs.com/package/webdriver) package
* as a reference implementation
*
* @param {Capabilities.RemoteConfig} options WebdriverIO options
* @param {Function} hook that allows to modify the client before it gets released from the function
* @param {PropertyDescriptorMap} userPrototype allows user to add custom protocol commands
* @param {Function} customCommandWrapper allows to modify the command execution
* @returns a WebdriverIO compatible client instance
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* allows user to attach to existing sessions
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* Changes The instance session id and browser capabilities for the new session
* directly into the passed in browser object
*
* @optional
* @param {object} instance the object we get from a new browser session.
* @returns {string} the new session id of the browser
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
Type: String
Default: webdriver
baseUrl
Shorten url
command calls by setting a base URL.
- Wenn Ihr Parameter
url
mit/
beginnt, wirdbaseUrl
vorangestellt (mit Ausnahme des PfadsbaseUrl
, falls vorhanden). - Wenn Ihr Parameter
url
ohne Schema oder/
(wiesome/path
) beginnt, wird die vollständigebaseUrl
direkt vorangestellt.
Type: String
Default: null
waitforTimeout
Default timeout for all waitFor*
commands. (Note the lowercase f
in the option name.) This timeout only affects commands starting with waitFor*
and their default wait time.
To increase the timeout for a test, please see the framework docs.
Type: Number
Default: 5000
waitforInterval
Default interval for all waitFor*
commands to check if an expected state (e.g., visibility) has been changed.
Type: Number
Default: 100
region
If running on Sauce Labs, you can choose to run tests between different data centers: US or EU. To change your region to EU, add region: 'eu'
to your config.
Note: This only has an effect if you provide user
and key
options that are connected to your Sauce Labs account.
Type: String
Default: us
(only for vm and or em/simulators)
Testrunner Options
The following options (including the ones listed above) are defined only for running WebdriverIO with the WDIO testrunner:
specs
Define specs for test execution. You can either specify a glob pattern to match multiple files at once or wrap a glob or set of paths into an array to run them within a single worker process. All paths are seen as relative from the config file path.
Type: (String | String[])[]
Default: []
exclude
Exclude specs from test execution. All paths are seen as relative from the config file path.
Type: String[]
Default: []
suites
An object describing various of suites, which you can then specify with the --suite
option on the wdio
CLI.
Type: Object
Default: {}
capabilities
The same as the capabilities
section described above, except with the option to specify either a multiremote
object, or multiple WebDriver sessions in an array for parallel execution.
You can apply the same vendor and browser specific capabilities as defined above.
Type: Object
|Object[]
Default: [{ 'wdio:maxInstances': 5, browserName: 'firefox' }]
maxInstances
Maximum number of total parallel running workers.
Note: that it may be a number as high as 100
, when the tests are being performed on some external vendors such as Sauce Labs's machines. There, the tests are not tested on a single machine, but rather, on multiple VMs. If the tests are to be run on a local development machine, use a number that is more reasonable, such as 3
, 4
, or 5
. Essentially, this is the number of browsers that will be concurrently started and running your tests at the same time, so it depends on how much RAM there is on your machine, and how many other apps are running on your machine.
You can also apply maxInstances
within your capability objects using the wdio:maxInstances
capability. This will limit the amount of parallel sessions for that particular capability.
Type: Number
Default: 100
maxInstancesPerCapability
Maximum number of total parallel running workers per capability.
Type: Number
Default: 100
injectGlobals
Inserts WebdriverIO's globals (e.g. browser
, $
and $$
) into the global environment. If you set to false
, you should import from @wdio/globals
, e.g.:
import { browser, $, $$, expect } from '@wdio/globals'
Note: WebdriverIO doesn't handle injection of test framework specific globals.
Type: Boolean
Default: true
bail
If you want your test run to stop after a specific number of test failures, use bail
. (It defaults to 0
, which runs all tests no matter what.) Note: A test in this context are all tests within a single spec file (when using Mocha or Jasmine) or all steps within a feature file (when using Cucumber). If you want to control the bail behavior within tests of a single test file, take a look at the available framework options.
Type: Number
Default: 0
(don't bail; run all tests)
specFileRetries
The number of times to retry an entire specfile when it fails as a whole.
Type: Number
Default: 0
specFileRetriesDelay
Delay in seconds between the spec file retry attempts
Type: Number
Default: 0
specFileRetriesDeferred
Whether or not retried spec files should be retried immediately or deferred to the end of the queue.
Type: Boolean
Default: true
groupLogsByTestSpec
Choose the log output view.
If set to false
logs from different test files will be printed in real-time. Please note that this may result in the mixing of log outputs from different files when running in parallel.
If set to true
log outputs will be grouped by Test Spec and printed only when the Test Spec is completed.
By default, it is set to false
so logs are printed in real-time.
Type: Boolean
Default: false
groupLogsByTestSpec
Choose the log output view.
If set to false
logs from different test files will be printed in real-time. Please note that this may result in the mixing of log outputs from different files when running in parallel.
If set to true
log outputs will be grouped by Test Spec and printed only when the Test Spec is completed.
By default, it is set to false
so logs are printed in real-time.
Type: Boolean
Default: false
services
Services take over a specific job you don't want to take care of. They enhance your test setup with almost no effort.
Type: String[]|Object[]
Default: []
framework
Defines the test framework to be used by the WDIO testrunner.
Type: String
Default: mocha
Options: mocha
| jasmine
mochaOpts, jasmineOpts and cucumberOpts
Specific framework-related options. See the framework adapter documentation on which options are available. Read more on this in Frameworks.
Type: Object
Default: { timeout: 10000 }
cucumberFeaturesWithLineNumbers
List of cucumber features with line numbers (when using cucumber framework).
Type: String[]
Default: []
reporters
List of reporters to use. A reporter can be either a string, or an array of ['reporterName', { /* reporter options */}]
where the first element is a string with the reporter name and the second element an object with reporter options.
Type: String[]|Object[]
Default: []
Example:
reporters: [
'dot',
'spec'
['junit', {
outputDir: `${__dirname}/reports`,
otherOption: 'foobar'
}]
]
reporterSyncInterval
Determines in which interval the reporter should check if they are synchronized if they report their logs asynchronously (e.g. if logs are streamed to a 3rd party vendor).
Type: Number
Default: 100
(ms)
reporterSyncTimeout
Determines the maximum time reporters have to finish uploading all their logs until an error is being thrown by the testrunner.
Type: Number
Default: 5000
(ms)
execArgv
Node arguments to specify when launching child processes.
Type: String[]
Default: null
filesToWatch
A list of glob supporting string patterns that tell the testrunner to have it additionally watch other files, e.g. application files, when running it with the --watch
flag. By default the testrunner already watches all spec files.
Type: String[]
Default: []
updateSnapshots
Set to true if you want to update your snapshots. Ideally used as part of a CLI parameter, e.g. wdio run wdio.conf.js --s
.
Type: 'new' | 'all' | 'none'
Default: none
if not provided and tests run in CI, new
if not provided, otherwise what's been provided
resolveSnapshotPath
Overrides default snapshot path. For example, to store snapshots next to test files.
export const config: WebdriverIO.Config = {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
}
Type: (testPath: string, snapExtension: string) => string
Default: stores snapshot files in __snapshots__
directory next to test file
tsConfigPath
WDIO uses tsx
to compile TypeScript files. Your TSConfig is automatically detected from the current working directory but you can specify a custom path here or by setting the TSX_TSCONFIG_PATH environment variable.
See the tsx
docs: https://tsx.is/dev-api/node-cli#custom-tsconfig-json-path
Type: String
Default: null
Hooks
The WDIO testrunner allows you to set hooks to be triggered at specific times of the test lifecycle. This allows custom actions (e.g. take screenshot if a test fails).
Every hook has as parameter specific information about the lifecycle (e.g. information about the test suite or test). Read more about all hook properties in our example config.
Note: Some hooks (onPrepare
, onWorkerStart
, onWorkerEnd
and onComplete
) are executed in a different process and therefore can not share any global data with the other hooks that live in the worker process.
onPrepare
Gets executed once before all workers get launched.
Parameters:
config
(object
): WebdriverIO-Konfigurationsobjektparam
(object[]
): Liste der Capabilities
onWorkerStart
Gets executed before a worker process is spawned and can be used to initialize specific service for that worker as well as modify runtime environments in an async fashion.
Parameters:
cid
(string
): Capability-ID (z. B. 0-0)caps
(Objekt
): Enthält Capabilities für Sitzungen, die im Worker Prozess erstellt werdenspecs
(string[]
): Tests, die im Workerprozess ausgeführt werden sollenargs
(object
): Objekt, das mit der Hauptkonfiguration zusammengeführt wird, sobald der Worker initialisiert istexecArgv
(string[]
): Liste von String-Argumenten, die an den Arbeitsprozess übergeben werden
onWorkerEnd
Gets executed just after a worker process has exited.
Parameters:
cid
(string
): Capability-ID (z. B. 0-0)exitCode
(Zahl
): 0 – Erfolg, 1 – Fehlerspecs
(string[]
): Tests, die im Workerprozess ausgeführt werden sollenretries
(number
): number of spec level retries used as defined in "Add retries on a per-specfile basis"
beforeSession
Gets executed just before initializing the webdriver session and test framework. It allows you to manipulate configurations depending on the capability or spec.
Parameters:
config
(object
): WebdriverIO-Konfigurationsobjektcaps
(Objekt
): Enthält die Capability für die Sitzung benutzt wirdspecs
(string[]
): Tests, die im Workerprozess ausgeführt werden sollen
before
Gets executed before test execution begins. At this point you can access to all global variables like browser
. It is the perfect place to define custom commands.
Parameters:
caps
(object
): containing capabilities for session that will be spawn in the workerspecs
(string[]
): specs to be run in the worker processbrowser
(Objekt
): Instanz der erstellten Browser-/Gerätesitzung
beforeSuite
Hook that gets executed before the suite starts (in Mocha/Jasmine only)
Parameters:
suite
(Objekt
): Suite-Details
beforeHook
Hook that gets executed before a hook within the suite starts (e.g. runs before calling beforeEach in Mocha)
Parameters:
test
(Objekt
): Testdetailscontext
(Objekt
): Testkontext (repräsentiert World-Objekt in Cucumber)
afterHook
Hook that gets executed after a hook within the suite ends (e.g. runs after calling afterEach in Mocha)
Parameters:
test
(Objekt
): Testdetailscontext
(Objekt
): Testkontext (repräsentiert World-Objekt in Cucumber)result
(Objekt
): Hook-Ergebnis (enthälterror
,result
,duration
,passed
,retries
Eigenschaften)
beforeTest
Function to be executed before a test (in Mocha/Jasmine only).
Parameters:
test
(object
): test detailscontext
(Objekt
): Scope-Objekt, mit dem der Test ausgeführt wurde
beforeCommand
Runs before a WebdriverIO command gets executed.
Parameters:
commandName
(string
): Befehlsnameargs
(*
): Argumente, die der Befehl erhalten würde
afterCommand
Runs after a WebdriverIO command gets executed.
Parameters:
commandName
(string
): Befehlsnameargs
(*
): Argumente, die der Befehl erhalten würderesult
(Zahl
): 0 - wenn Befehl erfolgreich wurde, 1 - beim Fehlererror
(Fehler
): Fehlerobjekt, falls vorhanden
afterTest
Function to be executed after a test (in Mocha/Jasmine) ends.
Parameters:
test
(Objekt
): Testdetailscontext
(Objekt
): Scope-Objekt, mit dem der Test ausgeführt wurderesult.error
(Error
): Fehlerobjekt falls der Test fehlschlägt, ansonstenundefiniert
result.result
(Any
): Ergebniss der Testfunktionresult.duration
(Ziffer
): Testdauerresult.passed
(Boolean
): wahr, wenn der Test bestanden wurde, andernfalls falschresult.retries
(Object
): information about single test related retries as defined for Mocha and Jasmine as well as Cucumber, e.g.{ attempts: 0, limit: 0 }
, seeresult
(Objekt
): Hook-Ergebnis (enthälterror
,result
,duration
,passed
,retries
Eigenschaften)
afterSuite
Hook that gets executed after the suite has ended (in Mocha/Jasmine only)
Parameters:
suite
(Objekt
): Suite-Details
after
Gets executed after all tests are done. You still have access to all global variables from the test.
Parameters:
exitCode
(Zahl
): 0 – Erfolg, 1 – Fehlercaps
(Objekt
): Enthält die Capability, die für die Sitzung benutzt wurdespecs
(string[]
): Tests, die im Workerprozess ausgeführt wurden
afterSession
Gets executed right after terminating the webdriver session.
Parameters:
config
(object
): WebdriverIO-Konfigurationsobjektcaps
(object
): containing capabilities for session that will be spawn in the workerspecs
(string[]
): specs to be run in the worker process
onComplete
Gets executed after all workers got shut down and the process is about to exit. An error thrown in the onComplete hook will result in the test run failing.
Parameters:
exitCode
(Zahl
): 0 – Erfolg, 1 – Fehlerconfig
(object
): WebdriverIO-Konfigurationsobjektcaps
(Objekt
): Enthält Capabilities für Sitzungen, die im Worker Prozess genutzt wurdenErgebnis
(Objekt
): Ergebnisobjekt, das Testergebnisse enthält
onReload
Gets executed when a refresh happens.
Parameters:
oldSessionId
(string
): Sitzungs-ID der alten SitzungnewSessionId
(string
): Sitzungs-ID der neuen Sitzung
beforeFeature
Runs before a Cucumber Feature.
Parameters:
uri
(string
): Pfad zur Feature-Dateifeature
(GherkinDocument.IFeature
): Cucumber-Feature-Objekt
afterFeature
Runs after a Cucumber Feature.
Parameters:
uri
(string
): Pfad zur Feature-Dateifeature
(GherkinDocument.IFeature
): Cucumber-Feature-Objekt
beforeScenario
Runs before a Cucumber Scenario.
Parameters:
world
(ITestCaseHookParameter
): Weltobjekt, das Informationen zu Pickle und Testschritt enthältcontext
(Objekt
): Cucumber World-Objekt
afterScenario
Runs after a Cucumber Scenario.
Parameters:
world
(ITestCaseHookParameter
): Weltobjekt, das Informationen zu Pickle und Testschritt enthältresult
(Objekt
): Ergebnisobjekt, das das Szenarioergebnisse enthältresult.passed
(boolean
): wahr, wenn der Test bestanden wurde, andernfalls falschresult.error
(string
): Fehler, wenn Szenario fehlgeschlagen istresult.duration
(ziffer
): Testdauercontext
(Objekt
): Cucumber World-Objekt
beforeStep
Runs before a Cucumber Step.
Parameters:
step
(Pickle.IPickleStep
): Cucumber Objektscenario
(IPickle
): Cucumber-Szenario Objektcontext
(object
): Cucumber World object
afterStep
Runs after a Cucumber Step.
Parameters:
step
(Pickle.IPickleStep
): Cucumber step objectscenario
(IPickle
): Cucumber scenario objectresult
(Objekt
): Ergebnisobjekt, das das Szenarioergebnisse enthältresult.passed
(boolean
): wahr, wenn der Test bestanden wurde, andernfalls falschresult.error
(string
): Fehler, wenn Szenario fehlgeschlagen istresult.duration
(ziffer
): Testdauercontext
(Objekt
): Cucumber World-Objekt
beforeAssertion
Hook that gets executed before a WebdriverIO assertion happens.
Parameters:
params
: assertion informationparams.matcherName
(string
): name of the matcher (e.g.toHaveTitle
)params.expectedValue
: value that is passed into the matcherparams.options
: assertion options
afterAssertion
Hook that gets executed after a WebdriverIO assertion happened.
Parameters:
params
: assertion informationparams.matcherName
(string
): name of the matcher (e.g.toHaveTitle
)params.expectedValue
: value that is passed into the matcherparams.options
: assertion optionsparams.result
: assertion results