ইনবক্সের বিশৃঙ্খলা ছাড়াই Nodejs Digest ইমেল টেস্টিং

প্রিভিউ এনভায়রনমেন্টগুলো যখন একটি শেয়ার্ড মেইলবক্সে সামারি পাঠায়, তখন ডাইজেস্ট ইমেলগুলো সমস্যা সৃষ্টি করে।

কোন মেসেজটি কোন বিল্ডের তা আপনি ট্র্যাক করতে পারবেন না। আনসাবস্ক্রাইব লিঙ্কটি বর্তমান কি না তা আপনি বুঝতে পারবেন না। টেমপ্লেটটি ইউজার সেগমেন্টের সাথে মিলছে কি না তাও আপনি মিস করতে পারেন।

আমি ডাইজেস্ট ইমেল QA-কে একটি প্রোডাক্ট পাথ হিসেবে বিবেচনা করি। JavaScript অ্যাপ ইভেন্টটি শিডিউল করে। Node.js কন্টেন্ট রেন্ডার করে। ইনবক্স চেক চূড়ান্ত অভিজ্ঞতা নিশ্চিত করে।

অনেক টিম এই ভুলগুলো করে:

  • তারা অনেকগুলো রানের জন্য একটি মেইলবক্স পুনরায় ব্যবহার করে। সোমবারের ডাইজেস্ট মঙ্গলবার বিল্ডের পাশে বসে থাকে।
  • তারা অস্থায়ী ইমেল স্ট্রিং সহ পুরনো স্টেজ ডেটার ওপর নির্ভর করে।
  • তারা রেন্ডার করা HTML-কে শেষ ধাপ হিসেবে বিবেচনা করে। লাইভ ডেটা ভুল থাকলেও HTML স্ন্যাপশট পাস হয়ে যায়।

একটি ভালো টেস্ট অবশ্যই পাঠক যে আসল মেসেজটি পান তা প্রমাণ করতে হবে। এর পরিবর্তে এই সহজ লুপটি ব্যবহার করুন:

  • একটি টেস্ট ট্রিগার একটি নির্দিষ্ট ইউজার সেগমেন্টের জন্য ডাইজেস্ট তৈরি করে।
  • Node.js রিয়েল স্টেজ ডেটা ব্যবহার করে ডাইজেস্ট তৈরি করে।
  • টেস্টটি সেই নির্দিষ্ট রানের জন্য একটি আইসোলেটেড ইনবক্স ব্যবহার করে।
  • রানার ডাইজেস্টটি খোলে এবং সামারি ব্লকগুলো চেক করে।
  • টেস্টটি যাচাই করে যে লিঙ্কগুলো সঠিক হোস্ট এবং ক্যাম্পেইন প্যারামিটারের দিকে নির্দেশ করছে কি না।

ইমেল অ্যাড্রেসগুলোকে ডিসপোজেবল ইনফ্রাস্ট্রাকচার হিসেবে বিবেচনা করুন। প্রতিটি সিনারিওর জন্য একটি অস্থায়ী মেইল অ্যাকাউন্ট তৈরি করুন। এটি একটি ফ্ল্যাকি জবকে পরবর্তী জবটি নষ্ট করা থেকে বিরত রাখে।

একটি কার্যকর ডাইজেস্ট টেস্ট এই বিষয়গুলো চেক করে:

  • শিডিউল করা জবটি সঠিক সেগমেন্টের জন্য একটি ডাইজেস্ট এনকিউ (enqueue) করে।
  • সাবজেক্ট লাইনে সঠিক তারিখ দেখায়।
  • প্রিহেডার বর্তমান ফিচার ফ্ল্যাগগুলোর সাথে মিলে যায়।
  • লিঙ্কগুলো সঠিক হোস্ট, UTM ট্যাগ এবং লোকাল (locale) ব্যবহার করে।
  • আনসাবস্ক্রাইব লিঙ্কগুলো সঠিক এনভায়রনমেন্টে নিয়ে যায়।
  • একই ইউজারের জন্য কোনো ডুপ্লিকেট ডাইজেস্ট দেখা যায় না।

CI, প্রিভিউ বিল্ড এবং ম্যানুয়াল QA-এর মধ্যে একটি মেইলবক্স শেয়ার করা বন্ধ করুন। এটি শুরুতে দক্ষ মনে হলেও পরে ফলস পজিটিভ (false positives) তৈরি করে।

আইসোলেশন ফিক্স দ্রুততর করে। যখন একটি ডাইজেস্ট ফেইল করে, তখন আপনি জানেন যে সমস্যাটি শিডিউলার, রেন্ডারার নাকি মেসেজটির নিজের।

উৎস: https://dev.to/ryanlee91/how-i-test-nodejs-digest-emails-without-shared-inbox-noise-54fh