আজ আমরা ‘ক্রোম ফর টেস্টিং’ ঘোষণা করতে পেরে আনন্দিত, এটি ক্রোমের একটি নতুন সংস্করণ যা বিশেষভাবে ওয়েব অ্যাপ টেস্টিং এবং অটোমেশনের কাজগুলোকে লক্ষ্য করে তৈরি। এই নিবন্ধে ব্যাখ্যা করা হয়েছে কেন ক্রোম টিম এটির প্রয়োজন অনুভব করেছে এবং কিছু বাস্তব উদাহরণ তুলে ধরা হয়েছে যেখানে একজন ডেভেলপার হিসেবে ‘ক্রোম ফর টেস্টিং’ আপনার জন্য উপকারী হতে পারে।
পটভূমি
উচ্চ-মানের ওয়েব অভিজ্ঞতা তৈরির জন্য ব্রাউজার টেস্টিং একটি অপরিহার্য অংশ, তা ম্যানুয়ালি বা স্বয়ংক্রিয়ভাবে করা হোক না কেন। একই সাথে, একটি উপযুক্ত ব্রাউজার টেস্টিং পরিবেশ তৈরি করা অত্যন্ত কঠিন, এতটাই যে এটিকে ওয়েব ডেভেলপারদের অন্যতম প্রধান সমস্যা হিসেবে নিয়মিত উল্লেখ করা হয় । আজ আমরা এমন একটি পরিবর্তনের ঘোষণা করছি যা আশা করা যায় এই সমস্যার কিছুটা লাঘব করবে।
স্বয়ংক্রিয় আপডেট: ব্যবহারকারীদের জন্য দারুণ, ডেভেলপারদের জন্য কষ্টকর
ক্রোমের অন্যতম উল্লেখযোগ্য বৈশিষ্ট্য হলো এর স্বয়ংক্রিয়ভাবে আপডেট হওয়ার ক্ষমতা। ব্যবহারকারীরা এটা জেনে খুশি হন যে, তাঁরা সর্বদা একটি হালনাগাদ ও সুরক্ষিত ব্রাউজার সংস্করণ ব্যবহার করছেন, যাতে আধুনিক ওয়েব প্ল্যাটফর্মের বৈশিষ্ট্য, ব্রাউজারের বিভিন্ন ফিচার এবং বাগ ফিক্স অন্তর্ভুক্ত থাকে।
তবে, একজন ডেভেলপার হিসেবে এন্ড-টু-এন্ড টেস্টের একটি সেট চালানোর সময় আপনার দৃষ্টিভঙ্গি সম্পূর্ণ ভিন্ন হতে পারে:
- আপনি বারবার পরীক্ষা চালালে সামঞ্জস্যপূর্ণ ও পুনরাবৃত্তিযোগ্য ফলাফল চান—কিন্তু দুটি পরীক্ষার মাঝখানে ব্রাউজারের এক্সিকিউটেবল বা বাইনারি যদি নিজেকে আপডেট করে নেয়, তবে এমনটা নাও হতে পারে।
- আপনি একটি নির্দিষ্ট ব্রাউজার সংস্করণ পিন করে সেই সংস্করণ নম্বরটি আপনার সোর্স কোড রিপোজিটরিতে চেক ইন করতে চান, যাতে আপনি পুরোনো কমিট ও ব্রাঞ্চগুলো চেক আউট করে সেই নির্দিষ্ট সময় থেকে ব্রাউজার বাইনারির ওপর পরীক্ষাগুলো পুনরায় চালাতে পারেন।
স্বয়ংক্রিয়ভাবে আপডেট হওয়া ব্রাউজার বাইনারি দিয়ে এর কোনোটিই সম্ভব নয়। ফলে, আপনি হয়তো স্বয়ংক্রিয় পরীক্ষার জন্য আপনার সাধারণ ক্রোম ইনস্টলেশন ব্যবহার করতে চাইবেন না। সাধারণ ব্রাউজার ব্যবহারকারীদের জন্য যা ভালো এবং স্বয়ংক্রিয় পরীক্ষাকারী ডেভেলপারদের জন্য যা ভালো, এই দুইয়ের মধ্যে এটাই হলো মৌলিক অমিল।
সংস্করণযুক্ত ব্রাউজার বাইনারি
স্বয়ংক্রিয় আপডেট ছাড়াও, আপনি হয়তো একটি নির্দিষ্ট সংস্করণের ক্রোম বাইনারি খুঁজে পেতেও অসুবিধা বোধ করেছেন। গুগল ইচ্ছাকৃতভাবে সংস্করণযুক্ত ক্রোম ডাউনলোড উপলব্ধ করে না, কারণ ব্যবহারকারীদের সংস্করণ নম্বর নিয়ে চিন্তা করার প্রয়োজন নেই—তাদের যত তাড়াতাড়ি সম্ভব সর্বশেষ সংস্করণে আপডেট হওয়া উচিত। এটি ব্যবহারকারীদের জন্য দারুণ, কিন্তু ডেভেলপারদের জন্য কষ্টকর, কারণ তাদের ক্রোমের পুরোনো সংস্করণে কোনো বাগ রিপোর্ট পুনরুৎপাদন করতে হয়।
এই সমস্যার একটি আরও সুনির্দিষ্ট উদাহরণ হলো যখন আপনি ব্রাউজার অটোমেশনের জন্য ChromeDriver ব্যবহার করতে চান। এক্ষেত্রে আপনাকে শুধু কোনোভাবে একটি Chrome বাইনারি ডাউনলোড করলেই হবে না, বরং দুটি বাইনারির সামঞ্জস্যতা নিশ্চিত করার জন্য একই ভার্সনের একটি ChromeDriver বাইনারিও প্রয়োজন হবে।
এই সমস্যাগুলো সমাধানের কোনো ভালো উপায় না থাকায়, আমরা জানি যে অনেক ডেভেলপার এর পরিবর্তে ক্রোমিয়াম (ক্রোম নয়) বাইনারি ডাউনলোড করেন, যদিও এই পদ্ধতির কিছু ত্রুটি রয়েছে। প্রথমত, এই ক্রোমিয়াম বাইনারিগুলো সব প্ল্যাটফর্মে নির্ভরযোগ্যভাবে পাওয়া যায় না। দ্বিতীয়ত, এগুলো ক্রোম রিলিজ প্রক্রিয়া থেকে আলাদাভাবে তৈরি ও প্রকাশ করা হয়, যার ফলে এগুলোর ভার্সনকে ব্যবহারকারীদের জন্য উপলব্ধ আসল ক্রোম রিলিজের সাথে মেলানো অসম্ভব হয়ে পড়ে। তৃতীয়ত, ক্রোমিয়াম এবং ক্রোম ভিন্ন।
সমাধান: পরীক্ষার জন্য ক্রোম
এই সমস্যাগুলো সমাধানের জন্য ডিজাইন করা, ‘ক্রোম ফর টেস্টিং’ হলো ক্রোমের একটি বিশেষ সংস্করণ যা শুধুমাত্র টেস্টিং ব্যবহারের জন্য তৈরি। এতে কোনো স্বয়ংক্রিয় আপডেট নেই, এটি ক্রোম রিলিজ প্রক্রিয়ার সাথে সমন্বিত এবং প্রতিটি ক্রোম রিলিজের সাথে উপলব্ধ করা হয়। এটি একটি ভার্সনযুক্ত বাইনারি যা টেস্টিং ব্যবহারের ক্ষেত্রে কোনো নেতিবাচক প্রভাব না ফেলেই সাধারণ ক্রোমের যথাসম্ভব কাছাকাছি।
টেস্টিংয়ের জন্য ক্রোম তৈরি করতে, আমরা ক্রোমিয়াম ও ক্রোম কোডবেসে পরিবর্তন এনেছি এবং সমস্ত চ্যানেলে (স্টেবল, বিটা, ডেভ, ও ক্যানারি) ক্রোম রিলিজ প্রক্রিয়ার সাথে তাল মিলিয়ে এই বাইনারিগুলো বিল্ড করে একটি সর্বজনীনভাবে উপলব্ধ বাকেটে আপলোড করার জন্য পরিকাঠামো স্থাপন করেছি।
‘ক্রোম ফর টেস্টিং’-এর পরিকাঠামোটি স্বয়ং ক্রোমের বাইরেও আকর্ষণীয় সুযোগ উন্মোচন করে। উদাহরণস্বরূপ, একটি সামঞ্জস্যপূর্ণ ক্রোম এবং ক্রোমড্রাইভার বাইনারি খুঁজে বের করার বিষয়ে আমরা পূর্বে যে অসুবিধার কথা উল্লেখ করেছিলাম , তা ‘ক্রোম ফর টেস্টিং’ পরিকাঠামোর মধ্যে ক্রোমড্রাইভার রিলিজ প্রক্রিয়াকে একীভূত করার মাধ্যমে সম্পূর্ণরূপে দূর করা যায়। ব্যবহারকারীদের এই ভোগান্তি সমাধানের পাশাপাশি, এটি ক্রোমড্রাইভারের রিলিজকে ক্রোমের সাথে সামঞ্জস্যপূর্ণ করে এবং ম্যানুয়াল ক্রোমড্রাইভার রিলিজ প্রক্রিয়াটিকেও দূর করে।
আমি কীভাবে টেস্টিংয়ের জন্য ক্রোম বাইনারিগুলো পেতে পারি?
আপনার প্ল্যাটফর্মের জন্য Chrome for Testing বাইনারি ডাউনলোড করার সবচেয়ে সহজ উপায় হলো আমাদের @puppeteer/browsers কমান্ড-লাইন ইউটিলিটি ব্যবহার করা, যা npm মাধ্যমে উপলব্ধ। এখানে কিছু উদাহরণ দেওয়া হলো:
# Download the latest available Chrome for Testing binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome@stable
# Download a specific Chrome for Testing version.
npx @puppeteer/browsers install chrome@116.0.5793.0
# Download the latest available ChromeDriver version corresponding to the Canary channel.
npx @puppeteer/browsers install chromedriver@canary
# Download a specific ChromeDriver version.
npx @puppeteer/browsers install chromedriver@116.0.5793.0
আপনি যদি এই বাইনারিগুলো ডাউনলোড করার জন্য নিজের স্বয়ংক্রিয় স্ক্রিপ্ট তৈরি করতে চান, তবে তার ব্যবস্থাও রয়েছে। আমরা প্রতিটি ক্রোম রিলিজ চ্যানেলের (স্টেবল, বিটা, ডেভ, ক্যানারি) জন্য সর্বশেষ উপলব্ধ সংস্করণসহ JSON API এন্ডপয়েন্ট অফার করি। সর্বশেষ অবস্থা সম্পর্কে দ্রুত ধারণা পেতে, Chrome for Testing অ্যাভেইলেবিলিটি ড্যাশবোর্ডটি দেখুন।