Testing And Staging
Staging overview
Use staging to validate the same integration contract before production.
Staging overview
Staging exists to validate integration behavior before production with same docs, same paths, same request and response shapes.
Single source of truth
- operator API paths stay same
- wallet adapter paths stay same
- webhook payloads stay same
- dashboard concepts stay same
Only deployment environment differs.
Do not maintain separate staging implementation docs.
What to validate in staging
- launch Opinion and Polyflight through their real product selections
- user can view Opinion markets
- Polyflight user can view the shared board and submit native IDR
- Opinion buy/sell or redemption works
- Polyflight win, loss, cancellation/refund, compensation, and manual-review states work
- webhook receiver verifies signatures and accepts both product catalogues
- webhook retries behave as expected
- duplicate idempotency is safe
- failure and unknown wallet states are visible to operator
- Polyflight terms, statement, liability, payment history, and export views reconcile
Evidence to collect
- API request and response samples
- wallet adapter logs keyed by
idempotency_key - webhook receiver logs keyed by
event_id - operator dashboard screenshots for failed or replayed deliveries
- timestamps in UTC for each drill
Required drill order
- create/select a dedicated simulator-tagged user under Operator Dashboard
/simulator/users - fund only that user's simulated IDR wallet; leave operator
rest_v1configuration unchanged - launch
polyflightfrom dashboard/simulatorand follow the real single-use launch URL - validate native purchase and win/loss/refund/compensation states in the launched Mini App
- validate Opinion separately
- validate wallet failure and webhook retry/replay drills
- reconcile wallet operation, event, statement, and export evidence in dashboard/admin views
- run separate real-HTTP adapter contract checks against dedicated non-production wallet infrastructure
The dashboard-hosted simulator proves the OpenPoly UI/session/state-machine path. It does not certify a real external operator wallet, and API-only requests or injected cookies do not replace the required launched-client workflow.
Related pages
- simulator tools:
/docs/testing-and-staging/simulator - webhook drills:
/docs/testing-and-staging/webhook-drills - wallet failures:
/docs/testing-and-staging/wallet-failure-drills
