Docker
Docker ist eine leistungsstarke Containerisierungstechnologie, mit der Sie Ihre Testsuite in einen Container verpacken können, der sich auf jedem System gleich verhält. Dies kann Unregelmäßigkeiten durch verschieden Browser oder Systeme verhindern. Um Ihre Tests innerhalb eines Containers auszuführen, erstellen Sie ein Dockerfile
in Ihrem Projektverzeichnis, z.B.:
FROM ianwalter/puppeteer:latest
WORKDIR /app
ADD . /app
RUN npm install
CMD npx wdio
Stellen Sie sicher, dass Sie Ihr node_modules
Ordner nicht in Ihr Docker-Image einschließen und die Dependencies beim Erstellen des Images installieren. Fügen Sie dazu eine .dockerignore
-Datei mit folgendem Inhalt hinzu:
node_modules
Wir verwenden hier ein Docker-Image, auf dem Google Chrome vorinstalliert ist. Es gibt verschiedene Images, die mit verschiedenen Browser-Setups verfügbar sind. Finden Sie dies im Selenium-Projekt auf Docker Hub.
Da wir Google Chrome in unserem Docker-Container nur im Headless-Modus ausführen können, müssen wir unsere wdio.conf.js
ändern, um dies sicherzustellen:
export const config = {
// ...
capabilities: [{
maxInstances: 1,
browserName: 'chrome',
'goog:chromeOptions': {
args: [
'--no-sandbox',
'--disable-infobars',
'--headless',
'--disable-gpu',
'--window-size=1440,735'
],
}
}],
// ...
}
Wie in Automatisierungsprotokolle erwähnt, können Sie WebdriverIO mit dem WebDriver-Protokoll oder Chrome DevTools ausführen. Wenn Sie WebDriver verwenden, stellen Sie sicher, dass die auf Ihrem Image installierte Chrome-Version mit der Chromedriver -Version übereinstimmt, die Sie in Ihrer package.json
definiert haben.
Um den Docker-Container zu erstellen, können Sie Folgendes ausführen:
docker build -t mytest -f Dockerfile .
Führen Sie dann zum Ausführen der Tests Folgendes aus:
docker run -it mytest
Weitere Informationen zum Konfigurieren des Docker-Images finden Sie in der Docker-Dokumentation.