Read this page as markdown — for coding agents, or for anyone who prefers the source.
QA checklist
Internal review pass, run after automated checks have passed. Every box is verified by hand; automation covers the mechanical rules, not these.
Reviewer records outcome as approved or rejected with reasons. Vague rejections are not acceptable — the developer must know exactly what to fix.
Setup
- Bundle extracted,
bananai.jsonmatches the submitted metadata - Automated check report reviewed, no overrides applied silently
- Staging deploy reachable
Functional
- Loads standalone from
index.html - Loads embedded in the shell modal
- A full run can be completed start to finish
- Game over fires and reports a plausible score
-
bananai:restartrestarts cleanly, with no state leaking from the previous run - Closing the modal stops audio and the game loop
- Reopening after close starts fresh
- No console errors or warnings during a full session
Devices
Real hardware, not emulation.
- Desktop Chrome, 1920×1080
- Desktop Firefox
- Desktop Safari
- iPhone Safari, portrait and landscape
- Mid-range Android Chrome, portrait and landscape
- 320px viewport width — nothing clipped or unreachable
- Resize mid-game does not break rendering or input
Sizing
The failure mode here is silent: the game looks fine until it is given less room than it assumed, and then loses whatever it draws near an edge.
- No
min-width,min-height,aspect-ratioor fixed pixel size on the game's root element - No
position: fixedanywhere in the game's CSS - Styles scoped under a game-specific class;
html,bodyand:rootuntouched for dimensions, overflow and positioning -
minSizedeclared in the manifest and honest - Canvas height equals frame height — check
canvas - framein/debug-mobile.html, which must read 0 - No internal scrolling inside the game document
- Rotate the device mid-game: canvas resizes, and every entity is repositioned. Nothing ends up off-screen, nothing stays at an old offset.
- Play in fullscreen and exit again; layout survives both transitions
Performance
- Stable 30fps minimum on the mid-range Android reference device
- Interactive within 3s on throttled 4G
- Bundle size within limits
- No memory growth across three consecutive runs
Network isolation
- DevTools network tab shows zero requests outside
bananai.gamesand CDN - Game works with the network disabled after first load
- No
localStoragewrites outside thegame:<id>:namespace
Sandbox compliance
- No attempt to reach
window.parentoutside the SDK - No attempt to navigate the top-level window
- No cookie access
- SDK calls present and correctly sequenced
Audio
- Silent until first user interaction
- Mute control present and working
- Mute state survives restart
- Audio stops on modal close
Accessibility
- Playable with keyboard where the genre allows
- Text legible at default zoom, contrast ratio at least 4.5:1
- No content relying on colour alone
- No flashing above three per second — this is a seizure risk, not a preference
Content
- Matches the declared age rating
- No prohibited content
- Asset licences declared and plausible
- No third-party trademarks
- Instructions accurate and complete in both IT and EN
Catalogue readiness
- Thumbnail supplied, 400×400, readable at card size
- Title and description free of typos in both languages
- Category correct
- Game ID follows convention and is not already taken
Outcome
Game: <id> v<version>
Reviewer: <name>
Date: <date>
Result: approved | rejected
Blocking issues:
1. ...
Non-blocking notes:
1. ...