Manual test: save slots on real devices #81

Open
opened 2026-10-16 11:27:58 +02:00 by kawa · 0 comments
Owner

Implementation: #37 (7d03f5c).

Why a person: unit and browser tests cover the migration, every Savegames action, recovery and rejected imports on fresh browser profiles. These checks cover real saves already stored on your own browsers and phones, and the file picker and dialogs on touch screens.

Setup

  1. Before updating, on each browser/phone where you already play Crystal: Savegames → Export backup, and keep the file (in case anything goes wrong).
  2. Update to 7d03f5c or later (reload, or Update in the installed app), then select the ROM.
  3. For the import steps, MAKE_TEST_SAVES=1 npx vitest run tests/human-test-saves.test.ts on a machine with the ROM gives backups in test-saves/. They must stay local.

Steps and expected results

  • Existing save migrates: after the update, the game opens where you left it ("Your saved session is ready"). Savegames shows one card "Save 1" marked Playing, with your name, place, play time, badges and caught count.
  • Reload and select the ROM again: still one "Save 1" (no second copy), same progress.
  • New game: a "Save 2" card, the introduction starts. Play a bit, then Continue "Save 1": your old progress, untouched. Continue "Save 2": the new game where you left it.
  • Rename, Duplicate and Delete on a phone: the rename field takes the on-screen keyboard, the dialogs fit the screen in portrait and landscape, Delete asks first and Cancel keeps the save. The running save's Delete is greyed out.
  • Export from a card on iPhone/Safari and Android/Chrome: a .crystal-save.json file is downloaded or offered to share.
  • Import backup on both phones: the file picker opens, then the preview shows the trainer, ID No., place, play time, saved date and "game data version 3", lists the saves of the same trainer, and offers "Add as a new save", "Replace …" and Cancel. Cancel changes nothing; Add as a new save adds a card and continues it.
  • Import a file that is not a backup (any other .json): "This backup cannot be imported", your saves unchanged.
  • With a screen reader (VoiceOver or TalkBack): each card's buttons are read with the save's name ("Continue Save 1", "Delete Save 2"), and the import preview's details are read in order.
  • Close the tab or app while it is saving (right after pressing Pause), reopen and load the ROM: the save opens, at worst a few seconds older.

Known boundaries: after an action the keyboard focus returns to the page, not to the card; Kanto badges are not counted (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: #37 (7d03f5c). Why a person: unit and browser tests cover the migration, every Savegames action, recovery and rejected imports on fresh browser profiles. These checks cover real saves already stored on your own browsers and phones, and the file picker and dialogs on touch screens. **Setup** 1. Before updating, on each browser/phone where you already play Crystal: Savegames → Export backup, and keep the file (in case anything goes wrong). 2. Update to 7d03f5c or later (reload, or Update in the installed app), then select the ROM. 3. For the import steps, `MAKE_TEST_SAVES=1 npx vitest run tests/human-test-saves.test.ts` on a machine with the ROM gives backups in `test-saves/`. They must stay local. **Steps and expected results** - [ ] Existing save migrates: after the update, the game opens where you left it ("Your saved session is ready"). Savegames shows one card "Save 1" marked Playing, with your name, place, play time, badges and caught count. - [ ] Reload and select the ROM again: still one "Save 1" (no second copy), same progress. - [ ] New game: a "Save 2" card, the introduction starts. Play a bit, then Continue "Save 1": your old progress, untouched. Continue "Save 2": the new game where you left it. - [ ] Rename, Duplicate and Delete on a phone: the rename field takes the on-screen keyboard, the dialogs fit the screen in portrait and landscape, Delete asks first and Cancel keeps the save. The running save's Delete is greyed out. - [ ] Export from a card on iPhone/Safari and Android/Chrome: a `.crystal-save.json` file is downloaded or offered to share. - [ ] Import backup on both phones: the file picker opens, then the preview shows the trainer, ID No., place, play time, saved date and "game data version 3", lists the saves of the same trainer, and offers "Add as a new save", "Replace …" and Cancel. Cancel changes nothing; Add as a new save adds a card and continues it. - [ ] Import a file that is not a backup (any other .json): "This backup cannot be imported", your saves unchanged. - [ ] With a screen reader (VoiceOver or TalkBack): each card's buttons are read with the save's name ("Continue Save 1", "Delete Save 2"), and the import preview's details are read in order. - [ ] Close the tab or app while it is saving (right after pressing Pause), reopen and load the ROM: the save opens, at worst a few seconds older. Known boundaries: after an action the keyboard focus returns to the page, not to the card; Kanto badges are not counted (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 this to the Pokemon Crystal - Web project 2026-10-16 11:28:05 +02:00
kawa moved this to A tester in Pokemon Crystal - Web on 2026-10-16 11:28:05 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kawa/Crystal#81