diff --git a/src/lib/hanime1/scraper.test.ts b/src/lib/hanime1/scraper.test.ts index dc0c112..84cf6d6 100644 --- a/src/lib/hanime1/scraper.test.ts +++ b/src/lib/hanime1/scraper.test.ts @@ -48,6 +48,22 @@ describe('parseVideoList — homepage feed', () => { expect(result.nextPage).toBe(2); // page 1 always advances to 2 on a multi-page feed expect(result.lastPage).toBeGreaterThan(1); }); + + it('treats an empty page as terminal even when pagination.next markers exist', () => { + // Live-verified shape: past-the-end pages render zero cards but still + // carry pagination.next markers. Trusting them made the infinite query + // walk empty pages forever. + const html = ` +
+ `; + const result = parseVideoList(html, 2); + expect(result.items).toEqual([]); + expect(result.nextPage).toBeNull(); + expect(result.lastPage).toBeNull(); + }); }); describe('parseVideoList — genre search page', () => { diff --git a/src/lib/hanime1/scraper.ts b/src/lib/hanime1/scraper.ts index c530801..2486aa4 100644 --- a/src/lib/hanime1/scraper.ts +++ b/src/lib/hanime1/scraper.ts @@ -199,6 +199,14 @@ export function parseVideoList(html: string, currentPage = 1): ListResult