ক্রোম এক্সটেনশনের জন্য এন্ড-টু-এন্ড টেস্টিং

এন্ড-টু-এন্ড টেস্টিংয়ের জন্য একটি এক্সটেনশন প্যাকেজ তৈরি করে ব্রাউজারে লোড করা হয়। একটি টেস্টিং টুল ব্রাউজারের সাথে যোগাযোগ করে ইন্টারঅ্যাকশন স্বয়ংক্রিয় করে এবং ব্যবহারকারী যে প্রবাহের মধ্য দিয়ে যাবেন তা পরীক্ষা করে। এন্ড-টু-এন্ড টেস্টিং সমর্থন করে এমন একটি লাইব্রেরি সাধারণত ব্রাউজার নিয়ন্ত্রণ, ব্যবহারকারীর ইনপুট সিমুলেট করার এবং যেকোনো খোলা পৃষ্ঠার বর্তমান অবস্থা পর্যবেক্ষণ করার উপায় প্রদান করবে।

টিউটোরিয়ালের জন্য "Testing Chrome Extensions with Puppeteer" এবং Chrome এক্সটেনশনের জন্য ইউনিট পরীক্ষা লেখার বিশদ বিবরণের জন্য "Unit testing" দেখুন।

ব্রাউজার টেস্টিং লাইব্রেরি ব্যবহার করা

এক্সটেনশনগুলি বিভিন্ন ধরণের টেস্টিং লাইব্রেরি দ্বারা সমর্থিত।

লাইব্রেরি নির্দেশনা
পাপেটিয়ার / নাট্যকার Chrome এক্সটেনশনগুলি দেখুন ( পাপেটিয়ার / নাট্যকার )।
সেলেনিয়াম এক্সটেনশন লোড করতে ChromeOptions অবজেক্ট ব্যবহার করুন। আরও তথ্য এখানে পাওয়া যাবে।
ওয়েবড্রাইভারআইও ওয়েব এক্সটেনশন টেস্টিং দেখুন।

হেডলেস ক্রোমে পরীক্ষা চালানো হচ্ছে

When running tests as part of an automated workflow, it is often necessary to load your extension on a machine that does not have a screen. Chrome's new headless mode allows Chrome to be run in an unattended environment like this. Start Chrome using the --headless=new flag (headless currently defaults to "old", which does not support loading extensions). Depending on the automation tool you choose, there may be a setting that adds the flag for you automatically.

একটি এক্সটেনশন আইডি সেট করা হচ্ছে

পরীক্ষাগুলিতে একটি নির্দিষ্ট এক্সটেনশন আইডি থাকা প্রায়শই বাঞ্ছনীয়। এটি অনেক সাধারণ কাজকে সহজ করে তোলে যেমন এক্সটেনশনের উৎসকে এমন একটি সার্ভারে তালিকাভুক্ত করা যার সাথে এটি যোগাযোগ করতে হবে, অথবা পরীক্ষাগুলির মধ্যে এক্সটেনশন পৃষ্ঠাগুলি খোলা। এটি করার জন্য, একটি সামঞ্জস্যপূর্ণ এক্সটেনশন আইডি রাখা এর অধীনে পদক্ষেপগুলি অনুসরণ করুন।

এক্সটেনশন পৃষ্ঠাগুলি পরীক্ষা করা হচ্ছে

এক্সটেনশন পৃষ্ঠাগুলি তাদের সংশ্লিষ্ট URL ব্যবহার করে অ্যাক্সেস করা যেতে পারে, যেমন chrome-extension://<id>/index.html । এই URLগুলিতে নেভিগেট করার জন্য আপনার পছন্দের অটোমেশন টুলে উপলব্ধ সাধারণ নেভিগেশন পদ্ধতিগুলি ব্যবহার করুন।

একটি এক্সটেনশন পপআপ পরীক্ষা করা হচ্ছে

কিছু লাইব্রেরির সাহায্যে, আপনি action.openPopup() API ব্যবহার করে পপআপ খুলতে সক্ষম হতে পারেন এবং তারপর নতুন প্রসঙ্গের একটি রেফারেন্স পেতে পারেন। উদাহরণস্বরূপ, Puppeteer তাদের Chrome Extensions গাইডে এটি কীভাবে করবেন তা নথিভুক্ত করে।

যদি আপনার পছন্দের লাইব্রেরিতে এটি সম্ভব না হয়, তাহলে পপআপের URLটি একটি নতুন ট্যাবে খুলুন। যদি আপনার পপআপটি সক্রিয় ট্যাব ব্যবহার করে, তাহলে একটি ওভাররাইড বাস্তবায়নের কথা বিবেচনা করুন যেখানে একটি ট্যাব আইডি স্পষ্টভাবে আপনার পপআপে পাস করা যেতে পারে। উদাহরণস্বরূপ:

const URL_PARAMS = new URLSearchParams(window.location.search);

async function getActiveTab() {
  // Open popup.html?tab=5 to use tab ID 5, etc.
  if (URL_PARAMS.has("tab")) {
    return await chrome.tabs.get(parseInt(URL_PARAMS.get("tab")));
  }

  const tabs = await chrome.tabs.query({
    active: true,
    currentWindow: true
  });

  return tabs[0];
}

এক্সটেনশনের অবস্থা পরীক্ষা করা হচ্ছে

To avoid test failures when you change the internal behavior of your extension, it is generally best practice to avoid accessing internal state in an integration test. Instead, you should base your tests on what is visible to the user. However, it can sometimes be desirable to directly access data from the extension. In these cases, consider executing code in the context of an extension page.

পাপেটিয়ারে:

const workerTarget = await browser.waitForTarget(
  target => target.type() === 'service_worker'
);
const worker = await workerTarget.worker();

const value = await worker.evaluate(() => {
  chrome.storage.local.get('foo');
});

সেলেনিয়ামে:

// Selenium doesn't allow us to access the service worker, so we need to open an extension page where we can execute the code
await driver.get('chrome-extension://<id>/popup.html');
await driver.executeAsyncScript(
  'const callback = arguments[arguments.length - 1];' +
  'chrome.storage.local.get(\'foo\').then(callback);'
);

পরীক্ষামূলক পরিষেবা কর্মীর বরখাস্ত

টেস্টিং সার্ভিস ওয়ার্কার টার্মিনেশন সম্পর্কে জানতে, Puppeteer এর সাথে টেস্টিং সার্ভিস ওয়ার্কার টার্মিনেশন দেখুন। আমাদের কাছে Puppeteer এবং Selenium এর জন্য একটি নমুনাও রয়েছে।

মনে রাখবেন যে কিছু টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করার সময়, পরিষেবা কর্মীরা স্বাভাবিক ব্যবহারের মতো স্বয়ংক্রিয়ভাবে বন্ধ নাও হতে পারে। সেলেনিয়ামের ক্ষেত্রে এটি প্রযোজ্য। এটি ChromeDriver-এর উপর নির্ভর করে যা সমস্ত পরিষেবা কর্মীদের সাথে একটি ডিবাগার সংযুক্ত করে তাদের বন্ধ করা থেকে বিরত রাখে।