Jalankan uji UI lintas-browser dengan Mentimun dan Selenoid di Gitlab CI dengan laporan Allure

Mentimun adalah infrastruktur pengujian yang membantu menjembatani kesenjangan antara pengembang perangkat lunak dan manajer bisnis. Tes ditulis dalam bahasa pengembangan perilaku sederhana (BDD) dalam gaya Diberikan, Kapan, Lalu (kondisi, operasi, hasil), yang dapat dimengerti oleh pengguna mana pun. Tes kontrol kemudian ditulis ke file fungsi yang menjangkau satu atau lebih skrip pengujian. Mentimun menginterpretasikan tes dalam bahasa pemrograman yang ditentukan dan menggunakan Selenium untuk mengelola tes di browser.


Selenoid adalah solusi Selenium Server alternatif, meskipun intinya sama - organisasi driver.


Posting ini akan meluncurkan tes browser sederhana menggunakan Mentimun dan Selenoid di Gitlab CI dengan laporan Allure di akhir.


Persiapan


Docker harus diinstal dan dijalankan pada sistem operasi Anda.


Instal Selenoid


Jika Anda memiliki sistem operasi berbasis Redhat, Anda dapat menggunakan repositori saya untuk menginstal manajer Konfigurasi .


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

Jika Anda tidak memiliki sistem operasi berbasis Redhat, maka Anda dapat mengunduh dan menggunakan biner manajer Konfigurasi .


Menjalankan Selenoid menggunakan Configuration manager dan building browsers.json


Jika Anda tidak memiliki akses langsung ke Internet dan gambar buruh pelabuhan yang Anda unduh melalui registri.


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

Jika Anda memiliki akses langsung ke Internet.


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

--force menimpa file browsers.json.


File browsers.json yang dihasilkan untuk menguji Chrome dan Firefox. Perhatikan bahwa jalur berbeda untuk Chrome dan 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" } } } } 

Mengubah browsers.json


Saat mengubah versi peramban, Anda dapat mengubah file browser.json dan memuat ulang selenoid.


Tetapi jika Anda menggunakan --force , maka browsers.json akan menimpa dengan versi browser yang lebih baru.


Pastikan wadah buruh pelabuhan sudah mulai dan gambar sudah diunduh.


 docker ps docker images 


Menjalankan UI Selenoid menggunakan Manajer konfigurasi


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

Atau


 aerokube-cm selenoid-ui start 

Pastikan wadah buruh pelabuhan sudah mulai dan gambar sudah diunduh.


 docker ps docker images 


Pergi ke selenoid-ui di ip-where-you-ran-selenoid-and-selenoid-ui: 8080


Anda harus memiliki 2 lampu TERHUBUNG hijau dan ditulis dalam firefox dan chrome.



Dalam kemampuan kami melihat browser yang tersedia.



Tes demo


Unduh https://github.com/andewBr/cucumber_selenium_test



atau ke alamat lain tempat Anda memulai selenoid.


Dalam file WebdriverBeanConfig.java, tambahkan Kemampuan untuk menjalankan chrome. Jika Anda menggunakan server proxy, tambahkan baris tentang proxy seperti pada tangkapan layar.



Di setiap file java, Anda dapat mengaktifkan atau menonaktifkan rekaman video, melihat jarak jauh atau manajemen melalui VNC, dan masuk ke file. Untuk menonaktifkan opsi, Anda perlu menambahkan 2 garis miring di awal baris.




Menjalankan tes


Di direktori demo-test, jalankan tes:


Jika Anda perlu menentukan pengaturan dan Anda menggunakan proxy pakar (Nexus, Artifactory)


 mvn -s settings.xml clean test 

Jika kita jalankan dengan akses langsung ke Internet dan tanpa pengaturan apa pun


 mvn clean test 

Kecepatan


Total waktu yang dibutuhkan untuk memulai 1 tes membutuhkan waktu kurang dari 1 menit.


Menjalankan tes di Gitlab CI


Agar tidak memulai Selenoid dan Selenoid-UI setiap kali Anda menjalankan tes, Anda dapat menjalankan Selenoid dan Selenoid-UI satu kali ketika Anda memulai Gitlab Runner menggunakan Ansible, Wayang, Koki, atau alat lainnya.


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} 

Setelah baris echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/"


Sebuah URL muncul di mana Anda dapat melihat laporan Allure.


Untuk menampilkan laporan Allure, Anda harus menginstal nginx di gitlab runner dengan konfigurasi ini:


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

Cuplikan layar Laporan Allure


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


All Articles