Skip to Content
Living documentation — last reviewed 2026-05-28
FeaturesNotificationsNotifications — QA Plan

Notifications — QA Plan

1. Cron gating

#ScenarioExpected
1.1Dev env, CRONS_ENABLED=falseCron methods early-return
1.2Prod env, enabledJob runs

2. Class reminders

#ScenarioExpected
2.15 confirmed bookings for a class tomorrow at 09:005 emails sent at the 08:00 UTC tick
2.2Class in 18h (outside 20–28h window)No emails
2.3Class in 30hNo emails
2.4Cancelled bookingNo email
2.5Member with missing first name”Hi there” fallback used in template
2.6Class has no locationTemplate omits location section
2.7Resend rate-limited / errorOther recipients still get sent; failure count logged
2.8Cron re-runs (same window)Recipients receive duplicate — known behavior; document

3. Expiration warnings

#ScenarioExpected
3.1Subscription expires in 7 daysEmail sent at 09:00 UTC
3.2Subscription expires in 5 daysNo email (outside window)
3.3Subscription status='cancelled'No email

4. Cancellation notifications

#ScenarioExpected
4.1Member cancels bookingCancellation email sent immediately (not cron’d)
4.2Staff cancels session — fans out to all booked membersOne email each

5. Test mode

#ScenarioExpected
5.1Spec calls EmailService.sendNo network call; entry recorded in in-memory log
5.2getSentEmails() returns entriesSpec assertions pass

6. Localization

#ScenarioExpected
6.1Hebrew member receives class reminderKnown gap — template renders in English. Flag for fix.

7. Smoke

  • Manually trigger reminder cron (or stub time) → email lands in test inbox.
  • Resend dashboard shows the send.
  • Cancellation flow triggers an email immediately.