- Mulai Puppeteer versi 23, Firefox kini didukung secara resmi, sehingga otomatisasi dan pengujian end-to-end kini dapat dilakukan dengan mudah di Chrome dan Firefox
const browser = await puppeteer.launch({browser: "firefox"});
- Seperti halnya Chrome, Puppeteer dapat mengunduh dan menjalankan Firefox versi stabil terbaru
- Dukungan Firefox didasarkan pada WebDriver BiDi, protokol lintas-browser yang saat ini diimplementasikan di Gecko dan Chromium, bukan pada protokol otomatisasi khusus Firefox
- Dengan menggunakan protokol lintas-browser, akan lebih mudah mendukung lebih banyak browser di masa depan
Latar belakang teknis
- Hingga belakangan ini, ada dua pilihan utama bagi mereka yang menginginkan otomatisasi browser
- Menggunakan API WebDriver W3C
- Menggunakan API khusus per browser (Chrome DevTools Protocol, Firefox Remote Debugging Protocol, dan sebagainya)
- Kedua pilihan tersebut sama-sama memiliki trade-off yang cukup besar
- API WebDriver klasik berbasis HTTP dan menggunakan model mengirim perintah ke browser lalu menunggu respons
- Ini bekerja dengan baik untuk skenario otomatisasi seperti memuat halaman dan memeriksa apakah elemen ditampilkan, tetapi tidak cocok untuk use case tingkat lanjut seperti menerima event dari browser atau menjalankan beberapa perintah secara bersamaan
- API khusus browser umumnya dirancang untuk mendukung use case kompleks pada developer tools di dalam browser, sehingga menyediakan set fitur yang jauh lebih maju dibandingkan WebDriver
- Karena itu, klien otomatisasi browser harus memilih antara mendukung beberapa browser dengan satu protokol tetapi dengan set fitur terbatas, atau menyediakan set fitur yang lebih kaya namun harus mengimplementasikan fitur secara terpisah untuk setiap browser yang didukung
- Hal ini meningkatkan biaya dan kompleksitas untuk membuat otomatisasi lintas-browser yang unggul
- Situasinya mirip seperti sebelum LSP(Language Server Protocol) dikembangkan
- WebDriver BiDi membawa set fitur otomatisasi yang sebelumnya terbatas pada protokol khusus browser ke protokol yang terstandarisasi, sehingga dapat digunakan di semua browser dan tool otomatisasi
Penghapusan dukungan CDP(Chrome DevTools Protocol) eksperimental di Firefox
- Sebagai bagian dari upaya awal untuk meningkatkan pengujian lintas-browser, disediakan implementasi parsial CDP yang dibatasi pada beberapa perintah dan event yang diperlukan untuk mendukung use case pengujian
- Namun, setelah menjadi jelas bahwa ini bukan arah perkembangan otomatisasi lintas-browser, upaya tersebut dihentikan
- Akibatnya, fitur ini tidak lagi dipelihara dan tidak kompatibel dengan fitur Firefox modern seperti site isolation
- Karena itu, dukungan tersebut dijadwalkan dihapus pada akhir 2024
Rencana ke depan
- Masih ada beberapa API yang belum didukung
- API khusus CDP
- API yang memerlukan pekerjaan standardisasi tambahan
- API yang sudah memiliki standar tetapi belum diimplementasikan
- Prioritas akan ditentukan melalui masukan pengguna
1 komentar
Pendapat Hacker News
Fakta bahwa tim Puppeteer meninggalkan Google ke Microsoft lalu terus mengembangkan Playwright merupakan pukulan besar bagi Google
Protokol WebDriver BiDi memang bukan protokol untuk membuat browser, tetapi tampaknya hampir 90% bisa berperan seperti itu
Playwright mendukung semua rendering engine modern (Chromium, WebKit, Firefox)
Penasaran soal accessibility tree