Contract
Organizer configures the arrival greeting.
The template has merge tokens, a per-event enable toggle, opt-out copy, and a test-send preview.
Staff checks in a guest.
The day-of check-in commit emits one arrival greeting job after the check-in is durable.
Telemetry closes the loop.
Queued, sent, delivered, failed, and suppressed states are visible on the event-day surface.
Failure modes
Day-of rubric
This story uses the day-of cluster: offline graceful queueing, two-staff idempotency, tampered QR anti-probing, network flaky behavior, already checked-in handling, wrong-event payload isolation, opt-out suppression, and visible gap state.
Stable test attributes
Visibility teeth. The active trigger and delivery UI must be visible when expected; hiding a placeholder does not satisfy the gap probe.
| data-test | Where | Purpose |
|---|---|---|
arrival-sms-gap-panel | Arrival SMS settings | Absent capability marker |
arrival-sms-settings-form | Arrival SMS settings | Template form |
arrival-sms-enable-toggle | Arrival SMS settings | Per-event enable |
arrival-sms-template-body | Arrival SMS settings | Greeting body |
arrival-sms-test-send-cta | Arrival SMS settings | Test send |
arrival-sms-token-error | Arrival SMS settings | Token validation |
arrival-sms-optout-panel | Arrival SMS settings | Opt-out state |
arrival-sms-delivery-table | Day-of reports | Delivery telemetry |
scan-confirm-checkin-cta | Check-in confirmation | Trigger source |
scan-success | Check-in confirmation | Committed check-in |
kiosk-offline-banner | Day-of shell | Offline queue indicator |
scan-invalid-qr | Scanner | Anti-probing message |
Agent test plan
- arrival-sms-gap-panel-visible
- configure-arrival-template
- checkin-enqueues-one-sms
- offline-queues-arrival-sms
- two-staff-checkin-sends-once
- tampered-payload-no-sms
- optout-suppresses
- delivery-telemetry-visible