Why a person: automated tests cover the shops' stock, prices and saved state, and the Game Corner's tilemaps are checked against the ROM. These checks cover what only a person can judge: menus, balance boxes, the prize registration pages, and the slot machine and Card Flip screens against the original, including sprites and timing that the tile check does not cover.
Setup (on a machine with the user's Crystal 1.1 ROM)
Run MAKE_TEST_SAVES=1 npx vitest run tests/playthrough.test.ts.
Run npm run dev, load the ROM, then Savegames → Import native backup → test-saves/goldenrod-city.crystal-save.json, then Play.
The save starts outside Goldenrod's Radio Tower with the PLAINBADGE, the radio card, the BICYCLE, QUILAVA at level 31, three level-5 Pokémon and ¥14,020. The backup must stay local.
Steps and expected results
Department store: buy on several floors and on the rooftop. The money box, quantity box and BUY/SELL/QUIT menus match the original; the elevator goes to each floor.
Underground: the herb shop (bitter herbs), the bargain shop (sold out after one buy, closed for the day) and the haircut brothers. Get the COIN CASE in the Underground.
Name Rater renames a Pokémon you caught and refuses a traded one (Kenya, below). The Lucky Number show at the Radio Tower reads its number and checks the party and PC.
Route 35 gate: receive KENYA with Randy's MAIL; read the MAIL from the party menu; deliver it on Route 31 (Fly or walk).
Game Corner: buy coins at the counter (the money and coin box shows both). Exchange coins for a Pokémon prize you have never caught: both Pokédex entry pages appear before the nickname prompt.
Slot machine: bet 1, 2 and 3 coins; stop the reels with A. Compare with the original: reel scrolling speed and smoothness, the bet lines lighting up, payout counting, and, if they appear, the Golem and Chansey/egg sequences. One machine is the lucky one and pays more often.
Card Flip: play several rounds. Compare with the original: the board, the deal and flip of cards, and the cursor on a single card, a row, a column and the 2-number/2-Pokémon groups (its frame size and where it is drawn over the board). "Darn…" shows the ellipsis character.
Repeat a slot round and a Card Flip round with the on-screen controls on a phone or tablet. Record device and browser.
Save mid-session, reload and reopen: coins, Coin Case, bought items and the Lucky Number state persist.
Known boundaries: no sound; Golem's walk cycle draws two ROM frames with flips (the original stores four); the radio card does not play broadcasts yet (#30). Do not report those as regressions.
Report: tick the checks completed, give the browser/device and commit tested, and describe any failure with the last action and expected/actual behavior. Leave this card in A tester until a person has performed the checks.
Implementation: #32 (0930b78, 2640fa2, 7c4e852).
Why a person: automated tests cover the shops' stock, prices and saved state, and the Game Corner's tilemaps are checked against the ROM. These checks cover what only a person can judge: menus, balance boxes, the prize registration pages, and the slot machine and Card Flip screens against the original, including sprites and timing that the tile check does not cover.
**Setup** (on a machine with the user's Crystal 1.1 ROM)
1. Run `MAKE_TEST_SAVES=1 npx vitest run tests/playthrough.test.ts`.
2. Run `npm run dev`, load the ROM, then Savegames → Import native backup → `test-saves/goldenrod-city.crystal-save.json`, then Play.
3. The save starts outside Goldenrod's Radio Tower with the PLAINBADGE, the radio card, the BICYCLE, QUILAVA at level 31, three level-5 Pokémon and ¥14,020. The backup must stay local.
**Steps and expected results**
- [ ] Department store: buy on several floors and on the rooftop. The money box, quantity box and BUY/SELL/QUIT menus match the original; the elevator goes to each floor.
- [ ] Underground: the herb shop (bitter herbs), the bargain shop (sold out after one buy, closed for the day) and the haircut brothers. Get the COIN CASE in the Underground.
- [ ] Name Rater renames a Pokémon you caught and refuses a traded one (Kenya, below). The Lucky Number show at the Radio Tower reads its number and checks the party and PC.
- [ ] Route 35 gate: receive KENYA with Randy's MAIL; read the MAIL from the party menu; deliver it on Route 31 (Fly or walk).
- [ ] Game Corner: buy coins at the counter (the money and coin box shows both). Exchange coins for a Pokémon prize you have never caught: both Pokédex entry pages appear before the nickname prompt.
- [ ] Slot machine: bet 1, 2 and 3 coins; stop the reels with A. Compare with the original: reel scrolling speed and smoothness, the bet lines lighting up, payout counting, and, if they appear, the Golem and Chansey/egg sequences. One machine is the lucky one and pays more often.
- [ ] Card Flip: play several rounds. Compare with the original: the board, the deal and flip of cards, and the cursor on a single card, a row, a column and the 2-number/2-Pokémon groups (its frame size and where it is drawn over the board). "Darn…" shows the ellipsis character.
- [ ] Repeat a slot round and a Card Flip round with the on-screen controls on a phone or tablet. Record device and browser.
- [ ] Save mid-session, reload and reopen: coins, Coin Case, bought items and the Lucky Number state persist.
Known boundaries: no sound; Golem's walk cycle draws two ROM frames with flips (the original stores four); the radio card does not play broadcasts yet (#30). Do not report those as regressions.
**Report**: tick the checks completed, give the browser/device and commit tested, and describe any failure with the last action and expected/actual behavior. Leave this card in A tester until a person has performed the checks.
Update for b5c2b19: the slot machine animations now match the original frame by frame in the reference tests (Golem flips and timing, Chansey and the egg). Extra check for this card:
Slots: when Golem rolls across the reels, the background (not the reels or sprites) shakes up and down by a couple of pixels until it stops; Chansey walks in, lays the egg and stays until the reel stops; the egg bounces right and disappears at the third reel, which then drops.
Update for b5c2b19: the slot machine animations now match the original frame by frame in the reference tests (Golem flips and timing, Chansey and the egg). Extra check for this card:
- [ ] Slots: when Golem rolls across the reels, the background (not the reels or sprites) shakes up and down by a couple of pixels until it stops; Chansey walks in, lays the egg and stays until the reel stops; the egg bounces right and disappears at the third reel, which then drops.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implementation: #32 (
0930b78,2640fa2,7c4e852).Why a person: automated tests cover the shops' stock, prices and saved state, and the Game Corner's tilemaps are checked against the ROM. These checks cover what only a person can judge: menus, balance boxes, the prize registration pages, and the slot machine and Card Flip screens against the original, including sprites and timing that the tile check does not cover.
Setup (on a machine with the user's Crystal 1.1 ROM)
MAKE_TEST_SAVES=1 npx vitest run tests/playthrough.test.ts.npm run dev, load the ROM, then Savegames → Import native backup →test-saves/goldenrod-city.crystal-save.json, then Play.Steps and expected results
Known boundaries: no sound; Golem's walk cycle draws two ROM frames with flips (the original stores four); the radio card does not play broadcasts yet (#30). Do not report those as regressions.
Report: tick the checks completed, give the browser/device and commit tested, and describe any failure with the last action and expected/actual behavior. Leave this card in A tester until a person has performed the checks.
Update for
b5c2b19: the slot machine animations now match the original frame by frame in the reference tests (Golem flips and timing, Chansey and the egg). Extra check for this card: