Zum Hauptinhalt springen

Docker Service

wdio-docker-service ist ein Paket von Drittanbietern, weitere Informationen finden Sie auf GitHub | npm

Dieser Service ist für die Verwendung mit WebdriverIO gedacht und hilft bei der Durchführung von Funktions-/Integrationstests gegen/mit containerisierten Anwendungen. Er verwendet den beliebten Docker-Service (separat installiert), um Container auszuführen.

Warum sollte man ihn verwenden?

Idealerweise würden Ihre Tests in einer Art CI/CD-Pipeline laufen, wo es oft keine "echten" Browser und andere Ressourcen gibt, von denen Ihre Anwendung abhängt. Mit dem Aufkommen von Docker können praktisch alle notwendigen Anwendungsabhängigkeiten containerisiert werden. Mit diesem Service können Sie Ihren Anwendungscontainer oder docker-selenium in Ihrer CI-Umgebung und in vollständiger Isolation ausführen (vorausgesetzt, CI kann Docker als Abhängigkeit installiert haben). Dasselbe kann für die lokale Entwicklung gelten, wenn Ihre Anwendung ein gewisses Maß an Isolation von Ihrem Haupt-Betriebssystem benötigt.

Wie es funktioniert

Der Service führt ein vorhandenes Docker-Image aus und sobald es bereit ist, werden WebdriverIO-Tests gestartet, die gegen Ihre containerisierte Anwendung laufen sollten.

Installation

Führen Sie aus:

npm install wdio-docker-service --save-dev

Anweisungen zur Installation von WebdriverIO finden Sie hier.

Konfiguration

Standardmäßig sind Google Chrome, Firefox und PhantomJS verfügbar, wenn sie auf dem Host-System installiert sind. Um den Service zu nutzen, müssen Sie docker zu Ihrem Service-Array hinzufügen:

// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};

Optionen

dockerOptions

Verschiedene Optionen, die zum Ausführen des Docker-Containers erforderlich sind

Typ: Object

Standard: { options: { rm: true } }

Beispiel:

dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'http://localhost:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}

dockerOptions.image

Docker-Container-Name-Tag. Kann lokal oder aus Docker HUB sein.

Typ: String

Erforderlich: true

dockerOptions.healthCheck

Konfiguration, die die Bereitschaft Ihrer Container überprüft, bevor Tests gestartet werden. Normalerweise wäre dies eine localhost-URL. Wenn healthCheck nicht konfiguriert ist, beginnt Webdriver sofort nach dem Start des Docker-Containers mit der Ausführung von Tests, was möglicherweise zu früh ist, da es Zeit braucht, bis ein Webdienst in einem Docker-Container startet.

Typ: String|Object

Optionen für die Objektverwendung:

  • url - URL zu einer Anwendung, die in Ihrem Container läuft
  • maxRetries - Anzahl der Wiederholungen bis zum Fehlschlag der Gesundheitsprüfung. Standard: 10
  • inspectInterval - Intervall zwischen den einzelnen Wiederholungen in ms. Standard: 500
  • startDelay - Anfangsverzögerung bis zum Beginn der Gesundheitsprüfung in ms. Standard: 0

Beispiel 1 (String): healthCheck: 'http://localhost:4444'

Beispiel 2 (Object):

healthCheck: {
url: 'http://localhost:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}

dockerOptions.options

Zuordnung von Optionen, die vom Befehl docker run verwendet werden. Weitere Details zum Befehl run finden Sie hier.

Jede einbuchstabige Option wird in -[option] umgewandelt (z.B. d: true -> -d).

Jede Option mit zwei oder mehr Zeichen wird in --[option] umgewandelt (z.B. rm: true -> --rm).

Für Optionen, die mehrmals verwendet werden können (z.B. -e,-add-host, --expose usw.), verwenden Sie bitte die Array-Notation (z.B. e: ["NODE_ENV=development", "FOO=bar"]).

Typ: Object

Beispiel:

options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}

dockerOptions.args

Alle Argumente, die Sie in den Container übergeben möchten. Entspricht [ARG...] in der Docker-Run-CLI.

Typ: String

dockerOptions.command

Jeder Befehl, den Sie in den Container übergeben möchten. Entspricht [COMMAND] in der Docker-Run-CLI.

Typ: String

onDockerReady

Eine Callback-Methode, die aufgerufen wird, wenn die Docker-Anwendung bereit ist. Die Bereitschaft wird durch die Fähigkeit bestimmt, die healthCheck-URL anzupingen.

Typ: Function

dockerLogs

Pfad, unter dem Logs aus dem Docker-Container gespeichert werden sollen

Typ: String

Anwendungsfälle / Rezepte für Tests

Bitte besuchen Sie unser Wiki für weitere Details.

Welcome! How can I help?

WebdriverIO AI Copilot