- Puppeteer 23. sürümden itibaren Firefox’u resmi olarak destekliyor; böylece artık Chrome ve Firefox’ta otomasyon ile uçtan uca testleri kolayca gerçekleştirmek mümkün
const browser = await puppeteer.launch({browser: "firefox"});
- Chrome’da olduğu gibi Puppeteer, Firefox’un en güncel kararlı sürümünü indirip çalıştırabiliyor
- Firefox desteği, Firefox’a özel bir otomasyon protokolüne değil, şu anda Gecko ve Chromium’da uygulanmış tarayıcılar arası bir protokol olan WebDriver BiDi’ye dayanıyor
- Tarayıcılar arası bir protokol kullanmak, gelecekte daha fazla tarayıcıyı kolayca desteklemeyi mümkün kılıyor
Teknik arka plan
- Yakın zamana kadar tarayıcı otomasyonu isteyenler için iki ana seçenek vardı
- W3C WebDriver API’sini kullanmak
- Tarayıcıya özel API’leri kullanmak (Chrome DevTools Protocol, Firefox Remote Debugging Protocol vb.)
- Her iki seçeneğin de önemli ödünleşimleri bulunuyor
- Klasik WebDriver API’si HTTP tabanlıdır ve tarayıcıya komut gönderip yanıt bekleme modeline sahiptir
- Bu, sayfa yükleme ve öğelerin görüntülenip görüntülenmediğini kontrol etme gibi otomasyon senaryolarında iyi çalışır; ancak tarayıcıdan olay almak veya birden fazla komutu aynı anda çalıştırmak gibi ileri düzey kullanım durumları için uygun değildir
- Tarayıcıya özel API’ler genellikle tarayıcı içindeki geliştirici araçlarının karmaşık kullanım senaryolarını destekleyecek şekilde tasarlandığından, WebDriver’a göre çok daha gelişmiş bir özellik seti sunar
- Bu nedenle tarayıcı otomasyon istemcileri, tek bir protokolle birden fazla tarayıcıyı destekleyip sınırlı bir özellik seti sunmak ile daha zengin bir özellik seti sunup desteklenen her tarayıcı için özellikleri ayrı ayrı uygulamak arasında seçim yapmak zorundaydı
- Bu durum, güçlü tarayıcılar arası otomasyon oluşturmanın maliyetini ve karmaşıklığını artırdı
- Bu durum, LSP (Language Server Protocol) geliştirilmeden önceki tabloya benziyordu
- WebDriver BiDi, daha önce tarayıcıya özel protokollerle sınırlı olan otomasyon özelliklerini standartlaştırılmış bir protokole taşıyarak bunların tüm tarayıcılarda ve otomasyon araçlarında kullanılabilmesini sağlıyor
Firefox’un deneysel CDP (Chrome DevTools Protocol) desteğinin kaldırılması
- Erken dönem tarayıcılar arası test iyileştirme çalışmalarının bir parçası olarak, test kullanım senaryolarını desteklemek için gerekli birkaç komut ve olayla sınırlı kısmi bir CDP uygulaması sunulmuştu
- Ancak bunun tarayıcılar arası otomasyonun ilerlemesi gereken yön olmadığı netleşince bu konudaki çalışmalar durduruldu
- Sonuç olarak bu destek bakım görmedi ve site isolation gibi modern Firefox özellikleriyle uyumlu değil
- Bu nedenle desteğin 2024 sonlarında kaldırılması planlanıyor
Bundan sonra planlananlar
- Hâlâ desteklenmeyen bazı API’ler var
- Yalnızca CDP’ye özgü API’ler
- Ek standartlaştırma çalışması gerektiren API’ler
- Standardı mevcut olsa da henüz uygulanmamış API’ler
- Önceliklendirme, kullanıcı geri bildirimlerine göre yapılacak
1 yorum
Hacker News görüşleri
Puppeteer ekibinin Google'dan ayrılıp Microsoft'a geçerek Playwright'ı geliştirmeyi sürdürmesi, Google için büyük bir darbe oldu
WebDriver BiDi protokolü tarayıcı oluşturan bir protokol değil, ancak bunun yaklaşık %90'ını yapabilecek gibi görünüyor
Playwright, tüm modern render motorlarını (Chromium, WebKit, Firefox) destekliyor
Erişilebilirlik ağacı hakkında merak ediyorum