Gamma Projesi: Python + Selenium ile Modern Test Otomasyonu

Uzun süredir E2E test otomasyonu için Solarwinds kullanıyordum. Başta işimi görüyordu ama zamanla bazı problemler gözüme batmaya başladı:
- Conditional senaryolar sürekli sorun çıkarıyordu.
- Performans beklentimin çok altındaydı.
- İstediğim gibi özelleştiremiyor, eklemek istediğim özellikleri ekleyemiyordum.
Bir noktadan sonra şunu fark ettim: Mevcut araçlarla uğraşmaktansa, kendi ihtiyacıma göre bir şeyler geliştirmek çok daha mantıklı olacak.
Böylece Gamma ortaya çıktı: kendi projelerimde ve gelecekteki müşteri işlerinde kullanabileceğim, hızlı ve esnek bir test otomasyon aracı.
Neden Böyle Bir Araca İhtiyaç Duydum?
Solarwinds gibi araçlar güçlü görünüyor ama genelde “herkese hitap eden genel çözümler” oluyor. Benim ise çok daha basit ama daha esnek bir şeye ihtiyacım vardı:
- Testleri yavaşlatmayan, hızlı çalışan bir sistem.
- Gerektiğinde içine kendi kuralları mı ekleyebileceğim bir yapı.
- Karmaşık log/rapor ekranlarında kaybolmadan testleri tek bir arayüzden yönetebilmek.
Bunların hiçbiri mevcut araçlarda beni tatmin edecek seviyede değildi.
Gamma’nın Kalbi: GUI
Gamma’yı geliştirmeye başladığımda aklımdaki ilk hedef şuydu: Test süreçleri, kod bilmeyen biri için bile anlaşılır olmalı.
Bu yüzden en çok emek verdiğim kısım GUI oldu.
- Dark theme sayesinde göz yormuyor.
- Tek ekrandan testleri başlatabiliyor, logları görebiliyor, sonuçları takip edebiliyorsunuz.
- Real-time log takibi, hata anında screenshot ve console log toplama gibi özellikler debugging süresini inanılmaz kısaltıyor.
Kısacası “testlerim çalışıyor mu?” sorusunu birkaç tıkla yanıtlamak mümkün.
Multi-Project Yapısı: Bir Araç, Birden Fazla Senaryo
Gamma’yı sadece kendi projem için yazmadım. Bir sonraki müşteri işimde de kullanabilmek istiyordum. Bu yüzden multi-project yapısını ekledim.
Her proje için:
- Ayrı konfigürasyon
- Ayrı test dosyaları
- Ayrı credential yönetimi
Bu sayede tek aracı farklı alanlarda kullanabiliyorum.
Selenium + Chrome DevTools Protocol
Selenium zaten bir klasik, ama tek başına her zaman yetmiyor. Bu yüzden Gamma’ya Chrome DevTools Protocol (CDP) entegrasyonu da ekledim.
Bunun avantajları:
- Network isteklerini ve performans metriklerini izleyebiliyorum.
- Headless mode’da bile screenshot alıp console log kaydedebiliyorum.
- Daha derin debugging yapmak mümkün hale geliyor.
Artifact Yönetimi: Hatanın İzini Sürmek
Bir test başarısız olduğunda “neden?” sorusunun cevabını bulmak çoğu zaman vakit alır. Gamma’da bu süreç otomatik:
- Screenshot → hata anındaki ekran görüntüsü
- Console log → JS hataları ve uyarılar
- Network summary → başarısız istekler
- Page analysis → sayfanın o anki durumu
Üstelik her run için timestamp’li klasörler (logs/20241201-143022-checkout) oluşturuluyor. Böylece geçmiş testleri kıyaslamak ya da bir bug’ın ne zaman ortaya çıktığını anlamak çok kolay.
En Büyük Avantaj: Hız ve Kontrol
Gamma’nın beni en çok tatmin eden yanı şu:
- Solarwinds’e kıyasla çok daha hızlı.
- En önemlisi, kontrol tamamen bende.
Eksik gördüğüm bir şey varsa oturup ekleyebiliyorum. İhtiyacım olan özelliği kimsenin roadmap’ine bakmadan, release beklemeden yazabiliyorum.
Sırada Ne Var?
Gamma henüz ilk sürümünde ama aklımda birçok geliştirme planı var:
- Drag-and-drop Test Builder → GUI’den sürükle-bırak ile test oluşturma
- Scheduler → Belirli zamanlarda otomatik test çalıştırma
- Parallel Execution → Aynı anda birden fazla testi çalıştırma
- CI/CD Entegrasyonu → GitHub Actions ile entegrasyon
- HTML Report Generation → Paylaşılabilir detaylı raporlar
Sonuç
Bazen mevcut araçlarla idare etmek kolay geliyor. Ama kendi ihtiyaçlarınıza göre bir şey üretmek çok daha tatmin edici.
Gamma benim için sadece bir test aracı değil; aynı zamanda bir “yan projenin nasıl gerçek bir ihtiyacı çözebileceğinin” kanıtı oldu.
🔗 Projeyi merak ediyorsanız GitHub reposu burada:
👉 Gamma - E2E Testing Tool