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