Exécutez un test d'interface utilisateur multi-navigateur avec Cucumber et Selenoid dans Gitlab CI avec rapport Allure

Cucumber est une infrastructure de test qui aide à combler le fossé entre les développeurs de logiciels et les chefs d'entreprise. Les tests sont écrits dans un langage de développement basé sur le comportement (BDD) simple dans le style de Given, When, Then (conditions, fonctionnement, résultat), compréhensible par tout utilisateur. Les tests de contrÎle sont ensuite écrits dans des fichiers de fonction qui couvrent un ou plusieurs scripts de test. Cucumber interprÚte les tests dans le langage de programmation spécifié et utilise Selenium pour gérer les tests dans le navigateur.


Selenoid est une solution alternative de Selenium Server, bien que l'essence soit la mĂȘme - l'organisation des pilotes.


Cet article lancera un test de navigateur simple en utilisant Cucumber et Selenoid dans Gitlab CI avec un rapport Allure Ă  la fin.


La préparation


Docker doit ĂȘtre installĂ© et exĂ©cutĂ© sur votre systĂšme d'exploitation.


Installer Selenoid


Si vous avez un systÚme d'exploitation basé sur Redhat, vous pouvez utiliser mon référentiel pour installer le gestionnaire de configuration .


yum -y install yum-plugin-copr yum copr enable antonpatsev/aerokube-cm-rpm yum -y install aerokube-cm 

Si vous ne disposez pas d'un systÚme d'exploitation basé sur Redhat, vous pouvez télécharger et utiliser le fichier binaire du gestionnaire de configuration .


Exécution de Selenoid à l'aide du gestionnaire de configuration et de la construction de Browsers.json


Si vous ne disposez pas d'un accÚs direct à Internet et aux images de docker que vous téléchargez via le registre.


 aerokube-cm selenoid start --force --browsers "firefox:70.0;firefox:71.0;chrome:78.0;chrome:79.0" --registry -docker-registry 

Si vous avez un accĂšs direct Ă  Internet.


 aerokube-cm selenoid start --force --browsers "firefox:70.0;firefox:71.0;chrome:78.0;chrome:79.0" 

Le --force Ă©crase le fichier Browsers.json.


Le fichier Browsers.json résultant pour tester Chrome et Firefox. Notez que le chemin est différent pour Chrome et Firefox.


 { "chrome": { "default": "79.0", "versions": { "78.0": { "image": "docker-registry/selenoid/chrome:78.0", "port": "4444", "path": "/" }, "79.0": { "image": "docker-registry/selenoid/chrome:79.0", "port": "4444", "path": "/" } } }, "firefox": { "default": "71.0", "versions": { "70.0": { "image": "docker-registry/selenoid/firefox:70.0", "port": "4444", "path": "/wd/hub" }, "71.0": { "image": "docker-registry/selenoid/firefox:71.0", "port": "4444", "path": "/wd/hub" } } } } 

Changement de Browsers.json


Lorsque vous changez de version de navigateur, vous pouvez modifier le fichier Browsers.json et recharger selenoid.


Mais si vous utilisez le --force , Browsers.json remplacera les versions plus récentes des navigateurs.


Vérifiez que le conteneur Docker a démarré et que les images ont été téléchargées.


 docker ps docker images 


Exécution de l'interface utilisateur Selenoid à l'aide du gestionnaire de configuration


 aerokube-cm selenoid-ui start --registry https://docker-registry 

Ou


 aerokube-cm selenoid-ui start 

Vérifiez que le conteneur Docker a démarré et que les images ont été téléchargées.


 docker ps docker images 


Nous allons Ă  selenoid-ui sur ip-where-you-ran-selenoid-and-selenoid-ui: 8080


Vous devriez avoir 2 voyants CONNECTED verts et Ă©crits en Firefox et Chrome.



Dans les capacités, nous voyons les navigateurs disponibles.



Test de démonstration


Téléchargez https://github.com/andewBr/cucumber_selenium_test



ou Ă  une autre adresse oĂč vous avez commencĂ© selenoid.


Dans le fichier WebdriverBeanConfig.java, ajoutez la capacité à exécuter Chrome. Si vous utilisez un serveur proxy, ajoutez des lignes sur le proxy comme dans la capture d'écran.



Dans chaque fichier java, vous pouvez activer ou désactiver l'enregistrement vidéo, la visualisation ou la gestion à distance via VNC et la connexion à un fichier. Pour désactiver l'option, vous devez ajouter 2 barres obliques au début de la ligne.




Exécution de tests


Dans le répertoire demo-tests, exécutez les tests:


Si vous devez spécifier des paramÚtres et que vous utilisez des proxys maven (Nexus, Artifactory)


 mvn -s settings.xml clean test 

Si nous courons avec un accĂšs direct Ă  Internet et sans aucun paramĂštre


 mvn clean test 

La vitesse


Le temps total nécessaire pour démarrer 1 test prend moins d'une minute.


Exécution de tests dans Gitlab CI


Afin de ne pas démarrer Selenoid et Selenoid-UI chaque fois que vous exécutez des tests, vous pouvez exécuter Selenoid et Selenoid-UI une fois lorsque vous démarrez Gitlab Runner à l'aide d'Ansible, Puppet, Chef ou d'autres outils.


Final .gitlab-ci.yml


 --- variables: MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=/home/gitlab-runner/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true" before_script: - export PATH="/opt/rh/rh-maven33/root/usr/bin:$PATH" build: stage: build script: - aerokube-cm selenoid start --force --browsers "firefox:70;firefox:71;chrome:78;chrome:79" --registry docker-registry - aerokube-cm selenoid-ui start --registry docker-registry - cat ~/.aerokube/selenoid/browsers.json - set +e - mvn -s maven_settings.xml clean install -Dmaven.test.skip=true - mvn -s maven_settings.xml clean test || EXIT_CODE=$? - mvn -s maven_settings.xml allure:aggregate; - export PATH_WITHOUT_HOME=$(pwd | sed -e "s/\/home\/gitlab-runner\/builds//g") - echo '***********************************************************************' - echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/" - echo '***********************************************************************' - set -e - exit ${EXIT_CODE} 

AprĂšs l' echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/" la ligne echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/"


Une URL apparaĂźt oĂč vous pouvez afficher le rapport Allure.


Pour afficher le rapport Allure, vous devez avoir installé nginx sur gitlab runner avec cette configuration:


 server { listen 9090; listen [::]:9090; server_name _; root /home/gitlab-runner/builds; location / { autoindex on; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } 

Capture d'Ă©cran du rapport Allure


Source: https://habr.com/ru/post/fr480940/


All Articles