PhantomJS একটি headless web browser যা স্ক্রিপ্টিং এবং ওয়েব পেজের স্ক্রিনশট, রেন্ডারিং, এবং টেস্টিংয়ের জন্য ব্যবহৃত হয়। এটি একটি command-line tool যা WebKit ব্রাউজার ইঞ্জিনের ওপর ভিত্তি করে তৈরি এবং ব্রাউজারের UI ছাড়া কোড চালানোর জন্য ব্যবহৃত হয়। PhantomJS ওয়েব পেজগুলির স্ক্রিনশট নেওয়া, unit testing, integration testing, এবং বিভিন্ন ওয়েব পেজের স্ক্রিপ্ট এবং কন্টেন্ট পরীক্ষা করার জন্য ব্যাপকভাবে ব্যবহৃত হয়।
PhantomJS এর Automated Unit এবং Integration Testing
PhantomJS একটি খুবই শক্তিশালী টুল যখন আপনি unit testing এবং integration testing করতে চান। এটি ওয়েব পেজের লোডিং, ইন্টারঅ্যাকশন, এবং অন্যান্য কার্যক্রমের উপর পরীক্ষা চালাতে পারে। এখানে আমরা দেখব কিভাবে PhantomJS এর মাধ্যমে ওয়েব অ্যাপ্লিকেশন বা ওয়েব সাইটের টেস্টিং করা যায়।
1. PhantomJS Setup for Testing
PhantomJS সেটআপ করার জন্য আপনাকে প্রথমে এটি ইনস্টল করতে হবে। PhantomJS সাধারণত Node.js এর সাথে কাজ করে, কিন্তু এটি CLI (Command Line Interface) হিসেবে ব্যবহৃত হয়।
Step 1: PhantomJS ইনস্টল করা
Install PhantomJS via NPM:
npm install phantomjs --save-devInstall PhantomJS Globally: যদি আপনি PhantomJS কে সারা প্রকল্পে ব্যবহার করতে চান, তাহলে এটি গ্লোবালি ইনস্টল করতে পারেন:
npm install -g phantomjsVerify Installation:
PhantomJS ইনস্টল হয়ে গেলে, আপনি নিচের কমান্ডটি চালিয়ে নিশ্চিত করতে পারেন:
phantomjs --version
2. PhantomJS এর সাথে Unit Testing
PhantomJS এর মাধ্যমে unit testing করার জন্য আমরা সাধারণত Mocha এবং Chai এর মতো টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করি। এর মাধ্যমে JavaScript কোডের লজিক এবং ফাংশনগুলির সঠিকতা পরীক্ষা করা সম্ভব।
Example: Unit Testing with PhantomJS, Mocha, and Chai
Install Mocha and Chai:
npm install mocha chai --save-devCreate Test Script (exampleTest.js):
var assert = require('chai').assert; var phantom = require('phantom'); describe('PhantomJS Unit Testing', function() { var instance; before(function(done) { phantom.create().then(function(ph) { instance = ph; done(); }); }); it('should load the page', function(done) { instance.createPage().then(function(page) { page.open('http://example.com').then(function(status) { assert.equal(status, 'success'); done(); }); }); }); after(function(done) { instance.exit(); done(); }); });Run Tests with Mocha:
PhantomJS, Mocha এবং Chai ব্যবহার করে টেস্ট রান করতে, এই কমান্ডটি চালান:
mocha exampleTest.js
3. PhantomJS এর সাথে Integration Testing
Integration testing করতে, আপনি PhantomJS ব্যবহার করে পুরো ওয়েব অ্যাপ্লিকেশন বা নির্দিষ্ট ফিচারের মধ্যে একাধিক ফাংশনের ইন্টিগ্রেশন পরীক্ষা করতে পারেন। এটি একটি পুরো পেজ লোড করা, ইন্টারঅ্যাকশন করা এবং আউটপুট চেক করা অন্তর্ভুক্ত করতে পারে।
Example: Integration Testing with PhantomJS
Example Test Script for Form Submission:
এখানে একটি ফর্ম সাবমিট করার স্ক্রিপ্টের পরীক্ষা দেওয়া হলো যেখানে PhantomJS এর মাধ্যমে পেজের ফর্ম পূর্ণ করে তা সাবমিট করা হবে।
var phantom = require('phantom'); var assert = require('chai').assert; describe('Form Submission Test', function() { var instance; before(function(done) { phantom.create().then(function(ph) { instance = ph; done(); }); }); it('should submit form successfully', function(done) { instance.createPage().then(function(page) { page.open('http://example.com/form').then(function(status) { page.evaluate(function() { document.querySelector('#name').value = 'John Doe'; document.querySelector('#email').value = 'john@example.com'; document.querySelector('form').submit(); }).then(function() { page.content.then(function(content) { assert.include(content, 'Thank you for your submission'); done(); }); }); }); }); }); after(function(done) { instance.exit(); done(); }); });Running the Integration Test:
এই টেস্টটিকে চালানোর জন্য আপনি নিচের কমান্ডটি ব্যবহার করবেন:
mocha formTest.js
4. PhantomJS এর মাধ্যমে Browser Automation
PhantomJS এর মাধ্যমে আপনি কেবল টেস্টিংই নয়, browser automation বা ওয়েব সাইটের বিভিন্ন কাজের জন্য স্ক্রিপ্টও চালাতে পারবেন। আপনি এটি ব্যবহার করে form submission, page navigation, এবং UI interactions এর মতো কাজগুলো স্বয়ংক্রিয়ভাবে করতে পারেন।
Example: Automating a Button Click
var phantom = require('phantom');
var assert = require('chai').assert;
describe('Button Click Automation', function() {
var instance;
before(function(done) {
phantom.create().then(function(ph) {
instance = ph;
done();
});
});
it('should click the button successfully', function(done) {
instance.createPage().then(function(page) {
page.open('http://example.com').then(function(status) {
page.evaluate(function() {
document.querySelector('#myButton').click();
}).then(function() {
page.content.then(function(content) {
assert.include(content, 'Button clicked successfully');
done();
});
});
});
});
});
after(function(done) {
instance.exit();
done();
});
});
Advantages of PhantomJS for Automated Testing:
- Headless Browsing:
- PhantomJS একটি headless browser, অর্থাৎ এটি UI ছাড়াই ব্রাউজার চালায়, তাই আপনি তা সার্ভারে বা ডেস্কটপে টেস্টিং করতে পারেন।
- WebKit Rendering:
- PhantomJS WebKit ইঞ্জিন ব্যবহার করে, যা অনেক আধুনিক ব্রাউজারের মতোই পেজ রেন্ডারিং করে। এটি পরীক্ষাগুলির জন্য বেশ সহায়ক।
- Faster Test Execution:
- PhantomJS সাধারণত অন্য ব্রাউজারের চেয়ে দ্রুত, কারণ এটি UI রেন্ডার না করে শুধুমাত্র ডাটা প্রসেস করে।
- Cross-platform:
- PhantomJS প্ল্যাটফর্মের উপর নির্ভরশীল নয় এবং এটি Windows, macOS, Linux সব ধরনের প্ল্যাটফর্মে কাজ করে।
- Extensive Automation Capabilities:
- PhantomJS ব্যবহার করে আপনি ওয়েব সাইটের UI automation, form testing, JavaScript execution, screenshot capturing, PDF generation, এবং আরও অনেক কিছু করতে পারেন।
PhantomJS একটি শক্তিশালী টুল যা automated unit testing এবং integration testing এর জন্য ব্যবহৃত হয়। Web automation এবং headless browser testing এর জন্য এটি আদর্শ, কারণ এটি JavaScript কোডে ব্রাউজারের কার্যক্রম পরীক্ষা করার জন্য অনেক সুবিধা প্রদান করে। PhantomJS এবং Mocha/Chai এর সমন্বয়ে ওয়েব অ্যাপ্লিকেশন এবং ওয়েব পেজের উপর কার্যকরী পরীক্ষা করা সম্ভব হয়, যার মাধ্যমে আপনি সহজে এবং দ্রুত টেস্টিং করতে পারেন।
Read more