Skip to main content
Test your integration from the public contract:
  • The right UI renders for each public journey state.
  • Buttons call the actions exposed by the current JourneyView.
  • Gates show generic, customer-safe messaging.
  • A granted handoff sends the consumer to the next app step.
  • Sensitive runtime values are not sent to third-party logs.
SDK testing workflow showing setup, simulated public states, rendered behavior verification, and full-flow release testing.

Run against the public harness

The @fanfare-io/fanfare-sdk-core/harness subpath ships an in-browser, fetch-intercepting mock of the Fanfare consumer API. It lets you run and verify a real integration end to end without a live Fanfare environment: queue positions count down per poll, draws resolve, and gates accept the test OTP and access codes.
installHarnessMockServer(options?) returns:
The harness intercepts window.fetch, so it is browser-only. Install it from a client effect, never during SSR. Pair it with environment: "development" and point apiUrl at the returned apiBaseUrl.
Choose a scenario with the scenario option (or install several with scenarios). The available HarnessScenarioKey values are:
  • "queue", "auth-queue", "access-code-queue", "admission-cycle", "queue-denied"
  • "waitlist-queue", "waitlist-lifecycle"
  • "upgrade-offer-queue", "upgrade-offer-multi-queue"
  • "draw", "auth-draw", "draw-denied"
  • "timed-release", "timed-release-completion"
  • "appointment"
  • "auction"
Auth-gated scenarios accept the default test OTP code "424242" (overridable via the otpCode option). Access-code scenarios accept "VIP123"; the multi-tier upgrade scenario additionally accepts "SUPER123".

Component integration tests

For React custom UI, wrap your Fanfare usage behind a small app-level component boundary so tests can provide controlled journey states.
Test LaunchExperienceView with representative JourneyView values (one per journeyStage, and per sequence.phase for routed). Keep SDK network behavior in a smaller number of integration tests.

Manual QA checklist

  • Start from a clean browser profile.
  • Repeat with an existing session.
  • Open the same experience in two tabs.
  • Verify loading, gated, participating, granted, ended, and error copy.
  • Confirm checkout receives only the values it needs.
  • Confirm analytics use high-level outcomes rather than raw grants or snapshots.