Testing Nodejs Digest Emails Without Inbox Noise
ڈائجسٹ ای میلز اس وقت مسائل پیدا کرتی ہیں جب پری ویو (preview) ماحول ایک ہی مشترکہ میل باکس پر خلاصے بھیجتے ہیں۔
آپ اس بات کا سراغ کھو دیتے ہیں کہ کون سا پیغام کس بلڈ (build) سے متعلق ہے۔ آپ یہ نہیں بتا سکتے کہ آیا ان سبسکرائب (unsubscribe) لنک تازہ ترین ہے یا نہیں۔ آپ یہ بھی نظر انداز کر سکتے ہیں کہ آیا ٹیمپلیٹ صارف کے سیگمنٹ (user segment) کے مطابق ہے یا نہیں۔
میں ڈائجسٹ ای میل QA کو ایک پروڈکٹ پاتھ (product path) کے طور پر لیتا ہوں۔ JavaScript ایپ ایونٹ کو شیڈول کرتی ہے۔ Node.js مواد کو رینڈر (render) کرتا ہے۔ ان باکس کی جانچ حتمی تجربے کی تصدیق کرتی ہے۔
بہت سی ٹیمیں یہ غلطیاں کرتی ہیں:
- وہ بہت سے رنز (runs) کے لیے ایک ہی میل باکس کا دوبارہ استعمال کرتے ہیں۔ پیر کا ڈائجسٹ منگل کے بلڈ کے ساتھ پڑا ہوتا ہے۔
- وہ عارضی ای میل اسٹرنگز والے پرانے اسٹیجنگ ڈیٹا (staging data) پر بھروسہ کرتے ہیں۔
- وہ رینڈر شدہ HTML کو آخری مرحلہ سمجھتے ہیں۔ HTML اسنیپ شاٹس (snapshots) تب بھی پاس ہو جاتے ہیں جب لائیو ڈیٹا غلط ہو۔
ایک اچھے ٹیسٹ کو اس بات کا ثبوت دینا چاہیے کہ قاری کو اصل پیغام کیا موصول ہوتا ہے۔ اس کے بجائے اس سادہ لوپ (loop) کا استعمال کریں:
- ایک ٹیسٹ ٹرگر ایک مخصوص صارف سیگمنٹ کے لیے ڈائجسٹ تخلیق کرتا ہے۔
- Node.js اصل اسٹیجنگ ڈیٹا کا استعمال کرتے ہوئے ڈائجسٹ تیار کرتا ہے۔
- ٹیسٹ اس مخصوص رن کے لیے ایک الگ ان باکس استعمال کرتا ہے۔
- رنر ڈائجسٹ کو کھولتا ہے اور خلاصے کے بلاکس (summary blocks) کو چیک کرتا ہے۔
- ٹیسٹ اس بات کی تصدیق کرتا ہے کہ لنکس درست ہوسٹ اور مہم کے پیرامیٹرز (campaign parameters) کی طرف اشارہ کرتے ہیں۔
ای میل ایڈریسز کو ڈسپوزایبل انفراسٹرکچر (disposable infrastructure) کے طور پر لیں۔ ہر منظر نامے (scenario) کے لیے ایک عارضی میل اکاؤنٹ بنائیں۔ یہ ایک غیر مستحکم (flaky) جاب کو اگلی جاب خراب کرنے سے روکتا ہے۔
ایک مفید ڈائجسٹ ٹیسٹ ان تفصیلات کو چیک کرتا ہے:
- شیڈول شدہ جاب درست سیگمنٹ کے لیے ایک ڈائجسٹ کو انکیو (enqueue) کرتی ہے۔
- سبجیکٹ لائن درست تاریخ دکھاتی ہے۔
- پری ہیڈر (preheader) موجودہ فیچر فلیگز (feature flags) سے مطابقت رکھتا ہے۔
- لنکس درست ہوسٹ، UTM ٹیگز، اور لوکیل (locale) استعمال کرتے ہیں۔
- ان سبسکرائب لنکس درست ماحول (environment) پر لے جاتے ہیں۔
- ایک ہی صارف کے لیے کوئی ڈپلیکیٹ ڈائجسٹ ظاہر نہیں ہوتا۔
CI، پری ویو بلڈز، اور دستی (manual) QA کے درمیان ایک ہی میل باکس شیئر کرنا بند کریں۔ یہ شروع میں موثر لگتا ہے، لیکن بعد میں یہ غلط نتائج (false positives) پیدا کرتا ہے۔
علیحدگی (Isolation) اصلاحات کو تیز بناتی ہے۔ جب کوئی ڈائجسٹ فیل ہوتا ہے، تو آپ کو معلوم ہوتا ہے کہ مسئلہ شیڈولر (scheduler)، رینڈرر (renderer)، یا خود پیغام میں ہے۔
Source: https://dev.to/ryanlee91/how-i-test-nodejs-digest-emails-without-shared-inbox-noise-54fh
