ইনবক্স কলিশন ছাড়াই React ইনভাইট ইমেল পরীক্ষা করুন
যখন ইনভাইট ফ্লো (invite flows) একটি শেয়ার্ড QA ইনবক্সে উপচে পড়ে, তখন প্রিভিউ এনভায়রনমেন্টগুলো (preview environments) ব্যর্থ হয়।
একজন টেস্টার ভুল লিঙ্কটি ওপেন করেন। অন্যজন একটি পুরনো মেসেজ নিয়ে নেন। এরপর টিম নিয়ে বিতর্ক শুরু হয় যে React কোডটি কি ভেঙে গেছে নাকি ব্যাকএন্ড পুরনো ডেটা পাঠিয়েছে।
আপনাকে মেইলবক্সকে আপনার প্রোডাক্টের একটি অংশ হিসেবে বিবেচনা করতে হবে। যদি আপনার অনবোর্ডিং ইমেলের ওপর নির্ভর করে, তবে আপনার প্রিভিউ এনভায়রনমেন্টের জন্য একটি আইসোলেশন স্ট্র্যাটেজি (isolation strategy) প্রয়োজন। এটি ছাড়া আপনার ফিডব্যাক লুপ ধীর হয়ে যাবে।
প্রিভিউ ব্রাঞ্চগুলোতে সাধারণ ব্যর্থতার ধরণসমূহ:
- ইমেল লিঙ্কটি একটি পুরনো ডিপ্লয়মেন্টের (deployment) দিকে নির্দেশ করে।
- রিট্রাই করা API কলগুলো একজন ইউজারের জন্য দুটি ইনভাইট তৈরি করে।
- UI ইনভাইটটি গ্রহণ করে কিন্তু পুরনো মেম্বারশিপ ডেটা দেখায়।
- অন্য কেউ ব্রাঞ্চটি ভ্যালিডেট করার আগেই একজন টেস্টার টোকেনটি ব্যবহার করে ফেলেন।
শেয়ার্ড ইনবক্সগুলো ফ্ল্যাকি টেস্ট (flaky tests) এবং আস্থার অভাব তৈরি করে।
এটি ঠিক করতে এই সহজ প্রক্রিয়াটি ব্যবহার করুন:
- প্রিভিউ এনভায়রনমেন্টে আসল React অ্যাডমিন স্ক্রিন থেকে ইনভাইটটি তৈরি করুন।
- প্রোডাকশনের মতোই একই ব্যাকএন্ড পাথ, টেমপ্লেট এবং টোকেন লজিক ব্যবহার করুন।
- মেসেজটিকে শুধুমাত্র সেই রানের জন্য তৈরি করা একটি স্বল্পস্থায়ী (short-lived) ইনবক্সে পাঠান।
- ব্রাউজারে লিঙ্কটি ওপেন করুন এবং অ্যাপের স্টেট (state) পরীক্ষা করুন।
দ্রুত ব্রাঞ্চ ভ্যালিডেশনের জন্য ডিসপোজেবল ইমেল জেনারেটরগুলো (disposable email generators) ভালো কাজ করে। এগুলো আপনার ফ্লো-কে সহজ রাখে।
একটি ভালো প্রিভিউ টেস্টে অবশ্যই এই বিষয়গুলো পরীক্ষা করতে হবে:
- ইমেলে সেই ব্রাঞ্চের জন্য সঠিক প্রিভিউ হোস্ট (preview host) রয়েছে কিনা।
- প্রাপকের জন্য কেবল একটি সক্রিয় ইনভাইট লিঙ্ক বিদ্যমান আছে কিনা।
- টোকেনটি সঠিক ওয়ার্কস্পেস (workspace) এবং রোলে (role) পৌঁছাচ্ছে কিনা।
- ম্যানুয়াল রিলোড ছাড়াই React অ্যাপটি অ্যাক্সেস স্টেট আপডেট করছে কিনা।
- ইনভাইট গ্রহণ করার পর দ্বিতীয়বার লিঙ্কে ক্লিক করলে সেটি কাজ করছে না (fail হচ্ছে) কিনা।
ফ্রন্টএন্ড অ্যাসারশন (frontend assertion) ভুলে যাবেন না। ব্যাকএন্ড লগ সফল দেখাতে পারে কিন্তু ক্লায়েন্ট এখনও পেন্ডিং স্টেট দেখাতে পারে। ইউজাররা এটি সাথে সাথে লক্ষ্য করেন।
ইনভাইট তৈরি থেকে চূড়ান্ত অ্যাক্টিভেশন পর্যন্ত একটি কোরিলেশন আইডি (correlation ID) যোগ করলে সময় বাঁচে। এনভায়রনমেন্ট ভেরিয়েবলের কারণে টেমপ্লেটে ভুল হোস্ট ঢুকে পড়েছে কিনা তা খুঁজে পেতে এটি সাহায্য করে।
লক্ষ্য সব জায়গায় ডিসপোজেবল ইনবক্স ব্যবহার করা নয়। লক্ষ্য হলো বাস্তবসম্মত ইনভাইট পাথটিকে (invite path) আইসোলেট করা। এটি প্রোডাকশনে যাওয়ার আগেই রিগ্রেশন (regressions) শনাক্ত করতে সাহায্য করে।
ইনভাইট ফ্লো পরিবর্তনের ওপর আস্থা রাখার আগে এই চেকলিস্টটি ব্যবহার করুন:
- ইমেলটি সঠিক প্রিভিউ ডিপ্লয়মেন্টের সাথে লিঙ্ক করা আছে।
- টোকেনটি সঠিক ওয়ার্কস্পেস এবং রোলের সাথে ম্যাপ করা আছে।
- দ্বিতীয়বার ক্লিক করলে একই টোকেন পুনরায় ব্যবহার করা হচ্ছে না।
- অতিরিক্ত নেভিগেশন ছাড়াই UI-তে গ্রহণ করা স্টেটটি (accepted state) দেখা যাচ্ছে।
- মেইলবক্সটি সহজেই শনাক্ত করা এবং বাদ দেওয়া যাচ্ছে।
