인박스 노이즈 없이 Node.js Digest 이메일 테스트하기
프리뷰 환경에서 요약본을 하나의 공유 메일함으로 보내면 Digest 이메일은 문제를 일으킵니다.
어떤 메시지가 어떤 빌드에 속하는지 파악하기 어려워집니다. 수신 거부 링크가 최신인지 확인할 수 없습니다. 템플릿이 사용자 세그먼트와 일치하는지 놓칠 수도 있습니다.
저는 Digest 이메일 QA를 하나의 제품 경로로 취급합니다. JavaScript 앱이 이벤트를 예약하고, Node.js가 콘텐츠를 렌더링하며, 인박스 확인을 통해 최종 사용자 경험을 검증합니다.
많은 팀이 다음과 같은 실수를 저지릅니다:
- 하나의 메일함을 여러 실행에 재사용합니다. 월요일의 Digest가 화요일 빌드 옆에 쌓이게 됩니다.
- 임시 이메일 문자열이 포함된 오래된 스테이징 데이터에 의존합니다.
- 렌더링된 HTML을 최종 결과물로 간주합니다. 실제 데이터가 잘못되었더라도 HTML 스냅샷은 통과될 수 있습니다.
좋은 테스트는 독자가 실제로 받는 메시지를 증명해야 합니다. 대신 다음과 같은 간단한 루프를 사용하세요:
- 테스트 트리거가 특정 사용자 세그먼트에 대한 Digest를 생성합니다.
- Node.js가 실제 스테이징 데이터를 사용하여 Digest를 생성합니다.
- 테스트는 해당 실행을 위해 격리된 하나의 인박스를 사용합니다.
- 러너(runner)가 Digest를 열고 요약 블록을 확인합니다.
- 테스트는 링크가 올바른 호스트와 캠페인 파라미터를 가리키는지 검증합니다.
이메일 주소를 일회용 인프라로 취급하세요. 시나리오마다 임시 메일 계정을 생성하십시오. 이렇게 하면 하나의 불안정한(flaky) 작업이 다음 작업까지 망치는 것을 방지할 수 있습니다.
유용한 Digest 테스트는 다음 세부 사항을 확인합니다:
- 예약된 작업이 올바른 세그먼트에 대해 하나의 Digest를 큐에 넣습니다.
- 제목 줄에 올바른 날짜가 표시됩니다.
- 프리헤더(preheader)가 현재의 피처 플래그(feature flags)와 일치합니다.
- 링크가 올바른 호스트, UTM 태그 및 로캘(locale)을 사용합니다.
- 수신 거부 링크가 올바른 환경으로 연결됩니다.
- 동일한 사용자에 대해 중복된 Digest가 나타나지 않습니다.
CI, 프리뷰 빌드, 수동 QA 간에 하나의 메일함을 공유하는 것을 중단하십시오. 처음에는 효율적으로 느껴질 수 있지만, 나중에 오탐(false positives)을 발생시킵니다.
격리는 수정 작업을 더 빠르게 만듭니다. Digest가 실패했을 때, 문제가 스케줄러인지, 렌더러인지, 아니면 메시지 자체인지 즉시 알 수 있습니다.
출처: https://dev.to/ryanlee91/how-i-test-nodejs-digest-emails-without-shared-inbox-noise-54fh
