Testing with the Simulator
Run a build in the Simulator
The Simulator is a tool in the Developer Console that runs your game in a framed preview and plays the role of Jest.com for it. The SDK is handled by a mock host, so player identity, purchases, notifications, and other platform calls are answered locally.
Use it when you want a clean, full-viewport surface to:
- Record a self-review attached to a specific version so moderators can watch a real play-through during review.
- Drive a build (or a local URL) end-to-end with a checklist that flags common issues before you submit.
The Simulator is reachable from the left sidebar (Simulator) and from the Self Review action on each version in a game's Versions tab.
Record a self-review
A self-review is a recorded play-through of a specific version. Moderators watch it during game review, alongside the build itself.
- Open your game's Versions tab in the Developer Console.
- Next to the version you want to submit, select Self Review. The Simulator opens in record mode for that version.
- Select Record and grant the browser's screen-capture prompt for the current tab.
- Play through your game. The Simulator captures both the iframe and any overlays (login, purchase, loading screen) at the tab level.
- When you're done, select Stop & Save. A short form appears where you can add notes for the moderator, then save.
Saved self-reviews are listed under the version in the Versions tab and appear in the moderation view for that version.
Good for
- Giving moderators evidence that a version's core flows actually work end-to-end before they review it manually
- Capturing reproducible play-throughs to attach context (notes) to specific builds
- Catching regressions in your own flows by replaying saved sessions across versions
Not good for
- Demonstrating real platform behavior — login, purchases, and notifications are mocked, not live (use sandbox users for that)
- Performance or timing measurements — the Simulator runs in a framed container with a mocked host, not the real Jest.com shell
Drive any URL
In URL mode, the Simulator loads any URL you give it — including http://localhost:<port> — instead of an uploaded build. Recording is disabled in this mode; it is meant for ad-hoc test-drives.
- Open the Simulator from the sidebar.
- Keep the mode toggle on URL.
- Paste your URL (for example
http://localhost:3000/g/my-game?host=http://localhost:3000) and select Load.
This works against a running local dev server, so you can iterate on your game and reload the Simulator manually to see changes. There is no auto-refresh today — if your dev server hot-reloads the game itself, that still works inside the iframe; changes that require re-running SDK initialization need a Simulator reload.
If your local server sets X-Frame-Options: DENY or a restrictive frame-ancestors, the iframe will refuse to load. Adjust the dev server config to allow framing during development.
Good for
- Trying out a local build against the Simulator's mocked host (products, player data, entry payload) without uploading
- Exercising the checklist against changes you haven't shipped yet
- Sharing a repeatable test harness across developers without each person needing a sandbox user
Not good for
- Testing inside the real Jest.com shell — use the hosted emulator for that
- Validating an uploaded build with a live platform — use sandbox users
- Day-to-day local iteration where the in-game
JestSDKdebug menu is enough — use local mocks
Reading the checklist
The Simulator evaluates a set of rules against the SDK activity it observes. Each rule has one of four states:
- Pass — the rule saw what it expected.
- Warn — not broken, but worth improving (for example, all notifications use the same body, or bodies contain emoji that may not render on SMS).
- Fail — a clear problem that will block review (for example, logging in an already-registered player, or never calling
GetIncompletePurchasesafter a meaningful amount of startup traffic). - Waiting — the rule has not seen enough activity to judge yet. This is the default before you exercise the relevant flow and is not a failure on its own.
Rules cover four areas: user management (SDK initialization, login, guest data), notifications (scheduling window, customization, asset references, body length, charset), purchases (catalog fetch, purchase start, recovering incomplete purchases), and referrals.
The checklist is a guide, not a gate. Some rules remain in Waiting for legitimate reasons — for example, the recovered-purchase rule stays in "Waiting" unless you enable seeded incomplete purchases in the config panel and exercise the flow.
Configure the mocked host
The Simulator's right-hand Config panel lets you set up mocked platform state for the session:
- Player — toggle registration, edit username/avatar, log out to restart as a guest.
- Entry payload — edit the payload the game receives on startup. Changes reload the iframe so the game re-runs initialization.
- Player data — pre-seed player data, or pull the current in-game state into the editor with Use live state.
- Notification assets — register known asset references so the checklist can validate them.
- Purchases — configure products, choose canned responses for
BeginPurchase/CompletePurchase, toggle seeded incomplete purchases for recovery testing. - Referrals — seed referral entries for
GetReferrals.
Everything in the Config panel is in-session only. Nothing here writes back to the platform.