Konfiguration
Basierend auf dem Setup-Typ (z.B. Verwendung der reinen Protokollbindungen, WebdriverIO als eigenständiges Paket oder dem WDIO-Testrunner) gibt es verschiedene Optionen, um die Umgebung zu steuern.
WebDriver-Optionen
Die folgenden Optionen werden bei Verwendung des webdriver
Protokollpakets definiert:
protocol
Protokoll für die Kommunikation mit dem Treiber-Server.
Typ: String
Standard: http
hostname
Host deines Treiber-Servers.
Typ: String
Standard: 0.0.0.0
port
Port auf dem dein Treiber-Server läuft.
Typ: Number
Standard: undefined
path
Pfad zum Endpunkt des Treiber-Servers.
Typ: String
Standard: /
queryParams
Abfrageparameter, die an den Treiber-Server weitergegeben werden.
Typ: Object
Standard: undefined
user
Dein Cloud-Service-Benutzername (funktioniert nur für Sauce Labs, Browserstack, TestingBot oder LambdaTest Konten). Wenn gesetzt, wird WebdriverIO automatisch Verbindungsoptionen für dich einrichten. Wenn du keinen Cloud-Anbieter verwendest, kann dies zur Authentifizierung bei einem anderen WebDriver-Backend verwendet werden.
Typ: String
Standard: undefined
key
Dein Cloud-Service-Zugriffsschlüssel oder geheimer Schlüssel (funktioniert nur für Sauce Labs, Browserstack, TestingBot oder LambdaTest Konten). Wenn gesetzt, wird WebdriverIO automatisch Verbindungsoptionen für dich einrichten. Wenn du keinen Cloud-Anbieter verwendest, kann dies zur Authentifizierung bei einem anderen WebDriver-Backend verwendet werden.
Typ: String
Standard: undefined
capabilities
Definiert die Fähigkeiten, die du in deiner WebDriver-Sitzung ausführen möchtest. Weitere Details findest du im WebDriver-Protokoll. Wenn du einen älteren Treiber verwendest, der das WebDriver-Protokoll nicht unterstützt, musst du die JSONWireProtocol-Capabilities verwenden, um eine Sitzung erfolgreich auszuführen.
Neben den WebDriver-basierten Capabilities kannst du browser- und herstellerspezifische Optionen anwenden, die eine tiefere Konfiguration des Remote-Browsers oder -Geräts ermöglichen. Diese sind in den entsprechenden Herstellerdokumentationen dokumentiert, z.B.:
goog:chromeOptions
: für Google Chromemoz:firefoxOptions
: für Mozilla Firefoxms:edgeOptions
: für Microsoft Edgesauce:options
: für Sauce Labsbstack:options
: für BrowserStackselenoid:options
: für Selenoid
Zusätzlich ist der Sauce Labs Automated Test Configurator ein nützliches Tool, das dir hilft, dieses Objekt durch Zusammenklicken deiner gewünschten Capabilities zu erstellen.
Typ: Object
Standard: null
Beispiel:
{
browserName: 'chrome', // Optionen: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // Browser-Version
platformName: 'Windows 10' // OS-Plattform
}
Wenn du Web- oder native Tests auf mobilen Geräten durchführst, unterscheiden sich die capabilities
vom WebDriver-Protokoll. Weitere Details findest du in der Appium-Dokumentation.
logLevel
Grad der Protokollierungsausführlichkeit.
Typ: String
Standard: info
Optionen: trace
| debug
| info
| warn
| error
| silent
outputDir
Verzeichnis zum Speichern aller Testrunner-Protokolldateien (einschließlich Reporter-Protokolle und wdio
-Protokolle). Wenn nicht gesetzt, werden alle Protokolle an stdout
gestreamt. Da die meisten Reporter für die Ausgabe auf stdout
ausgelegt sind, wird empfohlen, diese Option nur für bestimmte Reporter zu verwenden, bei denen es sinnvoller ist, Berichte in eine Datei zu schreiben (wie z.B. beim junit
-Reporter).
Im Standalone-Modus wird von WebdriverIO nur das wdio
-Protokoll generiert.
Typ: String
Standard: null
connectionRetryTimeout
Timeout für jede WebDriver-Anfrage an einen Treiber oder ein Grid.
Typ: Number
Standard: 120000
connectionRetryCount
Maximale Anzahl von Anfrage-Wiederholungen an den Selenium-Server.
Typ: Number
Standard: 3
agent
Ermöglicht die Verwendung eines benutzerdefinierten http
/https
/http2
Agenten für Anfragen.
Typ: Object
Standard:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
Gib benutzerdefinierte headers
an, die in jede WebDriver-Anfrage übergeben werden sollen. Wenn dein Selenium Grid eine Basis-Authentifizierung erfordert, empfehlen wir, einen Authorization
-Header über diese Option zu übergeben, um deine WebDriver-Anfragen zu authentifizieren, z.B.:
import { Buffer } from 'buffer';
// Benutzername und Passwort aus Umgebungsvariablen lesen
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// Benutzername und Passwort mit Doppelpunkt als Trennzeichen kombinieren
const credentials = `${username}:${password}`;
// Anmeldedaten mit Base64 kodieren
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
Typ: Object
Standard: {}
transformRequest
Funktion, die HTTP-Anfrage-Optionen abfängt, bevor eine WebDriver-Anfrage gestellt wird
Typ: (RequestOptions) => RequestOptions
Standard: keine
transformResponse
Funktion, die HTTP-Antwortobjekte abfängt, nachdem eine WebDriver-Antwort eingegangen ist. Der Funktion wird das ursprüngliche Antwortobjekt als erstes und die entsprechenden RequestOptions
als zweites Argument übergeben.
Typ: (Response, RequestOptions) => Response
Standard: keine
strictSSL
Ob es nicht erforderlich ist, dass das SSL-Zertifikat gültig ist.
Es kann über Umgebungsvariablen wie STRICT_SSL
oder strict_ssl
gesetzt werden.
Typ: Boolean
Standard: true
enableDirectConnect
Ob die Appium-Direktverbindungsfunktion aktiviert werden soll. Es hat keine Auswirkungen, wenn die Antwort keine entsprechenden Schlüssel enthält, während das Flag aktiviert ist.
Typ: Boolean
Standard: true
cacheDir
Der Pfad zum Stammverzeichnis des Cache. Dieses Verzeichnis wird verwendet, um alle Treiber zu speichern, die beim Versuch, eine Sitzung zu starten, heruntergeladen werden.
Typ: String
Standard: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
maskingPatterns
Für eine sicherere Protokollierung können reguläre Ausdrücke mit maskingPatterns
vertrauliche Informationen im Protokoll verschleiern.
- Das Stringformat ist ein regulärer Ausdruck mit oder ohne Flags (z.B.
/.../i
) und durch Komma getrennt für mehrere reguläre Ausdrücke. - Weitere Details zu Maskierungsmustern findest du im Abschnitt zu Maskierungsmustern in der WDIO Logger README.
Typ: String
Standard: undefined
Beispiel:
{
maskingPatterns: '/--key=([^ ]*)/i,/RESULT (.*)/'
}
WebdriverIO
Die folgenden Optionen (einschließlich der oben aufgeführten) können mit WebdriverIO im Standalone-Modus verwendet werden:
automationProtocol
Definiere das Protokoll, das du für deine Browser-Automation verwenden möchtest. Derzeit wird nur webdriver
unterstützt, da es die Hauptbrowser-Automatisierungstechnologie ist, die WebdriverIO verwendet.
Wenn du den Browser mit einer anderen Automatisierungstechnologie steuern möchtest, stelle sicher, dass du diese Eigenschaft auf einen Pfad setzt, der zu einem Modul führt, das sich an die folgende Schnittstelle hält:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* Starte eine Automatisierungssitzung und gebe ein WebdriverIO [Monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* mit entsprechenden Automatisierungsbefehlen zurück. Siehe das [webdriver](https://www.npmjs.com/package/webdriver) Paket
* als Referenzimplementierung
*
* @param {Capabilities.RemoteConfig} options WebdriverIO-Optionen
* @param {Function} hook, das es ermöglicht, den Client zu modifizieren, bevor er aus der Funktion freigegeben wird
* @param {PropertyDescriptorMap} userPrototype ermöglicht dem Benutzer, benutzerdefinierte Protokollbefehle hinzuzufügen
* @param {Function} customCommandWrapper ermöglicht es, die Befehlsausführung zu modifizieren
* @returns eine WebdriverIO-kompatible Client-Instanz
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* ermöglicht dem Benutzer, sich an bestehende Sitzungen anzuhängen
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* Ändert die Instanz-Sitzungs-ID und Browser-Capabilities für die neue Sitzung
* direkt in das übergebene Browser-Objekt
*
* @optional
* @param {object} instance das Objekt, das wir von einer neuen Browser-Sitzung erhalten.
* @returns {string} die neue Sitzungs-ID des Browsers
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
Typ: String
Standard: webdriver
baseUrl
Verkürze url
-Befehlsaufrufe durch Festlegen einer Basis-URL.
- Wenn dein
url
-Parameter mit/
beginnt, wirdbaseUrl
vorangestellt (außer dembaseUrl
-Pfad, falls vorhanden). - Wenn dein
url
-Parameter ohne Schema oder/
beginnt (wiesome/path
), wird die vollständigebaseUrl
direkt vorangestellt.
Typ: String
Standard: null
waitforTimeout
Standardzeitüberschreitung für alle waitFor*
-Befehle. (Beachte das Kleinbuchstaben f
im Optionsnamen.) Diese Zeitüberschreitung betrifft nur Befehle, die mit waitFor*
beginnen und ihre Standardwartezeit.
Um die Zeitüberschreitung für einen Test zu erhöhen, siehe die Framework-Dokumentation.
Typ: Number
Standard: 5000
waitforInterval
Standardintervall für alle waitFor*
-Befehle, um zu prüfen, ob ein erwarteter Zustand (z. B. Sichtbarkeit) geändert wurde.
Typ: Number
Standard: 100
region
Bei der Ausführung auf Sauce Labs kannst du wählen, ob du Tests zwischen verschiedenen Rechenzentren ausführen möchtest: US oder EU.
Um deine Region auf EU zu ändern, füge region: 'eu'
zu deiner Konfiguration hinzu.
Hinweis: Dies hat nur Auswirkungen, wenn du die Optionen user
und key
angibst, die mit deinem Sauce Labs-Konto verbunden sind.
Typ: String
Standard: us
(nur für VM und/oder EM/Simulatoren)
Testrunner-Optionen
Die folgenden Optionen (einschließlich der oben aufgeführten) sind nur für die Ausführung von WebdriverIO mit dem WDIO-Testrunner definiert:
specs
Definiere Spezifikationen für die Testausführung. Du kannst entweder ein Globmuster angeben, um mehrere Dateien auf einmal zu erfassen, oder ein Glob oder eine Reihe von Pfaden in ein Array packen, um sie innerhalb eines einzigen Worker-Prozesses auszuführen. Alle Pfade werden relativ zum Pfad der Konfigurationsdatei betrachtet.
Typ: (String | String[])[]
Standard: []
exclude
Schließe Spezifikationen von der Testausführung aus. Alle Pfade werden relativ zum Pfad der Konfigurationsdatei betrachtet.
Typ: String[]
Standard: []
suites
Ein Objekt, das verschiedene Suites beschreibt, die du dann mit der Option --suite
in der wdio
-CLI angeben kannst.
Typ: Object
Standard: {}
capabilities
Dasselbe wie der oben beschriebene Abschnitt capabilities
, jedoch mit der Option, entweder ein multiremote
-Objekt oder mehrere WebDriver-Sitzungen in einem Array für die parallele Ausführung anzugeben.
Du kannst die gleichen anbieter- und browserspezifischen Capabilities wie oben definiert anwenden.
Typ: Object
|Object[]
Standard: [{ 'wdio:maxInstances': 5, browserName: 'firefox' }]
maxInstances
Maximale Anzahl der parallelen Worker insgesamt.
Hinweis: Es kann eine Zahl bis zu 100
sein, wenn die Tests auf externen Anbietern wie Sauce Labs-Maschinen durchgeführt werden. Dort werden die Tests nicht auf einer einzelnen Maschine, sondern auf mehreren VMs getestet. Wenn die Tests auf einem lokalen Entwicklungsrechner ausgeführt werden sollen, verwende eine sinnvollere Zahl wie 3
, 4
oder 5
. Im Wesentlichen handelt es sich um die Anzahl der Browser, die gleichzeitig gestartet werden und deine Tests gleichzeitig ausführen, sodass es davon abhängt, wie viel RAM auf deinem Rechner vorhanden ist und wie viele andere Apps auf deinem Rechner laufen.
Du kannst maxInstances
auch innerhalb deiner Capability-Objekte mit der wdio:maxInstances
-Capability anwenden. Dies begrenzt die Anzahl der parallelen Sitzungen für diese bestimmte Capability.
Typ: Number
Standard: 100
maxInstancesPerCapability
Maximale Anzahl der parallelen Worker pro Capability.
Typ: Number
Standard: 100
injectGlobals
Fügt WebdriverIOs Globale (z.B. browser
, $
und $$
) in die globale Umgebung ein.
Wenn du auf false
setzt, solltest du von @wdio/globals
importieren, z.B.:
import { browser, $, $$, expect } from '@wdio/globals'
Hinweis: WebdriverIO handhabt nicht die Injektion von testframework-spezifischen Globalen.
Typ: Boolean
Standard: true
bail
Wenn du möchtest, dass dein Testlauf nach einer bestimmten Anzahl von Testfehlern stoppt, verwende bail
.
(Standardmäßig ist es 0
, was bedeutet, dass alle Tests unabhängig vom Ergebnis ausgeführt werden.) Hinweis: Ein Test in diesem Zusammenhang sind alle Tests innerhalb einer einzelnen Spec-Datei (bei Verwendung von Mocha oder Jasmine) oder alle Schritte innerhalb einer Feature-Datei (bei Verwendung von Cucumber). Wenn du das Bail-Verhalten innerhalb von Tests einer einzelnen Testdatei steuern möchtest, schau dir die verfügbaren Framework-Optionen an.
Typ: Number
Standard: 0
(nicht abbrechen; alle Tests ausführen)
specFileRetries
Die Anzahl der Wiederholungen einer gesamten Specdatei, wenn diese als Ganzes fehlschlägt.
Typ: Number
Standard: 0
specFileRetriesDelay
Verzögerung in Sekunden zwischen den Wiederholungsversuchen der Spec-Datei
Typ: Number
Standard: 0
specFileRetriesDeferred
Ob wiederholte Spec-Dateien sofort wiederholt oder ans Ende der Warteschlange verschoben werden sollen.
Typ: Boolean
Standard: true
groupLogsByTestSpec
Wähle die Protokollausgabeansicht.
Wenn auf false
gesetzt, werden Protokolle aus verschiedenen Testdateien in Echtzeit ausgegeben. Bitte beachte, dass dies bei paralleler Ausführung zu einer Vermischung der Protokollausgaben aus verschiedenen Dateien führen kann.
Wenn auf true
gesetzt, werden Protokollausgaben nach Test-Spec gruppiert und erst ausgegeben, wenn die Test-Spec abgeschlossen ist.
Standardmäßig ist es auf false
gesetzt, sodass Protokolle in Echtzeit ausgegeben werden.
Typ: Boolean
Standard: false
services
Services übernehmen eine bestimmte Aufgabe, um die du dich nicht kümmern möchtest. Sie erweitern dein Testsetup mit minimalem Aufwand.
Typ: String[]|Object[]
Standard: []
framework
Definiert das von WDIO-Testrunner zu verwendende Testframework.
Typ: String
Standard: mocha
Optionen: mocha
| jasmine