Firefox, Chrome এবং Puppeteer-এ WebDriver BiDi উৎপাদন-প্রস্তুত

মাত্র গত সপ্তাহে, BrowserStack-এর সাথে, আমরা WebDriver BiDi BrowserStack-এ উৎপাদন-প্রস্তুত হওয়ার ঘোষণা করেছি। এই সপ্তাহে WebDriver BiDi- এর গ্রীষ্মকাল Firefox 129 এবং Puppeteer 23-এর সাথে চলছে প্রতিটি WebDriver BiDi-এর জন্য উৎপাদন-প্রস্তুত সমর্থন পাচ্ছে!

মোজিলা এখন চার বছরেরও বেশি সময় ধরে WebDriver BiDi-এর একটি শক্তিশালী সহযোগী, প্রাথমিকভাবে নতুন স্ট্যান্ডার্ড গঠনে সাহায্য করে এবং তারপর ধীরে ধীরে Firefox-এ এটি বাস্তবায়ন করে, Firefox WebDriver নিউজলেটারের সাথে তাদের অগ্রগতির নথিভুক্ত করে।

WebDriver BiDi এখন Firefox-এ উৎপাদন-প্রস্তুত, Puppeteer, সংস্করণ 23 থেকে, WebDriver BiDi-এর মাধ্যমে Firefox-এর জন্য স্থিতিশীল সমর্থন প্রদান করে। এটি আপনাকে Chrome এর মতো একই সংক্ষিপ্ত API সহ Firefox স্বয়ংক্রিয় করতে দেয়। Chrome DevTools Protocol (CDP) এর জন্য Puppeteer এর সমর্থন অপরিবর্তিত রয়েছে।

Firefox, CDP, এবং Puppeteer

Chromium-ভিত্তিক ব্রাউজারগুলিকে Chrome DevTools প্রোটোকল ব্যবহার করে স্বয়ংক্রিয় করার জন্য ডেভেলপারদের জন্য Puppeteer হল একটি নির্ভরযোগ্য টুল, যা CDP নামেও পরিচিত। 2019 সালে Puppeteer ফায়ারফক্সের জন্য পরীক্ষামূলক সমর্থন পেয়েছে।

এই কাজটি করার জন্য, মোজিলা ফায়ারফক্সে সিডিপি-এর একটি উপসেট বাস্তবায়ন ও রক্ষণাবেক্ষণ করেছে। এই সমাধানটি ফায়ারফক্সকে Puppeteer API দিয়ে স্বয়ংক্রিয় হতে দেয়, কিন্তু এতে সতর্কতা ছিল:

  • নাম অনুসারে, CDP Chrome এর DevTools দ্বারা ব্যবহৃত হয় এবং DevTools প্রয়োজনীয়তার সাথে পরিবর্তন করা প্রয়োজন৷
  • শেয়ার্ড, পাবলিক স্পেসিফিকেশনে সিডিপি মানসম্মত নয় এবং ফায়ারফক্সে এটি বজায় রাখার জন্য স্থির যোগাযোগ এবং প্রচেষ্টা প্রয়োজন।
  • যেহেতু ফায়ারফক্স শুধুমাত্র CDP-এর একটি উপসেট প্রয়োগ করেছে, তাই Puppeteer কখনোই Firefox-এর সাথে কাজ করার জন্য তার সম্পূর্ণ API গ্যারান্টি দিতে পারে না, ব্যবহারকারীদের জন্য বিভ্রান্তি তৈরি করে।

যদিও আমরা গত কয়েক বছর ধরে Mozilla এর সাথে একসাথে এই সমর্থন বজায় রাখতে পেরে আনন্দিত, আমরা সবসময় জানতাম এটি একটি স্থায়ী সমাধান নয়। এই অংশীদারিত্বের উপর ভিত্তি করে, এবং অন্যান্য প্রধান ব্রাউজার এবং টুলিং বিক্রেতাদের সহ , আমরা একসাথে WebDriver BiDi তৈরি করেছি।

সম্মিলিত কাজ স্বপ্ন পূরণ করে

Firefox টিম ফায়ারফক্সে WebDriver BiDi বাস্তবায়নের জন্য সাগ্রহে কাজ করছে। একই সময়ে Puppeteer দল Puppeteer API জুড়ে WebDriver BiDi সমর্থন প্রসারিত করছে। উভয় দল যে লক্ষ্যের দিকে কাজ করেছিল তা হল Puppeteer-এ WebDriver BiDi ব্যবহার করে প্রোডাকশন অটোমেশন ব্যবহারের ক্ষেত্রে প্রয়োজনীয় প্রতিটি API তৈরি করা, Chrome এবং Firefox উভয় ক্ষেত্রেই সমর্থন নিশ্চিত করা।

ভাগ করা টিম ড্যাশবোর্ড গত কয়েক মাসে উত্তীর্ণ পরীক্ষার সংখ্যা দেখাচ্ছে।
ভাগ করা টিম ড্যাশবোর্ড গত কয়েক মাসে উত্তীর্ণ পরীক্ষার সংখ্যা দেখাচ্ছে।

এটি Puppeteer ব্যবহারকারীদের একটি Puppeteer ইনস্ট্যান্স চালু করার সময় browser কনফিগারেশন কী নির্দিষ্ট করে তাদের অটোমেশনের জন্য Firefox বা Chrome নির্বাচন করতে দেয়।

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 এবং WebDriver BiDi-এ Mozilla-এর কাজ সম্পর্কে আরও জানতে সম্পর্কিত Mozilla Hacks ব্লগ পোস্টটি দেখুন।

ভবিষ্যতে সিডিপি সমর্থন

পূর্ববর্তী কোড স্নিপেটটি দেখায় যে Puppeteer-এর সাথে WebDriver BiDi ব্যবহার করে Chrome স্বয়ংক্রিয় করতে আপনাকে স্পষ্টভাবে webDriverBiDi তে protocol সেট করতে হবে। এর কারণ হল ক্রোমের জন্য, Puppeteer CDP-তে ডিফল্ট রাখবে- বিদ্যমান অটোমেশনগুলিকে না ভাঙার জন্য, কিন্তু Chrome-এর বৈশিষ্ট্যগুলির জন্য বিশেষায়িত অটোমেশনগুলিকে সমর্থন করতেও থাকবে৷

Firefox-এ CDP সমর্থন Firefox 129 থেকে বাতিল করা হয়েছে এবং 2024-এর শেষে সরিয়ে ফেলা হবে । আপনার যদি বিদ্যমান অটোমেশন থাকে যা ফায়ারফক্সে CDP সমর্থনের উপর নির্ভর করে আমরা দৃঢ়ভাবে WebDriver BiDi-এ স্থানান্তরিত করার পরামর্শ দিই। যদি তা সম্ভব না হয়, আপনার ব্যবহারের ক্ষেত্রে dev-webdriver@mozilla.org- এর সাথে যোগাযোগ করুন।