Utilisation des services cloud
L'utilisation de services à la demande comme Sauce Labs, Browserstack, TestingBot, LambdaTest ou Perfecto avec WebdriverIO est assez simple. Tout ce que vous avez à faire est de définir l'user
et la key
de votre service dans vos options.
Vous pouvez également paramétrer votre test en définissant des capacités spécifiques au cloud comme build
. Si vous souhaitez exécuter des services cloud uniquement dans Travis, vous pouvez utiliser la variable d'environnement CI
pour vérifier si vous êtes dans Travis et modifier la configuration en conséquence.
// 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
Vous pouvez configurer vos tests pour qu'ils s'exécutent à distance dans Sauce Labs.
La seule exigence est de définir l'user
et la key
dans votre configuration (soit exportée par wdio.conf.js
soit passée dans webdriverio.remote(...)
) avec votre nom d'utilisateur Sauce Labs et votre clé d'accès.
Vous pouvez également passer n'importe quelle option de configuration de test optionnelle sous forme de clé/valeur dans les capacités pour n'importe quel navigateur.
Sauce Connect
Si vous souhaitez exécuter des tests sur un serveur qui n'est pas accessible par Internet (comme sur localhost
), vous devez utiliser Sauce Connect.
Il n'est pas du ressort de WebdriverIO de prendre cela en charge, vous devrez donc le démarrer vous-même.
Si vous utilisez le testrunner WDIO, téléchargez et configurez le @wdio/sauce-service
dans votre wdio.conf.js
. Il aide à faire fonctionner Sauce Connect et offre des fonctionnalités supplémentaires qui intègrent mieux vos tests au service Sauce.
Avec Travis CI
Travis CI, cependant, prend en charge le démarrage de Sauce Connect avant chaque test, donc suivre leurs instructions est une option.
Si vous le faites, vous devez définir l'option de configuration de test tunnel-identifier
dans les capabilities
de chaque navigateur. Travis définit cela par défaut sur la variable d'environnement TRAVIS_JOB_NUMBER
.
De plus, si vous souhaitez que Sauce Labs regroupe vos tests par numéro de build, vous pouvez définir le build
sur TRAVIS_BUILD_NUMBER
.
Enfin, si vous définissez name
, cela change le nom de ce test dans Sauce Labs pour cette build. Si vous utilisez le testrunner WDIO combiné avec le @wdio/sauce-service
, WebdriverIO définit automatiquement un nom approprié pour le test.
Exemple de capabilities
:
browserName: 'chrome',
version: '27.0',
platform: 'XP',
'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER,
name: 'integration',
build: process.env.TRAVIS_BUILD_NUMBER
Timeouts
Comme vous exécutez vos tests à distance, il peut être nécessaire d'augmenter certains délais d'attente.
Vous pouvez modifier le délai d'inactivité en passant idle-timeout
comme option de configuration de test. Cela contrôle combien de temps Sauce attendra entre les commandes avant de fermer la connexion.
BrowserStack
WebdriverIO dispose également d'une intégration Browserstack intégrée.
La seule exigence est de définir l'user
et la key
dans votre configuration (soit exportée par wdio.conf.js
soit passée dans webdriverio.remote(...)
) avec votre nom d'utilisateur et votre clé d'accès Browserstack.
Vous pouvez également passer n'importe quelle capacité prise en charge optionnelle sous forme de clé/valeur dans les capacités pour n'importe quel navigateur. Si vous définissez browserstack.debug
sur true
, il enregistrera une capture vidéo de la session, ce qui pourrait être utile.
Tests locaux
Si vous souhaitez exécuter des tests sur un serveur qui n'est pas accessible par Internet (comme sur localhost
), vous devez utiliser Local Testing.
Il n'est pas du ressort de WebdriverIO de prendre cela en charge, vous devez donc le démarrer vous-même.
Si vous utilisez local, vous devez définir browserstack.local
sur true
dans vos capacités.
Si vous utilisez le testrunner WDIO, téléchargez et configurez le @wdio/browserstack-service
dans votre wdio.conf.js
. Il aide à faire fonctionner BrowserStack et offre des fonctionnalités supplémentaires qui intègrent mieux vos tests au service BrowserStack.
Avec Travis CI
Si vous souhaitez ajouter des tests locaux dans Travis, vous devez les démarrer vous-même.
Le script suivant téléchargera et démarrera en arrière-plan. Vous devriez l'exécuter dans Travis avant de commencer les tests.
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
De plus, vous pourriez souhaiter définir le build
sur le numéro de build Travis.
Exemple de 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
La seule exigence est de définir l'user
et la key
dans votre configuration (soit exportée par wdio.conf.js
soit passée dans webdriverio.remote(...)
) avec votre nom d'utilisateur et votre clé secrète TestingBot.
Vous pouvez également passer n'importe quelle capacité prise en charge optionnelle sous forme de clé/valeur dans les capacités pour n'importe quel navigateur.
Tests locaux
Si vous souhaitez exécuter des tests sur un serveur qui n'est pas accessible par Internet (comme sur localhost
), vous devez utiliser Local Testing. TestingBot fournit un tunnel basé sur Java pour vous permettre de tester des sites Web non accessibles depuis Internet.
Leur page de support de tunnel contient les informations nécessaires pour le mettre en place.
Si vous utilisez le testrunner WDIO, téléchargez et configurez le @wdio/testingbot-service
dans votre wdio.conf.js
. Il aide à faire fonctionner TestingBot et offre des fonctionnalités supplémentaires qui intègrent mieux vos tests au service TestingBot.
LambdaTest
L'intégration LambdaTest est également intégrée.
La seule exigence est de définir l'user
et la key
dans votre configuration (soit exportée par wdio.conf.js
soit passée dans webdriverio.remote(...)
) avec votre nom d'utilisateur et votre clé d'accès LambdaTest.
Vous pouvez également passer n'importe quelle capacité prise en charge optionnelle sous forme de clé/valeur dans les capacités pour n'importe quel navigateur. Si vous définissez visual
sur true
, il enregistrera une capture vidéo de la session, ce qui pourrait être utile.
Tunnel pour les tests locaux
Si vous souhaitez exécuter des tests sur un serveur qui n'est pas accessible par Internet (comme sur localhost
), vous devez utiliser Local Testing.
Il n'est pas du ressort de WebdriverIO de prendre cela en charge, vous devez donc le démarrer vous-même.
Si vous utilisez local, vous devez définir tunnel
sur true
dans vos capacités.
Si vous utilisez le testrunner WDIO, téléchargez et configurez le wdio-lambdatest-service
dans votre wdio.conf.js
. Il aide à faire fonctionner LambdaTest et offre des fonctionnalités supplémentaires qui intègrent mieux vos tests au service LambdaTest.
Avec Travis CI
Si vous souhaitez ajouter des tests locaux dans Travis, vous devez les démarrer vous-même.
Le script suivant téléchargera et démarrera en arrière-plan. Vous devriez l'exécuter dans Travis avant de commencer les tests.
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
De plus, vous pourriez souhaiter définir le build
sur le numéro de build Travis.
Exemple de 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
Lorsque vous utilisez wdio avec Perfecto
, vous devez créer un jeton de sécurité pour chaque utilisateur et l'ajouter dans la structure des capacités (en plus d'autres capacités), comme suit :
export const config = {
capabilities: [{
// ...
securityToken: "your security token"
}],
De plus, vous devez ajouter la configuration du cloud, comme suit :
hostname: "your_cloud_name.perfectomobile.com",
path: "/nexperience/perfectomobile/wd/hub",
port: 443,
protocol: "https",