Testing Nodejs Digest Emails Without Inbox Noise
डाइजेस्ट ईमेल तब समस्या पैदा करते हैं जब प्रिव्यू एनवायरनमेंट (preview environments) एक ही साझा मेलबॉक्स में सारांश भेजते हैं।
आप इस बात का ट्रैक खो देते हैं कि कौन सा संदेश किस बिल्ड (build) का है। आप यह नहीं बता सकते कि अनसब्सक्राइब लिंक (unsubscribe link) वर्तमान है या नहीं। आप यह भी मिस कर सकते हैं कि टेम्पलेट यूजर सेगमेंट (user segment) से मेल खाता है या नहीं।
मैं डाइजेस्ट ईमेल QA को एक प्रोडक्ट पाथ (product path) की तरह मानता हूँ। JavaScript ऐप इवेंट को शेड्यूल करता है। Node.js कंटेंट को रेंडर (render) करता है। इनबॉक्स चेक अंतिम अनुभव की पुष्टि करता है।
कई टीमें ये गलतियाँ करती हैं:
- वे कई रन के लिए एक ही मेलबॉक्स का पुन: उपयोग करते हैं। सोमवार का डाइजेस्ट मंगलवार के बिल्ड के बगल में पड़ा रहता है।
- वे अस्थायी ईमेल स्ट्रिंग्स वाले पुराने स्टेजिंग डेटा (staging data) पर भरोसा करते हैं।
- वे रेंडर किए गए HTML को ही अंतिम लक्ष्य मान लेते हैं। HTML स्नैपशॉट तब भी पास हो जाते हैं जब लाइव डेटा गलत होता है।
एक अच्छे टेस्ट को यह साबित करना चाहिए कि पाठक को वास्तव में क्या संदेश प्राप्त हो रहा है। इसके बजाय इस सरल लूप (loop) का उपयोग करें:
- एक टेस्ट ट्रिगर एक विशिष्ट यूजर सेगमेंट के लिए डाइजेस्ट बनाता है।
- Node.js वास्तविक स्टेजिंग डेटा का उपयोग करके डाइजेस्ट जनरेट करता है।
- टेस्ट उस विशिष्ट रन के लिए एक अलग (isolated) इनबॉक्स का उपयोग करता है।
- रनर डाइजेस्ट खोलता है और समरी ब्लॉक्स (summary blocks) की जाँच करता है।
- टेस्ट यह सत्यापित करता है कि लिंक सही होस्ट और कैंपेन पैरामीटर्स (campaign parameters) की ओर इशारा करते हैं।
ईमेल एड्रेस को डिस्पोजेबल इंफ्रास्ट्रक्चर (disposable infrastructure) की तरह मानें। प्रत्येक परिदृश्य (scenario) के लिए एक अस्थायी मेल अकाउंट बनाएं। यह एक फ्लैकी जॉब (flaky job) को अगले जॉब को खराब करने से रोकता है।
एक उपयोगी डाइजेस्ट टेस्ट इन विवरणों की जाँच करता है:
- शेड्यूल्ड जॉब सही सेगमेंट के लिए एक डाइजेस्ट को एनक्यू (enqueue) करता है।
- सब्जेक्ट लाइन सही तारीख दिखाती है।
- प्रीहेडर (preheader) वर्तमान फीचर फ्लैग्स (feature flags) से मेल खाता है।
- लिंक सही होस्ट, UTM टैग और लोकैलिटी (locale) का उपयोग करते हैं।
- अनसब्सक्राइब लिंक सही एनवायरनमेंट पर ले जाते हैं।
- एक ही यूजर के लिए कोई डुप्लिकेट डाइजेस्ट दिखाई नहीं देता है।
CI, प्रिव्यू बिल्ड्स और मैनुअल QA के बीच एक ही मेलबॉक्स साझा करना बंद करें। यह शुरू में कुशल लगता है, लेकिन बाद में यह फॉल्स पॉजिटिव (false positives) पैदा करता है।
आइसोलेशन (Isolation) सुधारों को तेज़ बनाता है। जब कोई डाइजेस्ट विफल होता है, तो आपको पता चल जाता है कि समस्या शेड्यूलर (scheduler), रेंडरर (renderer) या स्वयं संदेश में है।
Source: https://dev.to/ryanlee91/how-i-test-nodejs-digest-emails-without-shared-inbox-noise-54fh
