Bu Nasıl Challenge? Selenium Projesini Gitlab Pipeline’ına Bağlamak.

Gizem Saruhan
2 min readAug 21, 2021

--

https://unsplash.com/photos/QHuauUyXRt8?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink

Merhaba!

Size bir hikaye anlatmak istiyorum. Hikaye şöyle başlıyor, bir frontend projesine otomasyon testi yazmam gerekiyordu. Ekipteki qa engineer arkadaşlar toplanıp iki farklı projenin POC’sini yaptık. Bir tanesi robot framework ile geliştirilen ve python ile yazılan bir projeyken, benim önerdiğim java ile yazılmış page object model’li bir selenium projesiydi. Projeler üzerinde tartıştıktan sonra biz ekipte selenium projesini kullanmaya karar verdik. Aslında selenium’un entegrasyon konusunda bize sıkıntı çıkaracağını tahmin ediyorduk fakat ben yine de daha önceki selenium-java tecrübelerime güveniyordum.

Karar verdikten sonra selenium projesini geliştirip, testleri olgunlaştırdım. Daha sonra aslında projenin ilk etabında düşünmem gereken adım maalesef son raddede aklıma geldi: Testleri pipeline’a ekleme. İşte selenium’un tüm şovunu yapacağı yer gelmişti.

Ekip olarak Gitlab kullanıyoruz dolayısıyla pipeline’larımız da Gitlab üzerinde. Yani benim Gitlab’te frontend projesinin pipeline’ına bir test adımı eklemem ve testlerimi çalıştırmam gerekiyordu. Fakat bir türlü başarılı olamıyordum. Farklı farklı hataları fixledikten sonra çözemediğim bir sorunla karşılaşmıştım. Her şey olması gerektiği gibiydi, lokalimde testler çalışıyordu, pipeline’da test adımı vardı ve aslında çalışırken docker image’ı da çekiyordu.. Sorun neydi bir türlü anlamıyordum.

Çok fazla araştırma yaptım ama gerçekten bir tane bile Gitlab’de Selenium testleri çalıştıran bir örnek bulamadım. İlk durup düşünmem gereken nokta burasıydı. Daha önce Jenkins üzerinden testleri çalıştırmıştım ve bulduğum örnekler de o şekildeydi. Belki de Gitlab için bir örnek bulamamamın sebebi Selenium testleri çalıştırmanın mümkün olmaması/çok zor olmasıydı, bunu hiç düşünmemiştim.

Bu raddede projeyle çok fazla inatlaştım ve boşa zaman kaybettim açıkçası. Bazen dışardan gelecek en ufak bir bilgi hayatınızı kurtarabiliyor çünkü. Yardım istemeye karar verdim, geç kalınmış bir karardı bu ama zararın neresinden dönsem kardı. Yine bunu deneyimleyen kimseyi bulamamıştım. Bizim mweb ekibinden çok sevdiğim Selin ile bir şeyler denedik, yine başarılı olamadık. En sonunda selenium tecrübesine güvendiğim Taylan ile konuştuk, ve bana sorduğu ilk soru “bu docker image’da chrome var mı?” oldu. O an zihnimde patlayan havai fişekleri görebilmenizi isterdim. Evet proje docker image’ı çekiyordu ama bu docker image’da chrome yoktu. Chrome olmayan bir yerde nasıl chrome testleri çalışabilirdi ki!

Bu sorunu çözebilirdik fakat çözsek bile, Chrome yüksek memory tüketen bir container ( min 400mb ) olduğundan, testler paralel koşmaya başladığında Gitlab’deki runnerlar sorun çıkarırmış. Best practice ise, testleri koşacağım ortamın farklı olmasıymış.

Sonuç olarak web ekibinin testleri paralel koşmak için oluşturduğu bir ortam vardı, oradan bir makine ayarlandı ve ben de testleri remoteWebDriver ile o adrese gönderip orada koşturdum.

Ve çıkardığım dersleri listeleyecek olursak;

  • Projenin entegrasyonlarını yapmadan projeyi geliştirip büyütmemek gerekiyor ki t anında başka bir framework/dil vs ile baştan başlayabilelim.
  • Dışardan bir göz/yorum her zaman işe yarar, yardım isteyelim.
  • Bir sorunla defalarca uğraşmak körleştirebilir, proje ile inatlaşmayalım.

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

--

--