Headless Browsers হল এমন ব্রাউজার, যা ইউজার ইন্টারফেস ছাড়াই কম্পিউটার পরিবেশে চালানো যায়। এই ধরনের ব্রাউজারগুলো বিশেষভাবে উপকারী হয় অটোমেটেড টেস্টিংয়ের জন্য, কারণ এগুলো GUI (Graphical User Interface) ছাড়াই ব্যাকগ্রাউন্ডে টেস্ট রান করতে সক্ষম। JasmineJS সহ JavaScript টেস্টিং ফ্রেমওয়ার্কগুলোতে Headless Browsers (যেমন PhantomJS এবং Puppeteer) ব্যবহার করে আপনি আপনার টেস্টগুলো ব্রাউজারে চালিয়ে ফলাফল পেতে পারেন, তবে কোনো ভিজ্যুয়াল উপাদান ছাড়াই।
এই ধরনের টেস্টিং আপনার CI/CD (Continuous Integration/Continuous Deployment) প্রক্রিয়ায় সহায়ক হতে পারে এবং বিভিন্ন ডিভাইস বা ব্রাউজার পারফরমেন্স নিশ্চিত করতে সাহায্য করে। এখানে আমরা PhantomJS এবং Puppeteer ব্যবহার করে JasmineJS এর টেস্টিং দেখবো।
PhantomJS ব্যবহার করে JasmineJS টেস্টিং
PhantomJS হল একটি হেডলেস ব্রাউজার, যা WebKit ইঞ্জিন ব্যবহার করে। এটি সিস্টেমে ব্রাউজার খোলার প্রয়োজন ছাড়াই আপনার স্ক্রিপ্ট এবং টেস্ট চালাতে সাহায্য করে। PhantomJS কে JasmineJS এর সাথে ইন্টিগ্রেট করে আপনি কোনো UI প্রদর্শন না করেই টেস্টগুলো চালাতে পারেন।
PhantomJS সেটআপ
PhantomJS ইনস্টলেশন:
PhantomJS ব্যবহার করতে প্রথমে আপনাকে PhantomJS ইনস্টল করতে হবে। আপনি এটি npm বা Homebrew এর মাধ্যমে ইনস্টল করতে পারেন।
npm এর মাধ্যমে PhantomJS ইনস্টল:
npm install phantomjs --save-devJasmineJS কনফিগারেশন:
PhantomJS ব্যবহার করে JasmineJS এর টেস্টিং করতে আপনি সাধারণত Karma টেস্ট রানার ব্যবহার করবেন। Karma একটি টেস্ট রানার যা PhantomJS এর মতো হেডলেস ব্রাউজারে JasmineJS টেস্ট চালাতে পারে।
- Karma কনফিগারেশন:
প্রথমে Karma এবং Karma-PhantomJS প্লাগইন ইনস্টল করুন:
npm install karma karma-phantomjs-launcher --save-devতারপর একটি
karma.conf.jsফাইল তৈরি করুন, যেখানে PhantomJS কে টেস্ট রানার হিসেবে কনফিগার করবেন:module.exports = function(config) { config.set({ frameworks: ['jasmine'], files: [ 'src/**/*.js', // আপনার কোডের ফাইল 'test/**/*.spec.js' // আপনার Jasmine টেস্ট ফাইল ], browsers: ['PhantomJS'], // PhantomJS ব্যবহারের জন্য reporters: ['progress'], singleRun: true }); };
টেস্ট রান:
karma startএটি PhantomJS ব্রাউজারে আপনার Jasmine টেস্ট চালাবে এবং ফলাফল দেখাবে।
Puppeteer ব্যবহার করে JasmineJS টেস্টিং
Puppeteer হল একটি Node.js লাইব্রেরি, যা Chrome বা Chromium ব্রাউজারের হেডলেস ভার্সন চালাতে ব্যবহার করা হয়। Puppeteer অত্যন্ত শক্তিশালী এবং ব্যবহার করা সহজ। JasmineJS এর সাথে Puppeteer ব্যবহার করে আপনি ডেডিকেটেড ব্রাউজারে টেস্ট চালাতে পারবেন, যাতে আপনি DOM ম্যানিপুলেশন, নেটওয়ার্ক কল, অথবা ইউজার ইন্টারঅ্যাকশন যেমন ক্লিক এবং টাইপিং পরীক্ষার সুযোগ পাবেন।
Puppeteer সেটআপ
Puppeteer ইনস্টলেশন:
Puppeteer ইনস্টল করতে নিচের কমান্ডটি চালান:
npm install puppeteer --save-devJasmineJS এবং Puppeteer কনফিগারেশন:
Puppeteer ব্যবহার করার জন্য JasmineJS এর সাথে একটি সাধারণ কনফিগারেশন তৈরি করা যেতে পারে।
টেস্ট কোড উদাহরণ:
নিচে একটি সাধারণ উদাহরণ দেওয়া হল যেখানে Puppeteer ব্যবহার করে JasmineJS এর টেস্ট চালানো হয়েছে:
const puppeteer = require('puppeteer'); describe('Headless Browser Test with Puppeteer', function() { let browser; let page; beforeAll(async function() { browser = await puppeteer.launch(); // Chromium ব্রাউজার চালু করা page = await browser.newPage(); // নতুন পেজ খুলে নেয়া }); afterAll(async function() { await browser.close(); // টেস্ট শেষে ব্রাউজার বন্ধ }); it('should open a webpage and check title', async function() { await page.goto('https://example.com'); // পেজে যাওয়ার জন্য const title = await page.title(); // পেজের টাইটেল পাওয়া expect(title).toBe('Example Domain'); // টাইটেল চেক করা }); });এখানে:
puppeteer.launch(): Chromium ব্রাউজার চালু করা।page.goto(): একটি ওয়েব পেজে নেভিগেট করা।page.title(): পেজের টাইটেল বের করা।expect(title).toBe('Example Domain'): JasmineJS এর মাধ্যমে টেস্টিং করা।
টেস্ট রান:
এই টেস্ট চালাতে আপনি সাধারণ
npm testবাjasmineকমান্ড ব্যবহার করতে পারেন, যদি JasmineJS কে Puppeteer এর সাথে কনফিগার করা থাকে।
PhantomJS vs Puppeteer
| বৈশিষ্ট্য | PhantomJS | Puppeteer |
|---|---|---|
| ব্রাউজার | WebKit ভিত্তিক হেডলেস ব্রাউজার | Chromium ভিত্তিক হেডলেস ব্রাউজার |
| গতি | দ্রুত, তবে নতুন ব্রাউজার ফিচার সমর্থন কম | খুবই দ্রুত এবং আধুনিক ফিচার সহ |
| ফিচার সমর্থন | কম, আধুনিক JavaScript/DOM ফিচার সমর্থন কম | পূর্ণ সমর্থন, আধুনিক JavaScript এবং DOM ফিচার |
| API | কিছুটা পুরনো, খুবই সীমিত | উন্নত API, DOM ম্যানিপুলেশন, নেটওয়ার্ক ইন্টেগ্রেশন |
| ইনস্টলেশন এবং সেটআপ | সহজ এবং দ্রুত | কিছুটা বড়, তবে খুবই শক্তিশালী |
| ডিবাগিং | সীমিত ডিবাগিং টুলস | উন্নত ডিবাগিং টুলস (DevTools ইন্টিগ্রেশন) |
সারাংশ
Headless Browsers যেমন PhantomJS এবং Puppeteer ব্যবহার করে আপনি JasmineJS এর মাধ্যমে ব্রাউজার-বেসড টেস্টিং করতে পারেন, তবে ভিজ্যুয়াল ইন্টারফেস ছাড়াই।
- PhantomJS: এটি WebKit ইঞ্জিন ব্যবহার করে এবং মূলত দ্রুত, তবে আধুনিক ব্রাউজার ফিচার সমর্থন সীমিত।
- Puppeteer: এটি Chromium ব্রাউজার চালাতে সক্ষম এবং আধুনিক JavaScript এবং DOM ফিচার সহ সমর্থন প্রদান করে, যেমন DOM ম্যানিপুলেশন, নেটওয়ার্ক কল, এবং অ্যাসিঙ্ক্রোনাস টেস্টিং।
আপনার টেস্টিংয়ের প্রয়োজনের ভিত্তিতে আপনি PhantomJS বা Puppeteer যে কোনো একটি ব্যবহার করতে পারেন। Puppeteer আধুনিক ফিচার এবং শক্তিশালী API সহ থাকে, যা অনেক বেশি সুবিধাজনক হতে পারে।
Read more