Firefox, Chrome ve Puppeteer'da WebDriver BiDi üretime hazır

Daha geçen hafta, BrowserStack ile birlikte WebDriver BiDi'nin BrowserStack'ta üretime hazır hale geldiğini duyurmuştuk. Bu hafta, WebDriver BiDi yaz sezonu, Firefox 129 ve Puppeteer 23'ün WebDriver BiDi için üretime hazır destek almasıyla devam ediyor.

Mozilla, dört yılı aşkın süredir WebDriver BiDi'de güçlü bir iş ortağıdır. Başlangıçta yeni standardı şekillendirmeye yardımcı olan Mozilla, daha sonra bunu kademeli olarak Firefox'ta uyguladı ve Firefox WebDriver Bülteni ile ilerlemelerini net bir şekilde belgeledi.

WebDriver BiDi artık Firefox'ta üretime hazır olduğundan Puppeteer, 23. sürümden itibaren WebDriver BiDi aracılığıyla Firefox için kararlı destek sunar. Bu sayede, Chrome ile aynı kısa API'yi kullanarak Firefox'u otomatikleştirebilirsiniz. Puppeteer'ın Chrome DevTools Protokolü (CDP) desteğinde değişiklik olmayacaktır.

Firefox, CDP ve Puppeteer

Puppeteer, geliştiricilerin CDP olarak da bilinen Chrome DevTools Protokolü'nü kullanarak Chromium tabanlı tarayıcıları otomatikleştirmesi için güvenilir bir araçtır. 2019'da Puppeteer, Firefox için deneysel destek aldı.

Bu işlemin gerçekleşmesi için Mozilla, Firefox'ta CDP'nin bir alt kümesini uygulayıp sürdürdü. Bu çözüm, Firefox'un Puppeteer API ile otomatikleştirilmesine olanak tanısa da bazı sakıncaları vardı:

  • Adından da anlaşılacağı gibi CDP, Chrome'un Geliştirici Araçları tarafından kullanılır ve DevTools şartlarına göre değiştirilmesi gerekir.
  • CDP, paylaşılan ve herkese açık bir spesifikasyonda standartlaştırılmamıştır. Firefox'ta sürdürülmesi için sürekli iletişim ve çaba gerektirmiştir.
  • Firefox yalnızca CDP'nin bir alt kümesini uyguladığından Puppeteer, API'sinin Firefox ile çalışacağını hiçbir zaman garanti edememiştir. Bu da kullanıcılar için kafa karışıklığına neden olmuştur.

Son birkaç yıldır Mozilla ile birlikte bu desteği sürdürmekten memnuniyet duysak da bunun kalıcı bir çözüm olmadığının farkındaydık. Bu iş ortaklığını temel alarak ve diğer büyük tarayıcı ve araç tedarikçi firmalarını da dahil ederek WebDriver BiDi'yi birlikte oluşturduk.

başlıklı makalede WebDriver BiDi'nin geçmişi hakkında daha fazla bilgi edinin.

Ekip çalışması, başarıyı beraberinde getirir

Firefox ekibi, WebDriver BiDi'yi Firefox'a uygulamak için yoğun şekilde çalışıyor. Aynı zamanda Puppeteer ekibi, Puppeteer API'de WebDriver BiDi desteğini genişletiyordu. Her iki ekibin de hedefi, hem Chrome hem de Firefox'ta destek sağlayarak Puppeteer'da WebDriver BiDi'yi kullanarak üretim otomasyonu kullanım alanları için gereken her API'yi kullanıma sunmaktı.

Son birkaç ay içinde başarılı testlerin sayısını gösteren paylaşılan ekip kontrol paneli.
Son birkaç ay içinde başarılı testlerin sayısını gösteren paylaşılan ekip kontrol paneli.

Bu sayede Puppeteer kullanıcıları, Puppeteer örneğini başlatırken browser yapılandırma anahtarını belirterek otomasyonları için Firefox veya Chrome'u seçebilir.

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

Firefox 129'daki yenilikler ve Mozilla'nın WebDriver BiDi ile ilgili çalışmaları hakkında daha fazla bilgi edinmek için ilgili Mozilla Hacks blog yayınını inceleyin.

Gelecekte CDP desteği

Önceki kod snippet'inde, Puppeteer ile WebDriver BiDi'yi kullanarak Chrome'u otomatikleştirmek için protocol değerini webDriverBiDi olarak açıkça ayarlamanız gerektiği gösterilmektedir. Bunun nedeni, Puppeteer'ın Chrome için varsayılan olarak CDP'yi kullanmaya devam etmesidir. Bu sayede, mevcut otomasyonlar bozulmaz ve Chrome'un özelliklerine özel otomasyonlar desteklenmeye devam eder.

Firefox'ta CDP desteği, Firefox 129'dan itibaren kullanımdan kaldırılmıştır ve 2024'ün sonunda kaldırılması planlanmaktadır. Firefox'ta CDP desteğine dayanan mevcut otomasyonlarınız varsa WebDriver BiDi'ye geçmenizi önemle tavsiye ederiz. Bu mümkün değilse kullanım alanınızı dev-webdriver@mozilla.org adresine gönderin.