WebDriver BiDi siap produksi di Firefox, Chrome, dan Puppeteer

Matthias Rohmer
Matthias Rohmer

Minggu lalu, bersama dengan BrowserStack, kami mengumumkan bahwa WebDriver BiDi menjadi siap produksi di BrowserStack. Minggu ini, musim panas WebDriver BiDi berlanjut dengan Firefox 129 dan Puppeteer 23 yang masing-masing mendapatkan dukungan siap produksi untuk WebDriver BiDi.

Mozilla telah menjadi kolaborator kuat di WebDriver BiDi selama lebih dari empat tahun, saat ini pertama kali membantu membentuk standar baru, lalu menerapkannya secara bertahap di Firefox, lalu mendokumentasikannya dengan rapi progres mereka dengan Newsletter Firefox WebDriver.

Dengan WebDriver BiDi yang kini siap diproduksi di Firefox, Puppeteer, dari versi 23, menawarkan dukungan stabil untuk Firefox melalui WebDriver BiDi. Hal ini memungkinkan Anda mengotomatiskan Firefox dengan API ringkas yang sama seperti Chrome. Dukungan Puppeteer untuk Protokol DevTools Chrome (CDP) tidak berubah.

Firefox, CDP, dan Puppeteer

Puppeteer adalah alat andal bagi developer untuk mengotomatiskan browser berbasis Chromium menggunakan Chrome DevTools Protocol, yang juga dikenal sebagai CDP. Pada tahun 2019 Puppeteer mendapat dukungan eksperimental untuk Firefox.

Agar hal ini berfungsi, Mozilla menerapkan dan mempertahankan subset CDP di Firefox. Solusi ini memungkinkan Firefox diotomatiskan dengan Puppeteer API, tetapi ada ketentuannya:

  • Seperti namanya, CDP digunakan oleh DevTools Chrome dan perlu berubah sesuai dengan persyaratan DevTools.
  • CDP tidak distandardisasi dalam spesifikasi publik bersama dan mempertahankannya di Firefox memerlukan komunikasi dan upaya yang stabil.
  • Karena Firefox hanya menerapkan sebagian CDP, Puppeteer tidak pernah dapat menjamin API lengkapnya berfungsi dengan Firefox, sehingga membingungkan pengguna.

Meskipun kami senang dapat mempertahankan dukungan ini bersama Mozilla selama beberapa tahun terakhir, kami selalu tahu bahwa ini bukan solusi permanen. Membangun kemitraan ini, dan termasuk vendor alat serta browser besar lainnya, bersama-sama kami menciptakan WebDriver BiDi.

Kerja sama tim akan mewujudkan impian

Tim Firefox telah bekerja keras untuk menerapkan WebDriver BiDi di Firefox. Pada saat yang sama, tim Puppeteer telah memperluas dukungan WebDriver BiDi di seluruh Puppeteer API. Tujuan yang dicapai oleh kedua tim adalah menyediakan setiap API yang diperlukan untuk kasus penggunaan otomatisasi produksi menggunakan WebDriver BiDi di Puppeteer, sehingga memastikan dukungan di Chrome dan Firefox.

Dasbor tim bersama yang menampilkan jumlah pengujian yang lulus selama beberapa bulan terakhir.
Dasbor tim bersama yang menampilkan jumlah pengujian yang lulus selama beberapa bulan terakhir.

Hal ini memungkinkan pengguna Puppeteer memilih Firefox atau Chrome untuk otomatisasi mereka, dengan menentukan kunci konfigurasi browser saat meluncurkan instance Puppeteer.

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();

Untuk mempelajari lebih lanjut fitur baru di Firefox 129 dan performa Mozilla di WebDriver BiDi, lihat postingan blog Mozilla Hacks terkait.

Dukungan CDP di masa mendatang

Cuplikan kode sebelumnya menunjukkan bahwa untuk mengotomatiskan Chrome menggunakan WebDriver BiDi dengan Puppeteer, Anda perlu menetapkan protocol ke webDriverBiDi secara eksplisit. Hal ini karena untuk Chrome, Puppeteer akan tetap menetapkan default ke CDP—agar tidak merusak otomatisasi yang ada, tetapi juga untuk terus mendukung otomatisasi yang dikhususkan untuk fitur Chrome.

Dukungan CDP di Firefox tidak digunakan lagi mulai Firefox 129 dan dijadwalkan untuk dihapus pada akhir 2024. Jika Anda memiliki otomatisasi yang mengandalkan dukungan CDP di Firefox, sebaiknya migrasi ke WebDriver BiDi. Jika tidak memungkinkan, hubungi dev-webdriver@mozilla.org dengan kasus penggunaan Anda.