What To Cover
| Scenario | What to verify |
|---|---|
| Ready | Start CTA appears and calls the current view’s start action. |
| Routing | Loading UI appears without invalid buttons. |
| Gated | Auth, access-code, or verification UI uses generic customer-safe copy. |
| Scheduled | Scheduled or waitlist messaging renders. |
| Enterable | The enter, bid, or booking action is available when exposed by the view. |
| Participating | Status, progress, and valid participation actions render. |
| Granted | Checkout handoff receives the grant. |
| Ended | Recovery or support copy is clear and does not infer private reasons. |
| Error | Retry or fallback UI is visible. |
Component Tests
For custom React UI, split SDK wiring from rendering. The wrapper callsuseExperienceJourney; the view component accepts controlled props.
LaunchExperienceView with representative public views. Avoid depending on private SDK internals, undocumented mock helpers, or assumed state-transition timing.
Widget Tests
When usingExperienceWidget, keep tests focused on app-owned behavior:
- The widget is rendered with the expected
experienceId. checkoutUrloronGrantedis configured for granted users.- Slot overrides render your custom UI.
- Sensitive values are not sent to logs or analytics.
sendAdmissionToServer as your application code. Use SDK-level integration tests sparingly for full journey behavior.
End-To-End Tests
Use a test experience and test publishable key for browser tests. Keep assertions based on visible public states and your app’s handoff behavior.Manual QA Checklist
- Start from a clean browser profile.
- Repeat with an existing browser session.
- Open the same experience in two tabs.
- Verify ready, routing, gated, routed, admitted, denied, unavailable, and error copy where your experience can reach those states.
- Confirm checkout receives only the values it needs.
- Confirm analytics record high-level outcomes, not raw grants or snapshots.
- Confirm production builds do not enable debug logging.
Local Development
Use your application’s normal local server with Fanfare test credentials. If you need deterministic states, place a small boundary around your UI and supply controlled publicJourneyView values in tests.
Avoid inventing SDK mock helper names unless they are documented in the SDK reference or provided by your installed SDK version.
CI
Add the checks that already protect your application:Next Steps
- Deployment - Prepare production rollout.
- SDK Testing - Review the SDK testing contract.
- Journey State - Cover the public states your UI renders.