Test mode & the Fizzpop test ad
Every new game starts in test mode. In test mode every ad request is filled with Fizzpop Soda, a fictional brand we made so you can see a real Bonus Round in your own game straight away, before any brand has bought a slot.
What test mode does
- Every request fills with the Fizzpop house ad:
break(), interval offers, rewarded rounds and the ambient prop. - Nothing is billed and nothing is paid. Test traffic is recorded, but counted separately from real traffic: it shows on your game's page and under
testinGET /api/games/:id/stats, never in the totals, earnings or eCPM. - No brand ads. A game in test mode is only ever served the house test ad.
- Your game still gets detected and learned. Test mode doesn't hold back the play agent.
Meet Fizzpop Soda
Fizzpop is a full ad package, the same kind of package a real brand gets: a hero mascot, a collectible soda can, a tiled arena floor, a banner, a 20-second music bed and three sound effects. Playing it is the best way to check that a round fits your game: the scale of the arena, the camera, your controls, the transition in and out.
Fizzpop is fictional on purpose. It isn't a real product, and its call to action (“Pop the fun”) points at fizzpop.example, a reserved domain that goes nowhere. Show it on stream, in screenshots and to your playtesters.
Force a test round on any game
Even after you go live you can play the test ad on demand. The test trigger is always filled with Fizzpop and never billed:
await BonusRound.break('test');
Handy for a debug menu, QA builds, or checking an update didn't break the round.
Turning test mode off
When you're happy with how rounds look, switch the game to live in the dashboard (Games → your game → Settings), or via the API:
curl -X PATCH https://bonusround.io/api/games/gm_… \
-H "Authorization: Bearer $BONUSROUND_API_KEY" -H "content-type: application/json" \
-d '{ "testMode": false }'
Read Going live first: there's an ads.txt line to add, and brands need a little time to generate rounds for your game.
Troubleshooting: “I don't see the test round”
- Is the SDK on the page? In the console,
BonusRound.versionshould print a version. If it'sundefined, the script tag isn't in the HTML that loads (or an ad blocker removed it; try a clean profile). - Was
attach()called?await BonusRound.debug()shows whether the SDK is attached and in which mode. - Is
break()reached? Put aconsole.logjust before it, or callBonusRound.break('test')from the console. - What did it return?
reasontells you why a round didn't fill. From the SDK:not_attached(attach()hasn't finished yet),busy,takeover_disabled,trigger_disabled,frequency_cap,ad_server_unreachable,load_timeout,sdk_unavailable. From the ad server:game_paused,format_disabled,origin_not_allowed,game_frequency_cap,no_eligible_campaigns,below_floor. The FAQ explains each one. - Was the game detected? The dashboard shows the last SDK ping.
npx bonusround statusshows the same.