Preconditions
Fixture event has at least one invite access type, three email designs, and a test recipient.
Happy path
Open access-type email association.
The mapping table shows each access type and message slot.
Assign designs.
Invitation, confirmation, and declination slots save independently.
Send association preview.
A single-recipient test proves the selected mapping before lifecycle send.
Failure modes
Send blocked on validation failure
Trigger: association points to an archived design.
Resolution: PUT/test-send returns 400 and sends nothing.
Bounced recipient tracked and suppressed
Trigger: preview recipient bounces.
Resolution: email_events records bounce and suppression blocks later sends.
Scheduled-message edit window
Trigger: associated scheduled lifecycle send is edited too late.
Resolution: 409 PAST_EDIT_WINDOW preserves queued snapshot.
Retry on transient failure
Trigger: lifecycle send gets provider 5xx.
Resolution: same Idempotency-Key is reused and sent_count remains one.
Idempotency-key on test-send
Trigger: organizer double-clicks Test association.
Resolution: one preview email is sent.
Recipient resolution empty
Trigger: association preview targets no matching guest.
Resolution: 409 NO_RECIPIENTS is shown with clear empty-audience copy.
Token rendering fallback
Trigger: associated design has missing guest token.
Resolution: preview uses fallback copy.
Cancel scheduled before send
Trigger: organizer cancels a queued associated mailing.
Resolution: queue drains, reservation is refunded, and audit logs cancellation.
Access-type mismatch
Trigger: invitation design is assigned to a purchase-only access type without required receipt copy.
Resolution: validation blocks the association and explains the missing slot contract.
Concurrent association edit
Trigger: two organizers change the same access-type mapping.
Resolution: stale save is rejected with a conflict and current mapping is reloaded.
Deployed-runtime gap
Trigger: deployed run on 2026-04-29 observed access-type email-association PUT 404; the probe locks this in until the gap is closed.
Resolution: the 404 assertion fails once the endpoint ships and the story must tighten.
Stable test attributes
Visibility teeth. Each attribute must be effectively visible when active.
email-association-page | Page | Association manager |
email-association-table | Page | Access-type mappings |
association-access-type-row | Table | Mapping row |
association-message-type-picker | Row | Message slot |
association-design-picker | Row | Design picker |
association-save-cta | Toolbar | Save |
association-test-send-cta | Toolbar | Preview send |
association-preview | Panel | Preview |
association-warning | Page | Validation |
association-gap-panel | Page | Runtime gap |
Agent test plan
- association-renders
- save-association
- association-test-send
- deployed-runtime-gap