Playwright ile E2E Test Yazma Rehberi
Beceri rehberi

Playwright ile E2E Test Yazma Rehberi

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Playwright ile uçtan uca test yazımı: seçici stratejisi, doğrulamalar, kimlik doğrulama, test verisi, ağ taklidi, proje yapısı ve CI entegrasyonu.

Uçtan uca test ve Playwright

Uçtan uca (E2E) test, uygulamayı gerçek kullanıcı gibi tarayıcıdan sürerek tüm katmanların birlikte çalıştığını doğrular: arayüz, API, veritabanı ve dış servisler. Birim testleri bir fonksiyonu, entegrasyon testleri bir bileşen grubunu denetler; E2E test ise "kullanıcı siparişi tamamlayabiliyor mu" sorusunu yanıtlar.

Playwright, açık kaynaklı bir tarayıcı otomasyon ve test çerçevesidir. Chromium, Firefox ve WebKit tarayıcı motorlarını tek arayüzle sürebilir ve bir test çalıştırıcısı, doğrulama kitaplığı, izleme aracı ve kod üretici ile birlikte gelir. Bu bütünleşik yapı, ayrı kütüphaneleri bir araya getirme zahmetini azaltır. Testler JavaScript, TypeScript, Python, Java ve .NET ile yazılabilir.

İlk test: yazım ve çalıştırma akışı

Bir Playwright testi genellikle şu akışı izler: sayfaya git, kullanıcı eylemini gerçekleştir, sonucu doğrula. Her test yalıtılmış bir tarayıcı bağlamında çalışır; yani çerezler ve depolama testler arasında karışmaz. Bu, bağımsız ve paralel çalışabilen testlerin temelidir.

Örnek bir senaryo: bir alışveriş sitesinde ürünü aratın, sonuç listesinde beklenen ürünün göründüğünü doğrulayın, sepete ekleyin ve sepet sayısının arttığını kontrol edin. Hızlı başlamak için kod üretici aracı kullanılabilir; tarayıcıda yaptığınız eylemleri kayıt altına alıp test kodu önerir. Ancak üretilen kod bir başlangıçtır: seçicileri sadeleştirmeden, doğrulamaları anlamlı hale getirmeden ve tekrarları yardımcı fonksiyonlara taşımadan kalıcı test paketine eklenmemelidir.

Seçici stratejisi ve doğrulamalar

Playwright, elementleri kullanıcının gördüğü biçimde bulmayı teşvik eder: rolüne (düğme, bağlantı, başlık), erişilebilir adına, etiketine ya da görünür metnine göre. Bu yaklaşım hem erişilebilirliği dolaylı olarak sınar hem de arayüzün görsel yapısı değişse bile testleri ayakta tutar. CSS ve XPath seçicileri ise yapıya sıkı bağlıdır; son çare olarak kalmalıdır. Uygulamada belirli bir öğeyi ayırt etmek zorunda kaldığınızda test için ayrılmış bir öznitelik eklemek makul bir yoldur.

Doğrulamalar otomatik beklemeli (web-first) çalışır: doğrulama koşul sağlanana kadar belirli bir üst sınıra kadar yeniden dener. Bu, elle bekleme komutu yazma ihtiyacını büyük ölçüde ortadan kaldırır. Yine de sabit uyku komutları kullanmaktan kaçının; bunun yerine gerçekten beklediğiniz durumu (öğenin görünmesi, ağ yanıtının dönmesi) doğrulayın.

Kimlik doğrulama, fikstür ve test verisi

Her testin başında arayüzden giriş yapmak hem yavaştır hem kırılgan. Yaygın çözüm, giriş işlemini bir kez yapıp oturum durumunu (çerez ve depolama) bir dosyaya kaydetmek ve testlerin bu durumla başlamasını sağlamaktır. Farklı roller için ayrı durum dosyaları tutulabilir: yönetici, standart kullanıcı, misafir.

Fikstürler, testin ihtiyaç duyduğu hazırlığı ve temizliği paylaşılan, bildirimsel bir yapıda tanımlar. Örneğin "giriş yapmış kullanıcı" ya da "örnek veri yüklü sepet" birer fikstür olabilir. Test verisi konusunda altın kural, her testin kendi verisini kendisinin oluşturması ve işi bitince temizlemesidir. Ortak bir veriye dayanan testler paralel çalıştığında birbirini bozar. Mümkün olduğunda veri hazırlığı arayüz yerine API ya da veritabanı üzerinden yapılır; bu hem hızlıdır hem de testin asıl odağını korur.

Ağ yakalama ve taklit

Uçtan uca testler dış servislere bağımlı olduğunda yavaşlar ve kararsızlaşır. Playwright, tarayıcının ağ isteklerini yakalayıp değiştirmenize ya da sahte yanıt döndürmenize izin verir. Böylece ödeme sağlayıcısı, harita servisi ya da yavaş bir harici API test sırasında gerçekten çağrılmadan simüle edilebilir.

Ağ taklidinin kullanım alanları: • Hata durumlarını denemek: sunucu hatası, zaman aşımı, boş liste yanıtı • Nadir veri koşullarını kolayca üretmek • Arayüzün yavaş ağda nasıl davrandığını sınamak • Belirli bir isteğin gerçekten yapıldığını ve gövdesinin doğru olduğunu doğrulamak

Dengeyi koruyun: her şeyi taklit ederseniz test gerçek entegrasyonu doğrulamaz. Kritik ana akışlar için gerçek servislerle bir miktar test tutmak, taklitli testlerle hata durumlarını kapsamak sağlıklı bir dağılımdır.

Proje yapısı, bakım ve ölçeklenme

Test paketi büyüdükçe düzen önem kazanır. Sayfa ya da bileşen nesneleri, tekrar eden etkileşimleri sınıflara toplar; testler iş diliyle okunur hale gelir. Yapılandırma dosyası, ortam adresi, tarayıcı projeleri, zaman aşımları ve paralel işçi sayısını merkezde tutar. Etiketlerle testleri gruplayıp hızlı bir duman test kümesi ile kapsamlı gerileme kümesini ayırmak, geri bildirim süresini kısaltır.

Bakım yükü, otomasyonun gizli maliyetidir. Kararsız bir test fark edildiğinde sessizce geçilmez, nedeni araştırılır. Kullanılmayan ve tekrarlayan testler temizlenir. Hangi senaryoların E2E düzeyinde olması gerektiği düzenli gözden geçirilir; iş kuralı doğrulaması birim ya da API testine indirilebiliyorsa orada tutulur.

CI entegrasyonu ve hata ayıklama

Testler sürekli tümleştirme hattında her değişiklikte çalıştığında değer üretir. CI ortamında tarayıcılar başsız kipte koşar, testler paralel işçilere dağıtılır ve çıktılar rapora dönüştürülür. Başarısız testlerin yeniden denenmesi ayarlanabilir; ancak yeniden deneme bir kararsızlık göstergesi olarak izlenmeli, sorunu gizlemek için kullanılmamalıdır.

Playwright'ın hata ayıklama araçları güçlüdür. İzleme (trace) dosyası; her adımın ekran görüntüsünü, ağ isteklerini, konsol çıktılarını ve zaman çizelgesini kaydeder ve başarısız testi sonradan adım adım gözden geçirmenizi sağlar. Video kaydı ve ekran görüntüsü de raporlara eklenebilir. Yerelde ise denetçi (inspector) aracı ve ağır çekim kipi, hatanın nerede oluştuğunu görmeyi kolaylaştırır. CI'da başarısız olup yerelde geçen testlerde ilk bakılacak yer, ortam farkları ve zamanlamadır.

Mindset programlarında Playwright

Mindset'in Playwright ile Uçtan Uca Test Otomasyonu eğitimi modülleri şöyledir: Playwright temelleri ve test yazımı, seçici stratejisi ve doğrulamalar, kimlik doğrulama, fikstür ve test verisi, ağ yakalama ve taklit, yapı, bakım ve ölçeklenme, CI entegrasyonu ve hata ayıklama.

Sıralama, ilk testin yazımından başlayıp ölçeklenme ve hata ayıklamaya uzanan doğal bir iş akışını izler.

İlgili Mindset programı

Playwright ile Uçtan Uca Test Otomasyonu

Sık sorulanlar

Sık sorulan sorular

Playwright ile Selenium arasındaki fark nedir?

Selenium uzun geçmişi, geniş dil desteği ve büyük topluluğuyla yerleşik bir araçtır. Playwright ise daha yeni olup otomatik bekleme, yalıtılmış tarayıcı bağlamı, izleme dosyası ve ağ yakalama gibi özellikleri hazır getirir. Seçim ekibin mevcut altyapısına ve ihtiyaçlarına bağlıdır.

Playwright hangi tarayıcıları destekler?

Chromium tabanlı tarayıcılar, Firefox ve WebKit motorları tek arayüzle sürülebilir. Böylece aynı testi farklı tarayıcı projelerinde çalıştırıp çapraz tarayıcı uyumluluğunu doğrulayabilirsiniz. Mobil cihaz tarayıcıları, ekran boyutu ve kullanıcı aracısını taklit eden cihaz emülasyonuyla denenebilir; gerçek cihaz davranışı için ayrıca doğrulama gerekebilir.

Playwright ile API testi yapılabilir mi?

Evet. Playwright, tarayıcı açmadan HTTP istekleri gönderebilen bir API istemcisi sunar. Bu özellik test verisi hazırlamak, arka uç davranışını doğrulamak ve arayüz testleriyle API doğrulamasını aynı pakette birleştirmek için kullanılır.

Kararsız (flaky) testler nasıl azaltılır?

Kullanıcı odaklı seçiciler, otomatik beklemeli doğrulamalar, testler arasında veri yalıtımı ve dış servis taklidi kararsızlığı belirgin ölçüde azaltır. Sabit bekleme komutlarından kaçınmak ve başarısız testlerin izleme dosyasını incelemek asıl nedeni bulmaya yardımcı olur.

Hangi senaryolar uçtan uca test olmalı?

Kullanıcı için iş açısından kritik akışlar: kayıt, giriş, arama, sepet, ödeme gibi. İş kuralı ve veri doğrulaması gibi ayrıntılar birim ve API testlerinde daha hızlı ve ucuz sınanır. E2E paketi küçük, kararlı ve anlamlı tutulduğunda değer üretir.

Playwright ile Uçtan Uca Test Nasıl Yazılır