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

screenshot

Un noeud

Dans un autre terminal, tapez la commande java suivante:

java -jar selenium-server-standalone-3.141.5.jar -role node

screenshot

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 :


  1. un Mac en l’occurence ↩︎