import { JSDOM } from 'jsdom'; import { collectAmazonNextPageUrl } from '../src/page-worker/web-injectors/amazon-search-pagination'; const test = async (name: string, html: string, expected: string | null) => { const dom = new JSDOM(html, { url: 'https://www.amazon.com/s?k=security+camera&page=1' }); const previousDocument = globalThis.document; const previousWindow = globalThis.window; Object.assign(globalThis, { document: dom.window.document, window: dom.window }); try { const actual = await collectAmazonNextPageUrl(); if (actual !== expected) throw new Error(`${name}: expected ${expected}, received ${actual}`); } finally { Object.assign(globalThis, { document: previousDocument, window: previousWindow }); dom.window.close(); } }; const main = async () => { await test( 'active next page', 'Next', 'https://www.amazon.com/s?k=security+camera&page=2', ); await test( 'disabled next page', 'Next', null, ); await test('missing next page', '
No pagination
', null); console.log('Amazon search pagination tests passed.'); }; void main();