Add app-level test coverage for the complete library flow, including the states a user can encounter. ## Tasks - [ ] Add an App interaction test that changes subject, changes sorting, navigates or jumps to a book, and uses favorites in one flow - [ ] Cover saved choices after reload and missing/corrupt `sessionStorage` or `localStorage` data - [ ] Cover loading, OpenLibrary error, and no-results states - [ ] Verify subject changes make one new mocked request, while sorting and favorites do not make unnecessary requests - [ ] Use msw handlers or fixtures only; an unhandled network request must fail the test - [ ] Update snapshots deliberately only where the rendered output changes ## Acceptance criteria - [ ] The main user flow and error states are covered by Vitest + React Testing Library - [ ] Tests never reach the real OpenLibrary API - [ ] `npm run format:check` / `npm run lint` / `npm test` / `npm run build` pass Branch `test/<n>-library-flow` from main. Part of M4.