Führen Sie einen browserübergreifenden UI-Test mit Cucumber und Selenoid in Gitlab CI mit Allure-Bericht aus

Cucumber ist eine Testinfrastruktur, mit der Sie die Lücke zwischen Softwareentwicklern und Geschäftsmanagern schließen können. Tests werden in einer einfachen verhaltensgesteuerten Entwicklungssprache (BDD) im Stil von Given, When, Then (Bedingungen, Betrieb, Ergebnis) geschrieben, die für jeden Benutzer verständlich ist. Steuertests werden dann in Funktionsdateien geschrieben, die ein oder mehrere Testskripten umfassen. Cucumber interpretiert Tests in der angegebenen Programmiersprache und verwaltet die Tests mit Selenium im Browser.


Selenoid ist eine alternative Selenium Server-Lösung, obwohl das Wesentliche dasselbe ist - die Organisation der Treiber.


In diesem Beitrag wird ein einfacher Browsertest mit Cucumber und Selenoid in Gitlab CI mit einem Allure-Bericht am Ende gestartet.


Vorbereitung


Docker muss auf Ihrem Betriebssystem installiert sein und ausgeführt werden.


Installieren Sie den Selenoid


Wenn Sie ein Redhat-basiertes Betriebssystem haben, können Sie den Konfigurationsmanager mit meinem Repository installieren.


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

Wenn Sie kein Redhat-basiertes Betriebssystem haben, können Sie die Configuration Manager- Binärdatei herunterladen und verwenden.


Ausführen von Selenoid mit Configuration Manager und Erstellen von browsers.json


Wenn Sie keinen direkten Zugriff auf das Internet und die Docker-Bilder haben, laden Sie diese über die Registrierung herunter.


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

Wenn Sie direkten Zugang zum Internet haben.


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

Der --force überschreibt die Datei --force .


Die resultierende browsers.json-Datei zum Testen von Chrome und Firefox. Beachten Sie, dass der Pfad für Chrome und Firefox unterschiedlich ist.


 { "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" } } } } 

Browser.json ändern


Wenn Sie die Browserversion ändern, können Sie die Datei browsers.json ändern und selenoid neu laden.


Wenn Sie jedoch den --force , wird --force mit neueren Browserversionen überschrieben.


Überprüfen Sie, ob der Docker-Container gestartet wurde und die Bilder heruntergeladen wurden.


 docker ps docker images 


Ausführen der Selenoid-Benutzeroberfläche mit dem Konfigurationsmanager


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

Oder


 aerokube-cm selenoid-ui start 

Überprüfen Sie, ob der Docker-Container gestartet wurde und die Bilder heruntergeladen wurden.


 docker ps docker images 


Wir gehen zu Selenoid-UI bei IP-wo-Sie-ran-Selenoid-und-Selenoid-UI: 8080


Du solltest 2 CONNECTED-Lichter haben, die grün und in Firefox und Chrom geschrieben sind.



In Fähigkeiten sehen wir verfügbare Browser.



Demo-Test


Laden Sie https://github.com/andewBr/cucumber_selenium_test herunter



oder an eine andere Adresse, an der Sie mit der Auswahl begonnen haben.


Fügen Sie in der Datei WebdriverBeanConfig.java die Funktion zum Ausführen von Chrome hinzu. Wenn Sie einen Proxyserver verwenden, fügen Sie wie im Screenshot Linien zum Proxy hinzu.



In jeder Java-Datei können Sie die Videoaufzeichnung, die Remote-Anzeige oder die Verwaltung über VNC und die Protokollierung in einer Datei aktivieren oder deaktivieren. Um die Option zu deaktivieren, müssen Sie am Zeilenanfang zwei Schrägstriche einfügen.




Tests ausführen


Führen Sie im Demo-Test-Verzeichnis die folgenden Tests aus:


Wenn Sie Einstellungen festlegen müssen und Maven-Proxies verwenden (Nexus, Artifactory)


 mvn -s settings.xml clean test 

Wenn wir mit direktem Zugang zum Internet und ohne Einstellungen laufen


 mvn clean test 

Geschwindigkeit


Die Gesamtzeit für den Start eines Tests beträgt weniger als 1 Minute.


Ausführen von Tests in Gitlab CI


Um Selenoid und Selenoid-UI nicht jedes Mal zu starten, wenn Sie Tests ausführen, können Sie Selenoid und Selenoid-UI einmal ausführen, wenn Sie Gitlab Runner mit Ansible, Puppet, Chef oder anderen Tools starten.


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} 

Nach der Zeile wird echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/"


Eine URL wird angezeigt, unter der Sie den Allure-Bericht anzeigen können.


Um den Allure-Bericht anzuzeigen, muss Nginx mit dieser Konfiguration auf gitlab runner installiert sein:


 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 { } } 

Screenshot von Allure Report


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


All Articles