ഇൻബോക്സ് ബഹളങ്ങളില്ലാതെ Nodejs ഡൈജസ്റ്റ് ഇമെയിലുകൾ ടെസ്റ്റ് ചെയ്യാം
പ്രിവ്യൂ എൻവയോൺമെന്റുകൾ (preview environments) സംഗ്രഹങ്ങൾ ഒരു പൊതു ഇൻബോക്സിലേക്ക് (shared mailbox) അയക്കുമ്പോൾ ഡൈജസ്റ്റ് ഇമെയിലുകൾ പ്രശ്നങ്ങൾ ഉണ്ടാക്കുന്നു.
ഏത് സന്ദേശം ഏത് ബിൽഡിന്റേതാണെന്ന് നിങ്ങൾക്ക് തിരിച്ചറിയാൻ കഴിയില്ല. അൺസബ്സ്ക്രൈബ് (unsubscribe) ലിങ്ക് നിലവിലുള്ളതാണോ എന്ന് നിങ്ങൾക്ക് മനസ്സിലാക്കാൻ കഴിയില്ല. ടെംപ്ലേറ്റ് ഉപയോക്താവിന്റെ വിഭാഗത്തിന് (user segment) അനുയോജ്യമാണോ എന്ന് നിങ്ങൾ ശ്രദ്ധിക്കാതെ പോകാനും സാധ്യതയുണ്ട്.
ഞാൻ ഡൈജസ്റ്റ് ഇമെയിൽ QA-യെ ഒരു പ്രൊഡക്റ്റ് പാത്ത് (product path) ആയിട്ടാണ് കാണുന്നത്. JavaScript ആപ്പ് ഇവന്റ് ഷെഡ്യൂൾ ചെയ്യുന്നു. Node.js ഉള്ളടക്കം റെൻഡർ (render) ചെയ്യുന്നു. ഇൻബോക്സ് പരിശോധനയിലൂടെ അന്തിമ അനുഭവം (final experience) ഉറപ്പാക്കുന്നു.
പല ടീമുകളും ഈ തെറ്റുകൾ വരുത്താറുണ്ട്:
- അവർ പല തവണ ഉപയോഗിക്കുന്നതിനായി ഒരേ ഇൻബോക്സ് തന്നെ വീണ്ടും ഉപയോഗിക്കുന്നു. തിങ്കളാഴ്ചത്തെ ഡൈജസ്റ്റ് ചൊവ്വാഴ്ചത്തെ ബിൽഡിന് തൊട്ടടുത്ത് ഇരിക്കുന്നു.
- താൽക്കാലിക ഇമെയിൽ സ്ട്രിംഗുകളുള്ള പഴയ സ്റ്റേജിംഗ് ഡാറ്റയെ അവർ ആശ്രയിക്കുന്നു.
- റെൻഡർ ചെയ്ത HTML ആണ് അവസാന ഘട്ടം എന്ന് അവർ കരുതുന്നു. ലൈവ് ഡാറ്റ തെറ്റാണെങ്കിൽ പോലും HTML സ്നാപ്പ്ഷോട്ടുകൾ വിജയിച്ചതായി കാണിക്കുന്നു.
ഒരു നല്ല ടെസ്റ്റ്, വായനക്കാരന് ലഭിക്കുന്ന യഥാർത്ഥ സന്ദേശം തന്നെ തെളിയിക്കണം. പകരം ഈ ലളിതമായ ലൂപ്പ് (loop) ഉപയോഗിക്കുക:
- ഒരു ടെസ്റ്റ് ട്രിഗർ ഒരു പ്രത്യേക യൂസർ സെഗ്മെന്റിനായി ഡൈജസ്റ്റ് നിർമ്മിക്കുന്നു.
- യഥാർത്ഥ സ്റ്റേജിംഗ് ഡാറ്റ ഉപയോഗിച്ച് Node.js ഡൈജസ്റ്റ് തയ്യാറാക്കുന്നു.
- ആ പ്രത്യേക റണ്ണിനായി ടെസ്റ്റ് ഒരു ഐസൊലേറ്റഡ് (isolated) ഇൻബോക്സ് ഉപയോഗിക്കുന്നു.
- റണ്ണർ ഡൈജസ്റ്റ് തുറന്ന് സമ്മറി ബ്ലോക്കുകൾ പരിശോധിക്കുന്നു.
- ലിങ്കുകൾ ശരിയായ ഹോസ്റ്റിലേക്കും ക്യാമ്പയിൻ പാരാമീറ്ററുകളിലേക്കും (campaign parameters) വിരൽ ചൂണ്ടുന്നുണ്ടെന്ന് ടെസ്റ്റ് പരിശോധിക്കുന്നു.
ഇമെയിൽ വിലാസങ്ങളെ ഡിസ്പോസബിൾ ഇൻഫ്രാസ്ട്രക്ചർ (disposable infrastructure) ആയി പരിഗണിക്കുക. ഓരോ സാഹചര്യത്തിനും (scenario) ഒരു താൽക്കാലിക മെയിൽ അക്കൗണ്ട് നിർമ്മിക്കുക. ഇത് ഒരു പരാജയപ്പെട്ട ജോബ് അടുത്ത ജോബിനെ ബാധിക്കുന്നത് തടയുന്നു.
ഉപയോഗപ്രദമായ ഒരു ഡൈജസ്റ്റ് ടെസ്റ്റ് ഈ കാര്യങ്ങൾ പരിശോധിക്കുന്നു:
- ഷെഡ്യൂൾ ചെയ്ത ജോബ് ശരിയായ സെഗ്മെന്റിനായി ഒരു ഡൈജസ്റ്റ് എൻക്യൂ (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
