בדיקת אימיילי Digest ב-Node.js ללא רעש בתיבת הדואר הנכנס

אימיילי Digest גורמים לבעיות כאשר סביבות תצוגה מקדימה (preview) שולחות סיכומים לתיבת דואר משותפת אחת.

אתם מאבדים מעקב אחר השאלה איזה הודעה שייכת לאיזה build. אתם לא יכולים לדעת אם קישור ה-unsubscribe מעודכן. אתם עלולים לפספס אם התבנית (template) תואמת למקטע המשתמשים (user segment).

אני מתייחס לבדיקות ה-QA של אימיילי Digest כאל נתיב מוצר (product path). אפליקציית ה-JavaScript מתזמנת את האירוע. Node.js מרנדר את התוכן. הבדיקה בתיבת הדואר מאשרת את החוויה הסופית.

צוותים רבים עושים את הטעויות הבאות:

  • הם משתמשים מחדש בתיבת דואר אחת עבור הרצות רבות. ה-digest של יום שני יושב לצד ה-build של יום שלישי.
  • הם מסתמכים על נתוני staging ישנים עם מחרוזות אימייל זמניות.
  • הם מתייחסים ל-HTML המרונדר כאל קו הסיום. צילומי מצב (snapshots) של ה-HTML עוברים גם כאשר הנתונים החיים (live data) שגויים.

בדיקה טובה חייבת להוכיח שההודעה האמיתית שהקורא מקבל היא תקינה. השתמשו בלולאה הפשוטה הזו במקום:

  • טריגר בדיקה יוצר digest עבור מקטע משתמשים ספציפי.
  • Node.js מייצר את ה-digest באמצעות נתוני staging אמיתיים.
  • הבדיקה משתמשת בתיבת דואר מבודדת אחת עבור אותה הרצה ספציפית.
  • ה-runner פותח את ה-digest ובודק את בלוקי הסיכום.
  • הבדיקה מוודאת שהקישורים מפנים לאחסן (host) הנכון ולפרמטרי הקמפיין המתאימים.

התייחסו לכתובות אימייל כתשתית חד-פעמית (disposable infrastructure). צרו חשבון דואר זמני לכל תרחיש. זה מונע מ-job לא יציב (flaky) להרוס את הבא בתור.

בדיקת digest מועילה בודקת את הפרטים הבאים:

  • המשימה (job) המתוזמנת מכניסה לתור (enqueues) digest אחד עבור המקטע הנכון.
  • שורת הנושא מציגה את התאריך הנכון.
  • ה-preheader תואם ל-feature flags הנוכחיים.
  • הקישורים משתמשים ב-host הנכון, בתגיות UTM וב-locale המתאים.
  • קישורי ה-unsubscribe מובילים לסביבה הנכונה.
  • לא מופיעים digests כפולים עבור אותו משתמש.

הפסיקו לחלוק תיבת דואר אחת בין CI, preview builds ו-QA ידני. זה מרגיש יעיל בהתחלה, אבל זה יוצר false positives מאוחר יותר.

בידוד הופך את התיקונים למהירים יותר. כש-digest נכשל, אתם יודעים אם הבעיה היא במתזמן (scheduler), במרנדר (renderer), או בהודעה עצמה.

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