Modüllerden Oluşan Bir Projede Raporlama Nasıl Olur? GitLab Pages ile Allure Report.

Gizem Saruhan
4 min readOct 7, 2021

--

https://unsplash.com/photos/ZV_64LdGoao

Test otomasyonunda çalışabilir testi yazmış olmak çoğu zaman yeterli görülüyor ve “raporlama” adımı genelde projelere entegre edilmiyor. Oysa bir otomasyon testinin en önemli adımı test sonuçlarını görünür halde sunmaktır.

Daha önce Allure ile test raporlama konusunun jenkins entegrasyonu hakkında bir yazı yazmıştım. Bugün ise bu yazıda Ci/Cd süreçlerini GitLab üzerinde kurmuş herkese çok faydalı olacağına inandığım Allure’un GitLab Pages ile kullanımından bahsetmek istiyorum. Projeniz tek bir modülden oluşuyorsa benim de referans aldığım yazıdan yardım alabilirsiniz. Fakat birden fazla modülden oluşan bir projeniz varsa, işler biraz daha karmaşıklaşıyor. Benim yaşadığım karmaşıklığın sonundaki deneyimlerimi aktardığım yazıyı okumaya devam edebilirsiniz.

Konuya öncelikle modüllerden oluşan bir projeyi görselleştirerek başlamakta fayda var. Aşağıdaki ekran görüntüsünde grocery-cbes, grocery-search-api ve grocery-suggestion-api modüllerini içeren bir proje görüyorsunuz:

modüllerden oluşan bir proje örneği

1.Bu örnek proje görseli üzerinden ilerleyecek olursak ilk önce rapor çıkarmasını beklediğimiz her modülün içine .allure package’ını ekleyerek işe başlayabiliriz.
Ben her üç modülün de raporunu elde etmek istediğim için üçüne de ilgili package’ı ekledim.

2. Allure package’ını ekledikten sonra ikinci adımda pom.xml’e gerekli dependency ve pluginleri ekliyoruz.
Bu kısımda önemli olan eklemeleri her modülün kendi içindeki ilgili pom.xml’e değil de, ana pom.xml’e eklemek.

dependency:

<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-junit4</artifactId>
<version>2.13.9</version>
<scope>test</scope>
</dependency>

pluginler:

<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>2.9</version>
<configuration>
<reportVersion>2.3.1</reportVersion>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<testFailureIgnore>false</testFailureIgnore>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/1.8.10/aspectjweaver-1.8.10.jar"
</argLine>
<properties>
<property>
<name>listener</name>
<value>io.qameta.allure.junit4.AllureJunit4</value>
</property>
</properties>
</configuration>
</plugin>

3. adımda Dockerfile’da testleri çalıştıran satıra allure report için mvn komutlarını ekliyoruz.

ENTRYPOINT mvn test -DskipTests=false && mv allure-results target && mvn allure:report -Dcucumber.options="--tags not @ignore"

ve artık ihtiyacımız olan her şeye sahibiz, sonunda pipeline adımlarını oluşturma ve raporları görünür yapıp, slack uyarısı gönderme kısımlarına geçebiliriz.

4. ve en önemli adımda tüm işlemleri .gitlab-ci.yml içinde yapacağız.

Pipeline’a eklemek istediğimiz test koşma ve raporlama adımları olduğu için ilk olarak Stages: altına bu iki yeni adımı tanımlamalıyız.

Artık Build, Test Run ve Report adımları olan bir pipeline’ımız var!

gitlab pipeline görüntüsü

Projede üç modül olduğu için üç ayrı Run Test ve Report adımı eklemeliyiz.

grocery suggestion modülü için test run adımı
grocery suggestion modülü için report adımı

Run Test adımında hangi modüle test koşacağını ayırt edebilmesi için o modüle ait test image name vermek gerekiyor. Daha sonra Report adımında ise test koşmadan raporunu çıkaramayacağı için, test run adımına bir dependencies ekliyoruz.

Artifacts kısmında ise bu raporun Gitlab’te artifacts altına ne zaman oluşacağını ve ne zaman expire olacağını belirtebiliyoruz.

Gitlab pipeline’ında Report adımının içine girdiğinizde sağ üst köşede Job artifacts altında raporunuzu bulabilirsiniz. Browse dedikten sonra karşınıza yeni bir sayfa açılacak, o sayfada index.html’e tıklarsanız raporunuzu görebilirsiniz!

örnek bir allure rapor çıktısı

5. ve son adımda slack bildirimi için bir dosya eklememiz gerekiyor.

Projeye .report package’ı ekleyip içine slack.sh dosyası ekliyoruz. Slack.sh komutları ise şu şekilde olmalı:

#!/bin/sh

PROJECT_NAME=$1
JOB_ID=$2
PAGES_URL=$3

find=".com"
replaceWith=".com\/-"
newUrl=$(echo "$PAGES_URL" | sed "s/$find/$replaceWith/")
newUrl="$newUrl/-/jobs/$JOB_ID/artifacts/public/allure-maven-plugin/index.html"

message="$PROJECT_NAME results $newUrl"
curl --location --request POST 'https://hooks.slack.com/services/yourprojecthook' \
--header 'Content-Type: application/json' \
--data-raw "{ \"text\": \"$message\", \"channel\": \"your-slack-channel-name\"}"
slack bildirimi

Hatırlatmakta fayda var;

gitignore altına allure-results/ eklemeyi unutmayın! :)

İmplementasyonu oldukça kolay ve işlevsel bu raporlama aynı zamanda geliştirilebilecek birçok özelliği de barındırıyor. Allure raporunuza çok fazla özellik ekleyebiliyor, caselerinizi kategorilendirebiliyor ve her bir kategoriye farklı bir renk tanımlayabiliyorsunuz.

Umarım hoşunuza giden bir yazı olmuştur. Yorumlarınızı bekliyorum. Bu arada yazıyı beğendiyseniz alkış ile beni haberdar edebilirsiniz.

Önceki yazım ->
Sonraki yazım ->

--

--