Karma sur Selenium v3
Autant des informations pour faire tourner des tests Karma sur un environnement Selenium version 2, j’en ai trouvées, autant pour la version Selenium v3 ce fut plus compliqué. Je résume ici la façon dont j’ai procédée.
Préparation du serveur Selenium
Pour cette exemple, je vais faire tourner la Selenium Grid et mes tests sur une machine de dev1, mais évidemment en pratique Selenium est sur le réseau déployée sur plusieurs machines, cet article n’a pas pour objet l’explication du fonctionnement de Selenium, je vous invite à aller sur le site officiel du projet pour cela et particulièrement sur leur wiki.
Requis:
- une jvm minimum java 8 pour le serveur
- un node.js (ici j’utilise un version node 8) pour le client Karma
Telechargez le jar du serveur
Il vous faudra récuperer le jar du serveur, selenium-server-standalone-<version>.jar sur leur site de release version 3.141.5 minimum si vous prenez une version plus ancienne elle ne fonctionnera pas avec les browsers dernières générations. Le serveur principal est le hub, et on ne lancera qu’un noeud pour notre exemple.
Lancement du serveur
Le hub
Dans votre terminal, lancez la commande:
java -jar selenium-server-standalone-3.141.5.jar -role hub
Un noeud
Dans un autre terminal, tapez la commande java suivante:
java -jar selenium-server-standalone-3.141.5.jar -role node
Configuration karma
Quelques dépendences supplémentaires sont nécessaires:
npm install --save-dev karma-webdriver-launcher@1.0 selenium-webdriver@3.0
On aura aussi besoin du plugin Karma : karma-selenium-webdriver-launcher
mais la version 0.0.4 disponible sur la registry centrale de npm ne convient pas pour Selenium v3.
J’utilise un fork qui fonctionne très bien:
npm install --save-dev PSpSynedra/karma-selenium-webdriver-launcher
On met à jour la configuration karma, en ajoutant un customLauncher
. Pour lancer une instance firefox, on insérera donc:
customLaunchers : {
'selenium_firefox': {
base: 'WebDriver',
config: {
hostname: '192.168.0.41',
port:4444,
path: "wd/hub"
},
browserName: 'firefox',
platform: 'mac',
name: 'Karma',
pseudoActivityInterval: 30000
}
}
Voilà vous devriez constater que vos tests Karma sont lancés sur votre serveur selenium, j’ai fait tourner cet exemple sur le projet karma-jasmine-bridge, du coup en séquence ca donne cela:
git clone https://github.com/lroche/karma-jasmine-bridge
npm install --save-dev karma-webdriver-launcher@1.0 selenium-webdriver@3.0
npm install --save-dev PSpSynedra/karma-selenium-webdriver-launcher
karma start --browsers selenium_firefox
Et pour ceux que ca intéresse, il existe aussi des PaaS basés sur Selenium très efficaces, et si vous avez un projet opensource, vous pourrez certainement avoir accès au maximum des fonctionnalités :
- [BrowserStack] (https://www.browserstack.com/)
- [SauceLabs] (https://saucelabs.com/)
- [Cross Browser Testing] (https://crossbrowsertesting.com/)
-
un Mac en l’occurence ↩︎