diff --git a/sync/src/scraper.ts b/sync/src/scraper.ts index c478ff0..3561ac4 100644 --- a/sync/src/scraper.ts +++ b/sync/src/scraper.ts @@ -144,27 +144,37 @@ async function scrapeMembers(frame: Frame): Promise { // We clear it before submitting so all members of the fire station are returned. const hasForm = await frame.$('form[name="frmsearch"]') !== null; if (hasForm) { - const cleared = await frame.evaluate(() => { + const fieldDump = await frame.evaluate(() => { const form = (document as any).forms['frmsearch']; - if (!form) return []; - const clearedFields: string[] = []; + if (!form) return { cleared: [], allFields: [] }; + const cleared: string[] = []; + const allFields: string[] = []; for (const el of Array.from(form.elements) as HTMLInputElement[]) { + if (el.type === 'hidden') continue; const name = (el.name ?? '').toLowerCase(); const id = (el.id ?? '').toLowerCase(); + if (el.value) allFields.push(`${el.name || el.id}=${el.value}`); if (name.includes('standesbuch') || id.includes('standesbuch')) { el.value = ''; - clearedFields.push(el.name || el.id); + cleared.push(el.name || el.id); } } - return clearedFields; + return { cleared, allFields }; }); - if (cleared.length > 0) { - log(`Cleared Standesbuchnummer filter fields: ${cleared.join(', ')}`); + if (fieldDump.allFields.length > 0) { + log(`Search form active filters before clear: ${fieldDump.allFields.join(', ')}`); + } + if (fieldDump.cleared.length > 0) { + log(`Cleared Standesbuchnummer filter fields: ${fieldDump.cleared.join(', ')}`); } else { log('Search form found — no Standesbuchnummer field detected, submitting as-is'); } - await frame.evaluate(() => { (document as any).forms['frmsearch'].submit(); }); - await frame.waitForLoadState('networkidle'); + // Use Promise.all to start waiting for navigation BEFORE triggering the submit, + // otherwise waitForLoadState resolves against the already-idle current page. + await Promise.all([ + frame.waitForNavigation({ waitUntil: 'networkidle', timeout: 30000 }), + frame.evaluate(() => { (document as any).forms['frmsearch'].submit(); }), + ]); log(`After form submit: ${frame.url()}`); }