Test ads and test devices
Your app shows ads from its first build. Until its store listing is live, every ad is a test ad: real ad screens and real reward flows, labeled "Test ad", never billed and never paid out. You can also register your own TV so it keeps getting test ads after launch.
When an app gets test ads
The edge serves only test ads when any of these is true:
- The app's listing for this platform is pending (not live yet, for example because app-ads.txt isn't found), in review, or unknown (a platform or store ID SofAds hasn't seen).
- The app asks for test ads:
SofAds.init({ appId, test: true }). - The TV is a registered test device of this app, even when the listing is live.
// A development build that always asks for test ads.
SofAds.init({ appId: "sof_YOUR_APP_ID", test: true });The SDK logs one console line at start-up that says why, with the next step, for example "listing pending: add app-ads.txt", "in review" or "test device". The publisher dashboard shows a "Test mode" badge on the listing with the same reason.
What each placement shows
| Placement | Test ad |
|---|---|
| Interstitial video | Google's public sample VAST ads (a plain and a skippable one, in rotation), then the SofAds test video. The skippable sample shows the skip countdown and button. |
| Rewarded video | Google's plain sample ad, always non-skippable, rewarded when it completes; then the SofAds test video. |
| Rewarded scan | The SofAds test ad: the normal ad screen with a test creative in the TV's language and your placement's real reward. Scanning the QR code unlocks the reward. |
| QR card | The same SofAds test ad, without a reward. |
Google's sample tags are used at most a set number of times per listing per day (200 by default). After that, or when a sample fails or comes back empty, you get the SofAds test video, a 10 to 15 second clip on cdn.sofadsrv.com that is always available. Google sample tags are never used for live listings.
Every test ad shows a small "Test ad" label next to the "Ad" badge, in the ad's language.
The scan test
The rewarded scan test ad works exactly like a real one. Its QR code points at the SofAds edge (t.sofadsrv.com), which records the scan and unlocks the reward on the TV through the normal reward check. Your phone then lands on a short page that says the scan worked, in the TV's language, like the English test scan page.
A QR code pointing straight at a web page would never reach the edge, so the reward could not unlock. That is why the code always goes through the edge, also for test ads.
Test ads are never billed
- Test fills are marked
test: truein the ad response, andSofAds.showInterstitial()andshowRewarded()resolve withtest: true. - They never create advertiser spend, publisher earnings or ledger entries.
- The dashboard counts them separately as "test impressions", outside your revenue reports.
Register your TV as a test device
A test device always gets test ads from your app, even when the listing is live, so you can check updates on a real TV without earning from your own views.
Turn on the debug overlay in a development build:
jsSofAds.debug(true); // shows the install ID as text and as a QR codeScan or copy the install ID shown on the TV.
Add it under your app's test devices in the publisher dashboard. An app can have up to 100 test devices.
From then on the SDK logs "test device" as the reason for test ads in the console, and the ads carry the "Test ad" label. They are never billed.
The install ID is the SDK's own random ID for that app on that TV. Resetting it (from your app's privacy panel) or clearing the app's data creates a new one, which you then register again.
Frequently asked questions
Why does my live app still show test ads on my TV?
Your TV is probably registered as a test device for this app. Remove its install ID from the app's test devices in the dashboard to get live ads.
Do test ads earn money?
No. Test ads are never billed to advertisers and never create earnings. They appear as test impressions, separate from revenue.
Does the scan test really unlock the reward?
Yes. The QR code goes through the SofAds edge like a real scan, so the reward unlocks on the TV and your onReward callback runs once.
Sources
Checked on October 7, 2026. Platform rules change; when a source and this page disagree, the source wins.
Keep reading
- Skippable ads: the countdown and the Skip ad button you see in the skippable sample.
- Samsung Tizen setup: index.html and config.xml for Tizen.
- app-ads.txt for TV apps: what takes a listing from pending to live.