Why a person: the automated playthrough checks progression and saved state. These checks cover visible menus, dialogue, movement and controls in the browser, including the new Egg and TM/HM screens.
Setup (on a machine with the user's Crystal 1.1 ROM)
Run MAKE_TEST_SAVES=1 npx vitest run tests/playthrough.test.ts (the whole file; its stages share a playthrough).
Run npm run dev, load the ROM, then Savegames → Import native backup → test-saves/violet-city.crystal-save.json, then Play.
The save starts by Violet City's east gate with CYNDAQUIL at level 11, one POTION, five POKé BALLS and ¥3,112. Heal at the Pokémon Center and train as needed. The backup contains ROM-derived names and must stay local.
Steps and expected results
Explore Violet City, its Mart, Pokémon Center, Academy and houses. Talk to NPCs, buy an item and heal. Doors return to the correct place; dialogue closes and movement resumes.
Read Earl's blackboard. Each topic opens readable text and returns to the menu; cancel exits normally.
Climb Sprout Tower, fight its trainers and speak to Elder Li. The rival scene finishes, winning awards HM05 FLASH, and returning to Li does not grant it again.
Defeat Falkner. Receive ZEPHYRBADGE and TM31 MUD-SLAP once. Leave the gym and advance until Elm's call directs you to the Pokémon Center.
Speak to Elm's aide in the Pokémon Center and accept the Egg. POKéMON lists EGG without level or HP; STATS shows the Egg picture and hatching hint. Cancel returns through the menus. Healing does not turn it into a usable Pokémon.
PACK → TM/HM pocket → TM31 → USE shows the move, confirmation and ABLE/NOT ABLE labels. Teach CYNDAQUIL MUD-SLAP: the move appears in its moves and TM31 is consumed. Canceling before teaching leaves the TM and moves unchanged.
Catch BELLSPROUT on Route 31. In Kyle's house, decline the trade first, then accept and offer BELLSPROUT. Receive ONIX named ROCKY with OT KYLE; the offered Pokémon is gone. A later conversation does not repeat the trade.
Catch another BELLSPROUT and teach it HM05 FLASH from the TM/HM pocket. HM05 remains available. Enter Dark Cave from Route 31, then POKéMON → BELLSPROUT → FLASH: the cave becomes lit and walking resumes.
After defeating Bug Catcher Wade on Route 31, talk to him and accept his phone number. The Pokégear contact list includes him.
After rewards, teaching or the trade, close the menus and reload the page. Reopen the save: party, Egg, badge, TM/HM counts, moves and registered contact persist. Reward and trade conversations do not duplicate rewards.
Repeat TM/HM selection and the Egg stats screen with the on-screen controls on a phone or tablet. Labels remain readable, selections work, and Cancel returns to play. Record device and browser; desktop browser automation does not establish this result.
Known boundaries: no sound, NPC trade animation or Egg hatching; Wade's trainer calls/rematches are not implemented. Earl's blackboard is a list. Route 32, Route 36, Dark Cave's other entrances and the Pokémon Center's second floor remain 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: #31 (ec3d1cd, 7909302, 73022b1).
Why a person: the automated playthrough checks progression and saved state. These checks cover visible menus, dialogue, movement and controls in the browser, including the new Egg and TM/HM screens.
**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` (the whole file; its stages share a playthrough).
2. Run `npm run dev`, load the ROM, then Savegames → Import native backup → `test-saves/violet-city.crystal-save.json`, then Play.
3. The save starts by Violet City's east gate with CYNDAQUIL at level 11, one POTION, five POKé BALLS and ¥3,112. Heal at the Pokémon Center and train as needed. The backup contains ROM-derived names and must stay local.
**Steps and expected results**
- [ ] Explore Violet City, its Mart, Pokémon Center, Academy and houses. Talk to NPCs, buy an item and heal. Doors return to the correct place; dialogue closes and movement resumes.
- [ ] Read Earl's blackboard. Each topic opens readable text and returns to the menu; cancel exits normally.
- [ ] Climb Sprout Tower, fight its trainers and speak to Elder Li. The rival scene finishes, winning awards HM05 FLASH, and returning to Li does not grant it again.
- [ ] Defeat Falkner. Receive ZEPHYRBADGE and TM31 MUD-SLAP once. Leave the gym and advance until Elm's call directs you to the Pokémon Center.
- [ ] Speak to Elm's aide in the Pokémon Center and accept the Egg. POKéMON lists EGG without level or HP; STATS shows the Egg picture and hatching hint. Cancel returns through the menus. Healing does not turn it into a usable Pokémon.
- [ ] PACK → TM/HM pocket → TM31 → USE shows the move, confirmation and ABLE/NOT ABLE labels. Teach CYNDAQUIL MUD-SLAP: the move appears in its moves and TM31 is consumed. Canceling before teaching leaves the TM and moves unchanged.
- [ ] Catch BELLSPROUT on Route 31. In Kyle's house, decline the trade first, then accept and offer BELLSPROUT. Receive ONIX named ROCKY with OT KYLE; the offered Pokémon is gone. A later conversation does not repeat the trade.
- [ ] Catch another BELLSPROUT and teach it HM05 FLASH from the TM/HM pocket. HM05 remains available. Enter Dark Cave from Route 31, then POKéMON → BELLSPROUT → FLASH: the cave becomes lit and walking resumes.
- [ ] After defeating Bug Catcher Wade on Route 31, talk to him and accept his phone number. The Pokégear contact list includes him.
- [ ] After rewards, teaching or the trade, close the menus and reload the page. Reopen the save: party, Egg, badge, TM/HM counts, moves and registered contact persist. Reward and trade conversations do not duplicate rewards.
- [ ] Repeat TM/HM selection and the Egg stats screen with the on-screen controls on a phone or tablet. Labels remain readable, selections work, and Cancel returns to play. Record device and browser; desktop browser automation does not establish this result.
Known boundaries: no sound, NPC trade animation or Egg hatching; Wade's trainer calls/rematches are not implemented. Earl's blackboard is a list. Route 32, Route 36, Dark Cave's other entrances and the Pokémon Center's second floor remain 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.
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: #31 (
ec3d1cd,7909302,73022b1).Why a person: the automated playthrough checks progression and saved state. These checks cover visible menus, dialogue, movement and controls in the browser, including the new Egg and TM/HM screens.
Setup (on a machine with the user's Crystal 1.1 ROM)
MAKE_TEST_SAVES=1 npx vitest run tests/playthrough.test.ts(the whole file; its stages share a playthrough).npm run dev, load the ROM, then Savegames → Import native backup →test-saves/violet-city.crystal-save.json, then Play.Steps and expected results
Known boundaries: no sound, NPC trade animation or Egg hatching; Wade's trainer calls/rematches are not implemented. Earl's blackboard is a list. Route 32, Route 36, Dark Cave's other entrances and the Pokémon Center's second floor remain 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.