Verwendung von Cloud-Diensten
Die Verwendung von On-Demand-Diensten wie Sauce Labs, Browserstack, TestingBot, LambdaTest oder Perfecto mit WebdriverIO ist ziemlich einfach. Alles, was Sie tun müssen, ist, Ihren user
und key
des Dienstes in Ihren Optionen festzulegen.
Optional können Sie Ihre Tests auch parametrisieren, indem Sie Cloud-spezifische Capabilities wie build
festlegen. Wenn Sie Cloud-Dienste nur in Travis ausführen möchten, können Sie die Umgebungsvariable CI
verwenden, um zu prüfen, ob Sie sich in Travis befinden, und die Konfiguration entsprechend anpassen.
// wdio.conf.js
export let config = {...}
if (process.env.CI) {
config.user = process.env.SAUCE_USERNAME
config.key = process.env.SAUCE_ACCESS_KEY
}
Sauce Labs
Sie können Ihre Tests so einrichten, dass sie remote in Sauce Labs ausgeführt werden.
Die einzige Voraussetzung ist, dass Sie user
und key
in Ihrer Konfiguration (entweder exportiert von wdio.conf.js
oder übergeben an webdriverio.remote(...)
) auf Ihren Sauce Labs-Benutzernamen und Zugriffsschlüssel setzen.
Sie können auch jede optionale Testkonfigurationsoption als Schlüssel/Wert in den Capabilities für jeden Browser übergeben.
Sauce Connect
Wenn Sie Tests gegen einen Server ausführen möchten, der nicht über das Internet zugänglich ist (wie auf localhost
), dann müssen Sie Sauce Connect verwenden.
Es liegt außerhalb des Umfangs von WebdriverIO, dies zu unterstützen, daher müssen Sie es selbst starten.
Wenn Sie den WDIO-Testrunner verwenden, laden Sie den @wdio/sauce-service
herunter und konfigurieren Sie ihn in Ihrer wdio.conf.js
. Er hilft dabei, Sauce Connect zum Laufen zu bringen und bietet zusätzliche Funktionen, die Ihre Tests besser in den Sauce-Dienst integrieren.
Mit Travis CI
Travis CI hat jedoch Unterstützung für das Starten von Sauce Connect vor jedem Test, daher ist es eine Option, deren Anweisungen zu befolgen.
Wenn Sie dies tun, müssen Sie die Testkonfigurationsoption tunnel-identifier
in den capabilities
jedes Browsers festlegen. Travis setzt dies standardmäßig auf die Umgebungsvariable TRAVIS_JOB_NUMBER
.
Wenn Sie möchten, dass Sauce Labs Ihre Tests nach Build-Nummer gruppiert, können Sie build
auf TRAVIS_BUILD_NUMBER
setzen.
Wenn Sie name
festlegen, ändert dies den Namen dieses Tests in Sauce Labs für diesen Build. Wenn Sie den WDIO-Testrunner in Kombination mit dem @wdio/sauce-service
verwenden, setzt WebdriverIO automatisch einen passenden Namen für den Test.
Beispiel für capabilities
:
browserName: 'chrome',
version: '27.0',
platform: 'XP',
'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER,
name: 'integration',
build: process.env.TRAVIS_BUILD_NUMBER
Timeouts
Da Sie Ihre Tests remote ausführen, kann es notwendig sein, einige Timeouts zu erhöhen.
Sie können das Idle-Timeout ändern, indem Sie idle-timeout
als Testkonfigurationsoption übergeben. Dies steuert, wie lange Sauce zwischen Befehlen wartet, bevor die Verbindung geschlossen wird.
BrowserStack
WebdriverIO hat auch eine integrierte Browserstack-Integration.
Die einzige Voraussetzung ist, dass Sie user
und key
in Ihrer Konfiguration (entweder exportiert von wdio.conf.js
oder übergeben an webdriverio.remote(...)
) auf Ihren Browserstack-Automatisierungsbenutzernamen und Zugriffsschlüssel setzen.
Sie können auch jede optionale unterstützte Capability als Schlüssel/Wert in den Capabilities für jeden Browser übergeben. Wenn Sie browserstack.debug
auf true
setzen, wird ein Screencast der Sitzung aufgezeichnet, was hilfreich sein kann.
Lokales Testen
Wenn Sie Tests gegen einen Server ausführen möchten, der nicht über das Internet zugänglich ist (wie auf localhost
), dann müssen Sie Local Testing verwenden.
Es liegt außerhalb des Umfangs von WebdriverIO, dies zu unterstützen, daher müssen Sie es selbst starten.
Wenn Sie Local verwenden, sollten Sie browserstack.local
in Ihren Capabilities auf true
setzen.
Wenn Sie den WDIO-Testrunner verwenden, laden Sie den @wdio/browserstack-service
herunter und konfigurieren Sie ihn in Ihrer wdio.conf.js
. Er hilft dabei, BrowserStack zum Laufen zu bringen und bietet zusätzliche Funktionen, die Ihre Tests besser in den BrowserStack-Dienst integrieren.
Mit Travis CI
Wenn Sie Local Testing in Travis hinzufügen möchten, müssen Sie es selbst starten.
Das folgende Skript lädt es herunter und startet es im Hintergrund. Sie sollten dies in Travis ausführen, bevor Sie die Tests starten.
wget https://www.browserstack.com/browserstack-local/BrowserStackLocal-linux-x64.zip
unzip BrowserStackLocal-linux-x64.zip
./BrowserStackLocal -v -onlyAutomate -forcelocal $BROWSERSTACK_ACCESS_KEY &
sleep 3
Außerdem möchten Sie vielleicht build
auf die Travis-Build-Nummer setzen.
Beispiel für capabilities
:
browserName: 'chrome',
project: 'myApp',
version: '44.0',
build: `myApp #${process.env.TRAVIS_BUILD_NUMBER}.${process.env.TRAVIS_JOB_NUMBER}`,
'browserstack.local': 'true',
'browserstack.debug': 'true'
TestingBot
Die einzige Voraussetzung ist, dass Sie user
und key
in Ihrer Konfiguration (entweder exportiert von wdio.conf.js
oder übergeben an webdriverio.remote(...)
) auf Ihren TestingBot-Benutzernamen und geheimen Schlüssel setzen.
Sie können auch jede optionale unterstützte Capability als Schlüssel/Wert in den Capabilities für jeden Browser übergeben.
Lokales Testen
Wenn Sie Tests gegen einen Server ausführen möchten, der nicht über das Internet zugänglich ist (wie auf localhost
), dann müssen Sie Local Testing verwenden. TestingBot bietet einen Java-basierten Tunnel, mit dem Sie Websites testen können, die nicht über das Internet zugänglich sind.
Ihre Tunnel-Support-Seite enthält die notwendigen Informationen, um dies zum Laufen zu bringen.
Wenn Sie den WDIO-Testrunner verwenden, laden Sie den @wdio/testingbot-service
herunter und konfigurieren Sie ihn in Ihrer wdio.conf.js
. Er hilft dabei, TestingBot zum Laufen zu bringen und bietet zusätzliche Funktionen, die Ihre Tests besser in den TestingBot-Dienst integrieren.
LambdaTest
Die LambdaTest-Integration ist ebenfalls integriert.
Die einzige Voraussetzung ist, dass Sie user
und key
in Ihrer Konfiguration (entweder exportiert von wdio.conf.js
oder übergeben an webdriverio.remote(...)
) auf Ihren LambdaTest-Kontobenutzernamen und Zugriffsschlüssel setzen.
Sie können auch jede optionale unterstützte Capability als Schlüssel/Wert in den Capabilities für jeden Browser übergeben. Wenn Sie visual
auf true
setzen, wird ein Screencast der Sitzung aufgezeichnet, was hilfreich sein kann.
Tunnel für lokales Testen
Wenn Sie Tests gegen einen Server ausführen möchten, der nicht über das Internet zugänglich ist (wie auf localhost
), dann müssen Sie Local Testing verwenden.
Es liegt außerhalb des Umfangs von WebdriverIO, dies zu unterstützen, daher müssen Sie es selbst starten.
Wenn Sie Local verwenden, sollten Sie tunnel
in Ihren Capabilities auf true
setzen.
Wenn Sie den WDIO-Testrunner verwenden, laden Sie den wdio-lambdatest-service
herunter und konfigurieren Sie ihn in Ihrer wdio.conf.js
. Er hilft dabei, LambdaTest zum Laufen zu bringen und bietet zusätzliche Funktionen, die Ihre Tests besser in den LambdaTest-Dienst integrieren.
Mit Travis CI
Wenn Sie Local Testing in Travis hinzufügen möchten, müssen Sie es selbst starten.
Das folgende Skript lädt es herunter und startet es im Hintergrund. Sie sollten dies in Travis ausführen, bevor Sie die Tests starten.
wget http://downloads.lambdatest.com/tunnel/linux/64bit/LT_Linux.zip
unzip LT_Linux.zip
./LT -user $LT_USERNAME -key $LT_ACCESS_KEY -cui &
sleep 3
Außerdem möchten Sie vielleicht build
auf die Travis-Build-Nummer setzen.
Beispiel für capabilities
:
platform: 'Windows 10',
browserName: 'chrome',
version: '79.0',
build: `myApp #${process.env.TRAVIS_BUILD_NUMBER}.${process.env.TRAVIS_JOB_NUMBER}`,
'tunnel': 'true',
'visual': 'true'
Perfecto
Bei der Verwendung von wdio mit Perfecto
müssen Sie für jeden Benutzer ein Sicherheitstoken erstellen und dieses in die Capabilities-Struktur einfügen (zusätzlich zu anderen Capabilities), wie folgt:
export const config = {
capabilities: [{
// ...
securityToken: "your security token"
}],
Darüber hinaus müssen Sie die Cloud-Konfiguration hinzufügen, wie folgt:
hostname: "your_cloud_name.perfectomobile.com",
path: "/nexperience/perfectomobile/wd/hub",
port: 443,
protocol: "https",