Why a person: unit tests drive every phone trainer's rematch, a random call, each radio station and Buena's show; these checks cover how calls and the radio look and sound in the browser, and real waits on the clock.
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 (the radio card is in it), then Play. Sound on. The backups must stay local.
Steps and expected results
Get a trainer's number (Route 30's Youngster Joey after the Mystery Egg, or Route 31's Wade), then walk outdoors for 20+ minutes of game time (the device clock): the phone rings twice with "☎ NAME: CLASS" flashing and the ring sound, the trainer talks, "Click!" and the hang-up tones end it. Later calls come sooner (10, 5, then 3 minutes).
No call rings on a door, stairs or cave entrance, indoors where the map has no signal, or from a trainer standing on the same map.
When a trainer says they want a rematch, walk to them: they battle with a stronger team. A trainer who promised a gift hands it over.
Pokégear → phone: call a trainer. Two rings with sound, their answer, the hang-up. In a place without service, the no-signal sound and "out of the service area".
Pokégear → radio: up/down tunes. 4.5 plays Oak's Pokémon Talk (afternoon/evening) or the Pokédex Show (morning) with their lines scrolling every ~2 s; 7.5 Pokémon Music (march or lullaby by weekday); 8.5 the Lucky Channel with this week's number; 10.5 Buena's Password after 6 PM (off the air before). Leaving the radio keeps a station's song playing until the map changes.
A house radio (Kurt's house in Azalea, the flower shop in Goldenrod): the station's name in quotes, then the station; A or B stops it.
Radio Tower 2F after 6 PM with the password heard: Buena asks it, the right word gives a Blue Card point (once a day). The receptionist exchanges points for prizes; not enough points and a full pack are refused.
A trainer who reports a swarm (Ralph: Qwilfish on Route 32's water; Anthony: Dunsparce in Dark Cave; Arnie: Yanma on Route 35): that Pokémon appears much more often that day.
Known boundaries: the radio's dial is shown as a frequency number, not the original's graphics; holding up/down does not keep tuning; the Poké Flute channel cannot wake Snorlax (Kanto is closed). 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: #30 (7c12c81).
Why a person: unit tests drive every phone trainer's rematch, a random call, each radio station and Buena's show; these checks cover how calls and the radio look and sound in the browser, and real waits on the clock.
**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` (the radio card is in it), then Play. Sound on. The backups must stay local.
**Steps and expected results**
- [ ] Get a trainer's number (Route 30's Youngster Joey after the Mystery Egg, or Route 31's Wade), then walk outdoors for 20+ minutes of game time (the device clock): the phone rings twice with "☎ NAME: CLASS" flashing and the ring sound, the trainer talks, "Click!" and the hang-up tones end it. Later calls come sooner (10, 5, then 3 minutes).
- [ ] No call rings on a door, stairs or cave entrance, indoors where the map has no signal, or from a trainer standing on the same map.
- [ ] When a trainer says they want a rematch, walk to them: they battle with a stronger team. A trainer who promised a gift hands it over.
- [ ] Pokégear → phone: call a trainer. Two rings with sound, their answer, the hang-up. In a place without service, the no-signal sound and "out of the service area".
- [ ] Pokégear → radio: up/down tunes. 4.5 plays Oak's Pokémon Talk (afternoon/evening) or the Pokédex Show (morning) with their lines scrolling every ~2 s; 7.5 Pokémon Music (march or lullaby by weekday); 8.5 the Lucky Channel with this week's number; 10.5 Buena's Password after 6 PM (off the air before). Leaving the radio keeps a station's song playing until the map changes.
- [ ] A house radio (Kurt's house in Azalea, the flower shop in Goldenrod): the station's name in quotes, then the station; A or B stops it.
- [ ] Radio Tower 2F after 6 PM with the password heard: Buena asks it, the right word gives a Blue Card point (once a day). The receptionist exchanges points for prizes; not enough points and a full pack are refused.
- [ ] A trainer who reports a swarm (Ralph: Qwilfish on Route 32's water; Anthony: Dunsparce in Dark Cave; Arnie: Yanma on Route 35): that Pokémon appears much more often that day.
Known boundaries: the radio's dial is shown as a frequency number, not the original's graphics; holding up/down does not keep tuning; the Poké Flute channel cannot wake Snorlax (Kanto is closed). 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.
kawa
added the parity label 2026-10-16 11:10:20 +02:00
kawa
added this to the Pokemon Crystal - Web project 2026-10-16 11:10:20 +02:00
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: #30 (
7c12c81).Why a person: unit tests drive every phone trainer's rematch, a random call, each radio station and Buena's show; these checks cover how calls and the radio look and sound in the browser, and real waits on the clock.
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(the radio card is in it), then Play. Sound on. The backups must stay local.Steps and expected results
Known boundaries: the radio's dial is shown as a frequency number, not the original's graphics; holding up/down does not keep tuning; the Poké Flute channel cannot wake Snorlax (Kanto is closed). 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.