WebDriver BiDi siap produksi di Firefox, Chrome, dan Puppeteer

Matthias Rohmer
Matthias Rohmer

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

Mozilla telah menjadi kolaborator yang kuat di WebDriver BiDi selama lebih dari empat tahun sekarang, awalnya membantu membentuk standar baru, lalu secara bertahap menerapkan di Firefox, dengan rapi mendokumentasikan kemajuan mereka dengan Newsletter WebDriver dari Firefox.

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 Chrome DevTools Protocol (CDP) tetap tidak berubah.

Firefox, CDP, dan Puppeteer

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

Agar langkah ini berjalan, Mozilla menerapkan dan mempertahankan sebagian CDP dalam Firefox. Dengan solusi ini, Firefox dapat diotomatiskan dengan API Puppeteer, tetapi memiliki peringatan:

  • Seperti namanya, CDP digunakan oleh DevTools Chrome dan perlu diubah dengan persyaratan DevTools.
  • CDP tidak terstandardisasi dalam spesifikasi publik bersama dan memeliharanya di Firefox membutuhkan komunikasi yang stabil dan usaha.
  • Karena Firefox hanya mengimplementasikan sebagian dari CDP, Puppeteer tidak bisa menjamin API lengkapnya untuk berfungsi dengan Firefox, sehingga menimbulkan kebingungan bagi pengguna.

Meskipun kami senang dapat mempertahankan dukungan ini bersama Mozilla untuk beberapa tahun terakhir, kami selalu tahu bahwa itu bukanlah solusi permanen. Berlandaskan pada hal ini kemitraan, dan termasuk vendor browser dan alat besar lainnya, bersama-sama kami menciptakan WebDriver BiDi.

Kerja sama tim mewujudkan impian

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

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

Ini memungkinkan pengguna Puppeteer memilih Firefox atau Chrome untuk otomatisasi mereka, dengan menentukan kunci konfigurasi browser saat meluncurkan Puppeteer di instance Compute Engine.

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 tentang yang 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 secara eksplisit ke webDriverBiDi. Hal ini karena untuk Chrome, Puppeteer akan tetap menggunakan CDP—untuk tidak merusak otomatisasi yang ada, tetapi juga terus mendukung otomatisasi khusus untuk fitur Chrome.

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