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