Zum Hauptinhalt springen

Frameworks

WebdriverIO Runner hat integrierte Unterstützung für Mocha, Jasmine und Cucumber.js. Sie können es auch mit Open-Source-Frameworks von Drittanbietern integrieren, wie z.B. Serenity/JS.

Integration von WebdriverIO mit Test-Frameworks

Um WebdriverIO mit einem Test-Framework zu integrieren, benötigen Sie ein Adapter-Paket, das auf NPM verfügbar ist. Beachten Sie, dass das Adapter-Paket an derselben Stelle installiert werden muss, an der WebdriverIO installiert ist. Wenn Sie WebdriverIO also global installiert haben, stellen Sie sicher, dass Sie das Adapter-Paket ebenfalls global installieren.

Die Integration von WebdriverIO mit einem Test-Framework ermöglicht Ihnen den Zugriff auf die WebDriver-Instanz über die globale Variable browser in Ihren Spec-Dateien oder Step-Definitionen. Beachten Sie, dass WebdriverIO auch die Instanziierung und Beendigung der Selenium-Sitzung übernimmt, sodass Sie dies nicht selbst tun müssen.

Verwendung von Mocha​

Installieren Sie zunächst das Adapter-Paket von NPM:

npm install @wdio/mocha-framework --save-dev

Standardmäßig bietet WebdriverIO eine Assertion-Bibliothek, die integriert ist und mit der Sie sofort beginnen können:

describe('my awesome website', () => {
it('should do some assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})

WebdriverIO unterstützt Mochas BDD (Standard), TDD und QUnit Interfaces.

Wenn Sie Ihre Specs im TDD-Stil schreiben möchten, setzen Sie die ui-Eigenschaft in Ihrer mochaOpts-Konfiguration auf tdd. Jetzt sollten Ihre Testdateien so geschrieben werden:

suite('my awesome website', () => {
test('should do some assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})

Wenn Sie andere Mocha-spezifische Einstellungen definieren möchten, können Sie dies mit dem Schlüssel mochaOpts in Ihrer Konfigurationsdatei tun. Eine Liste aller Optionen finden Sie auf der Mocha-Projektwebsite.

Hinweis: WebdriverIO unterstützt nicht die veraltete Verwendung von done-Callbacks in Mocha:

it('should test something', (done) => {
done() // wirft "done is not a function"
})

Mocha-Optionen​

Die folgenden Optionen können in Ihrer wdio.conf.js angewendet werden, um Ihre Mocha-Umgebung zu konfigurieren. Hinweis: Nicht alle Optionen werden unterstützt, z.B. führt die Anwendung der Option parallel zu einem Fehler, da der WDIO-Testrunner seine eigene Methode hat, Tests parallel auszuführen. Sie können diese Framework-Optionen als Argumente übergeben, z.B.:

wdio run wdio.conf.ts --mochaOpts.grep "my test" --mochaOpts.bail --no-mochaOpts.checkLeaks

Dies übergibt die folgenden Mocha-Optionen:

{
grep: ['my-test'],
bail: true
checkLeacks: false
}

Die folgenden Mocha-Optionen werden unterstützt:

require​

Die Option require ist nützlich, wenn Sie grundlegende Funktionalitäten hinzufügen oder erweitern möchten (WebdriverIO-Framework-Option).

Type: string|string[]
Default: []

compilers​

Verwenden Sie das/die angegebene(n) Modul(e), um Dateien zu kompilieren. Compiler werden vor Requires eingebunden (WebdriverIO-Framework-Option).

Type: string[]
Default: []

allowUncaught​

Nicht abgefangene Fehler weitergeben.

Type: boolean
Default: false

bail​

Nach dem ersten Testfehler abbrechen.

Type: boolean
Default: false

checkLeaks​

Auf Lecks globaler Variablen prüfen.

Type: boolean
Default: false

delay​

Ausführung der Root-Suite verzögern.

Type: boolean
Default: false

fgrep​

Testfilter für einen bestimmten String.

Type: string
Default: null

forbidOnly​

Tests, die mit only markiert sind, lassen die Suite fehlschlagen.

Type: boolean
Default: false

forbidPending​

Ausstehende Tests lassen die Suite fehlschlagen.

Type: boolean
Default: false

fullTrace​

Vollständiger Stacktrace bei Fehlern.

Type: boolean
Default: false

global​

Variablen, die im globalen Bereich erwartet werden.

Type: string[]
Default: []

grep​

Testfilter für einen bestimmten regulären Ausdruck.

Type: RegExp|string
Default: null

invert​

Testfilterübereinstimmungen umkehren.

Type: boolean
Default: false

retries​

Anzahl der Wiederholungsversuche für fehlgeschlagene Tests.

Type: number
Default: 0

timeout​

Timeout-Schwellenwert (in ms).

Type: number
Default: 30000

Verwendung von Jasmine​

Installieren Sie zunächst das Adapter-Paket von NPM:

npm install @wdio/jasmine-framework --save-dev

Sie können dann Ihre Jasmine-Umgebung konfigurieren, indem Sie eine jasmineOpts-Eigenschaft in Ihrer Konfiguration festlegen. Eine Liste aller Optionen finden Sie auf der Jasmine-Projektwebsite.

Jasmine-Optionen​

Die folgenden Optionen können in Ihrer wdio.conf.js angewendet werden, um Ihre Jasmine-Umgebung mit der Eigenschaft jasmineOpts zu konfigurieren. Weitere Informationen zu diesen Konfigurationsoptionen finden Sie in der Jasmine-Dokumentation. Sie können diese Framework-Optionen als Argumente übergeben, z.B.:

wdio run wdio.conf.ts --jasmineOpts.grep "my test" --jasmineOpts.failSpecWithNoExpectations --no-jasmineOpts.random

Dies übergibt die folgenden Mocha-Optionen:

{
grep: ['my-test'],
bail: true
checkLeacks: false
}

Die folgenden Jasmine-Optionen werden unterstützt:

defaultTimeoutInterval​

Standard-Timeout-Intervall für Jasmine-Operationen.

Type: number
Default: 60000

helpers​

Array von Dateipfaden (und Globs) relativ zu spec_dir, die vor Jasmine-Specs eingebunden werden sollen.

Type: string[]
Default: []

requires​

Die Option requires ist nützlich, wenn Sie grundlegende Funktionalitäten hinzufügen oder erweitern möchten.

Type: string[]
Default: []

random​

Ob die Reihenfolge der Spec-Ausführung zufällig sein soll.

Type: boolean
Default: true

seed​

Seed, der als Grundlage für die Zufälligkeit verwendet wird. Null bewirkt, dass der Seed zu Beginn der Ausführung zufällig bestimmt wird.

Type: Function
Default: null

failSpecWithNoExpectations​

Ob die Spec fehlschlagen soll, wenn sie keine Erwartungen ausgeführt hat. Standardmäßig wird eine Spec, die keine Erwartungen ausgeführt hat, als bestanden gemeldet. Wenn Sie dies auf true setzen, wird eine solche Spec als Fehler gemeldet.

Type: boolean
Default: false

oneFailurePerSpec​

Ob Specs nur einen Erwartungsfehler haben sollen.

Type: boolean
Default: false

specFilter​

Funktion zur Filterung von Specs.

Type: Function
Default: (spec) => true

grep​

Nur Tests ausführen, die mit diesem String oder regulären Ausdruck übereinstimmen. (Nur anwendbar, wenn keine benutzerdefinierte specFilter-Funktion festgelegt ist)

Type: string|Regexp
Default: null

invertGrep​

Wenn true, kehrt es die übereinstimmenden Tests um und führt nur Tests aus, die nicht mit dem in grep verwendeten Ausdruck übereinstimmen. (Nur anwendbar, wenn keine benutzerdefinierte specFilter-Funktion festgelegt ist)

Type: boolean
Default: false

Verwendung von Cucumber​

Installieren Sie zunächst das Adapter-Paket von NPM:

npm install @wdio/cucumber-framework --save-dev

Wenn Sie Cucumber verwenden möchten, setzen Sie die framework-Eigenschaft auf cucumber, indem Sie framework: 'cucumber' zur Konfigurationsdatei hinzufügen.

Optionen für Cucumber können in der Konfigurationsdatei mit cucumberOpts angegeben werden. Die vollständige Liste der Optionen finden Sie hier.

Um schnell mit Cucumber zu beginnen, schauen Sie sich unser cucumber-boilerplate-Projekt an, das mit allen Step-Definitionen geliefert wird, die Sie zum Starten benötigen, und Sie können sofort Feature-Dateien schreiben.

Cucumber-Optionen​

Die folgenden Optionen können in Ihrer wdio.conf.js angewendet werden, um Ihre Cucumber-Umgebung mit der Eigenschaft cucumberOpts zu konfigurieren:

Anpassen von Optionen über die Kommandozeile

Die cucumberOpts, wie benutzerdefinierte tags zum Filtern von Tests, können über die Kommandozeile angegeben werden. Dies geschieht durch Verwendung des Formats cucumberOpts.{optionName}="value".

Wenn Sie beispielsweise nur die Tests ausführen möchten, die mit @smoke gekennzeichnet sind, können Sie den folgenden Befehl verwenden:

# Wenn Sie nur Tests ausführen möchten, die das Tag "@smoke" haben
npx wdio run ./wdio.conf.js --cucumberOpts.tags="@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.name="some scenario name" --cucumberOpts.failFast

Dieser Befehl setzt die Option tags in cucumberOpts auf @smoke, wodurch sichergestellt wird, dass nur Tests mit diesem Tag ausgeführt werden.

backtrace​

Vollständigen Backtrace für Fehler anzeigen.

Type: Boolean
Default: true

requireModule​

Module vor dem Laden von Support-Dateien laden.

Type: string[]
Default: []
Beispiel:

cucumberOpts: {
requireModule: ['@babel/register']
// oder
requireModule: [
[
'@babel/register',
{
rootMode: 'upward',
ignore: ['node_modules']
}
]
]
}

failFast​

Ausführung beim ersten Fehler abbrechen.

Type: boolean
Default: false

name​

Nur Szenarien ausführen, deren Name mit dem Ausdruck übereinstimmt (wiederholbar).

Type: RegExp[]
Default: []

require​

Dateien mit Ihren Step-Definitionen vor der Ausführung von Features laden. Sie können auch einen Glob für Ihre Step-Definitionen angeben.

Type: string[]
Default: [] Beispiel:

cucumberOpts: {
require: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}

import​

Pfade zu Ihrem Support-Code, für ESM.

Type: String[]
Default: [] Beispiel:

cucumberOpts: {
import: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}

strict​

Fehlschlagen, wenn es undefinierte oder ausstehende Schritte gibt.

Type: boolean
Default: false

tags​

Nur Features oder Szenarien mit Tags ausführen, die dem Ausdruck entsprechen. Weitere Informationen finden Sie in der Cucumber-Dokumentation.

Type: String
Default: ``

timeout​

Timeout in Millisekunden für Step-Definitionen.

Type: Number
Default: 30000

retry​

Geben Sie die Anzahl der Wiederholungsversuche für fehlgeschlagene Testfälle an.

Type: Number
Default: 0

retryTagFilter​

Nur Features oder Szenarien mit Tags wiederholen, die dem Ausdruck entsprechen (wiederholbar). Diese Option erfordert, dass '--retry' angegeben wird.

Type: RegExp

language​

Standardsprache für Ihre Feature-Dateien

Type: String
Default: en

order​

Tests in definierter / zufälliger Reihenfolge ausführen

Type: String
Default: defined

format​

Name und Ausgabedateipfad des zu verwendenden Formatters. WebdriverIO unterstützt hauptsächlich nur die [Formatters](https://github.

Welcome! How can I help?

WebdriverIO AI Copilot