Testing Nodejs Digest Emails Without Inbox Noise

പ്രിവ്യൂ എൻവയോൺമെന്റുകൾ (preview environments) ഒരു പൊതു മെയിൽബോക്സിലേക്ക് സംഗ്രഹങ്ങൾ (summaries) അയക്കുമ്പോൾ ഡൈജസ്റ്റ് ഇമെയിലുകൾ പ്രശ്നങ്ങൾ ഉണ്ടാക്കുന്നു.

ഏത് മെസ്സേജ് ഏത് ബിൽഡിന്റേതാണെന്ന് നിങ്ങൾക്ക് തിരിച്ചറിയാൻ കഴിയില്ല. അൺസബ്‌സ്‌ക്രൈബ് (unsubscribe) ലിങ്ക് നിലവിലുള്ളതാണോ എന്ന് നിങ്ങൾക്ക് മനസ്സിലാക്കാൻ കഴിയില്ല. ടെംപ്ലേറ്റ് ശരിയായ യൂസർ സെഗ്‌മെന്റിന് (user segment) അനുയോജ്യമാണോ എന്ന് പരിശോധിക്കാനും നിങ്ങൾക്ക് സാധിക്കില്ല.

ഡൈജസ്റ്റ് ഇമെയിൽ QA-യെ ഒരു പ്രോഡക്റ്റ് പാത്ത് (product path) ആയി പരിഗണിക്കുക. JavaScript ആപ്പ് ഇവന്റ് ഷെഡ്യൂൾ ചെയ്യുന്നു. Node.js ഉള്ളടക്കം റെൻഡർ ചെയ്യുന്നു. ഇൻബോക്സ് പരിശോധനയിലൂടെ അനുഭവം സ്ഥിരീകരിക്കുന്നു. ഏതെങ്കിലും ഒരു ഭാഗം നിങ്ങൾ ഒഴിവാക്കിയാൽ, നിങ്ങളുടെ ടെസ്റ്റുകൾ വേഗത്തിൽ പാസ്സാകുമെങ്കിലും അവ നിങ്ങൾക്ക് ശരിയായ വിവരങ്ങൾ നൽകില്ല.

പല ടീമുകളും ടെംപ്ലേറ്റുകൾ ലോക്കലായി റെൻഡർ ചെയ്യുകയും HTML സ്നാപ്പ്ഷോട്ട് എടുക്കുകയും ചെയ്യുന്നു. ഇത് വായനക്കാരന് ലഭിക്കുന്ന യഥാർത്ഥ മെസ്സേജ് ശരിയാണെന്ന് തെളിയിക്കുന്നില്ല.

ഒരു മെയിൽബോക്സ് വീണ്ടും ഉപയോഗിക്കുന്നത് മൂലമാണ് ഈ ബഹളം ഉണ്ടാകുന്നത്. തിങ്കളാഴ്ചത്തെ ഡൈജസ്റ്റ് ചൊവ്വാഴ്ചത്തെ റീട്രൈയ്‌ക്ക് (retry) അടുത്തായി ഇരിക്കുന്നു. ഒരു ടീം അംഗം തെറ്റായ മെസ്സേജിലെ ലിങ്കിൽ ക്ലിക്ക് ചെയ്തേക്കാം. നിങ്ങളുടെ ടെസ്റ്റ് വിജയിച്ചതായി കാണിക്കുമെങ്കിലും (green), നിങ്ങളുടെ റിവ്യൂ ട്രയൽ (review trail) കുഴപ്പത്തിലായിരിക്കും.

ഈ ലളിതമായ ലൂപ്പ് ഉപയോഗിക്കുക:

  • ഒരു ബ്രൗസർ ടെസ്റ്റ് അറിയപ്പെടുന്ന ഒരു യൂസർ സെഗ്‌മെന്റിനായി ഡൈജസ്റ്റ് സാഹചര്യം (scenario) ട്രിഗർ ചെയ്യുന്നു.
  • യഥാർത്ഥ സ്റ്റേജിംഗ് ഡാറ്റ (staging data) ഉപയോഗിച്ച് Node.js ഡൈജസ്റ്റ് നിർമ്മിക്കുന്നു.
  • ആ പ്രത്യേക റണ്ണിനായി ടെസ്റ്റ് ഒരു ഐസൊലേറ്റഡ് (isolated) ഇൻബോക്സ് ഉപയോഗിക്കുന്നു.
  • റണ്ണർ ഡൈജസ്റ്റ് തുറക്കുകയും സമ്മറി ബ്ലോക്കുകൾ പരിശോധിക്കുകയും ചെയ്യുന്നു.
  • ലിങ്കുകൾ പ്രതീക്ഷിച്ച ഹോസ്റ്റിലേക്കും ക്യാമ്പയിൻ പാരാമീറ്ററുകളിലേക്കും (campaign params) വിരൽ ചൂണ്ടുന്നുണ്ടോ എന്ന് ടെസ്റ്റ് പരിശോധിക്കുന്നു.

ഇമെയിൽ വിലാസങ്ങളെ ഡിസ്പോസബിൾ ഇൻഫ്രാസ്ട്രക്ചർ (disposable infrastructure) ആയി പരിഗണിക്കുക. ഓരോ സാഹചര്യത്തിനും താൽക്കാലിക മെയിൽ ഉപയോഗിക്കുക. ഇത് ഒരു ഫ്ലേക്കി ജോബ് (flaky job) അടുത്ത ജോബിനെ നശിപ്പിക്കുന്നത് തടയുന്നു.

"മെസ്സേജ് എത്തി" എന്നതിൽ മാത്രം ഒതുങ്ങരുത്. ഒരു നല്ല ടെസ്റ്റ് ഈ കാര്യങ്ങൾ പരിശോധിക്കുന്നു:

  • ശരിയായ സെഗ്‌മെന്റിനായി ജോബ് ഒരു ഡൈജസ്റ്റ് എൻക്യൂ (enqueue) ചെയ്യുന്നു.
  • സബ്ജക്ട് ലൈനിൽ ശരിയായ തീയതി കാണിക്കുന്നു.
  • പ്രീഹെഡർ (preheader) നിലവിലെ ഫീച്ചർ ഫ്ലാഗുകളുമായി (feature flags) പൊരുത്തപ്പെടുന്നു.
  • ലിങ്കുകൾ പ്രതീക്ഷിച്ച ഹോസ്റ്റും UTM ടാഗുകളും ഉപയോഗിക്കുന്നു.
  • അൺസബ്‌സ്‌ക്രൈബ് ലിങ്കുകൾ ശരിയായ എൻവയോൺമെന്റിലേക്ക് എത്തിക്കുന്നു.
  • ഒരേ യൂസർക്ക് ഡ്യൂപ്ലിക്കേറ്റ് ഡൈജസ്റ്റുകൾ ലഭിക്കുന്നില്ല.

ഈ മൂന്ന് തെറ്റുകൾ ഒഴിവാക്കുക:

  1. CI, പ്രിവ്യൂ ബിൽഡുകൾ, മാനുവൽ QA എന്നിവയ്ക്കിടയിൽ ഒരു മെയിൽബോക്സ് പങ്കിടുന്നത്.
  2. റെൻഡർ ചെയ്ത HTML-നെ അന്തിമ ലക്ഷ്യമായി കാണുന്നത്.
  3. ഉപയോഗശൂന്യമായ ടെസ്റ്റ് അക്കൗണ്ടുകൾ ക്ലീൻ ചെയ്യാൻ മറക്കുന്നത്.

നിങ്ങളുടെ ചെക്ക്‌ലിസ്റ്റ് ചെറുതാക്കി വെക്കുക, അങ്ങനെ നിങ്ങൾക്ക് അത് ഇടയ്ക്കിടെ പ്രവർത്തിപ്പിക്കാൻ കഴിയും. ഐസൊലേഷൻ (Isolation) നിങ്ങളുടെ ഫലങ്ങൾ വ്യക്തമായിരിക്കാനും പ്രശ്നങ്ങൾ വേഗത്തിൽ പരിഹരിക്കാനും സഹായിക്കുന്നു.

Source: https://dev.to/ryanlee91/how-i-test-nodejs-digest-emails-without-shared-inbox-noise-54fh