[object Object]

← back to Commercialrealestate

CRCP: harden per-broker grind — auto-dismiss JS dialogs + allSettled (one bad Crexi page no longer crashes the run)

c189e73db06c69dad3435859ab73c47f3b27417b · 2026-08-19 10:56:44 -0700 · Steve Abrams

Files touched

Diff

commit c189e73db06c69dad3435859ab73c47f3b27417b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Aug 19 10:56:44 2026 -0700

    CRCP: harden per-broker grind — auto-dismiss JS dialogs + allSettled (one bad Crexi page no longer crashes the run)
---
 scripts/backfill-crexi-brokers.js | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/scripts/backfill-crexi-brokers.js b/scripts/backfill-crexi-brokers.js
index 330e314..edc68b0 100644
--- a/scripts/backfill-crexi-brokers.js
+++ b/scripts/backfill-crexi-brokers.js
@@ -62,8 +62,14 @@ async function worker(page) {
   console.log(`Crexi per-broker backfill: ${work.length} rows, ${TABS} parallel openclaw tabs ($0). Background grind.`);
   const browser = await chromium.connectOverCDP(CDP);
   const ctx = browser.contexts()[0] || await browser.newContext();
-  const pages = []; for (let i = 0; i < TABS; i++) pages.push(await ctx.newPage());
-  await Promise.all(pages.map(p => worker(p)));
+  const pages = [];
+  for (let i = 0; i < TABS; i++) {
+    const p = await ctx.newPage();
+    p.on('dialog', d => d.dismiss().catch(() => {}));   // auto-dismiss beforeunload/alert popups (crashed the run before)
+    p.setDefaultTimeout(30000);
+    pages.push(p);
+  }
+  await Promise.allSettled(pages.map(p => worker(p)));   // one worker/page dying never kills the batch
   for (const p of pages) await p.close().catch(()=>{});
   flush();
   console.log(`\nDone: ${done} pages, ${hit} broker phones added. ${work.length - done} left (re-run to continue).`);

← 1768107 repoint all 3 direct scrapers (crexi/firm-site/personal-site  ·  back to Commercialrealestate  ·  firm-site scraper: scroll for lazy-loaded grids + try common eab941c →