← back to Consulting Rentv Com
add prod-check + local-open verification harnesses (prove deployed portal renders; prod sits behind RENTV sign-in gate)
9b90e4f6d8988f55b460e2269b0e6d3a49bf8d77 · 2026-08-07 07:33:43 -0700 · Steve
Files touched
A scripts/local-open.mjsA scripts/prod-check.mjs
Diff
commit 9b90e4f6d8988f55b460e2269b0e6d3a49bf8d77
Author: Steve <steve@designerwallcoverings.com>
Date: Fri Aug 7 07:33:43 2026 -0700
add prod-check + local-open verification harnesses (prove deployed portal renders; prod sits behind RENTV sign-in gate)
---
scripts/local-open.mjs | 20 ++++++++++++++++++++
scripts/prod-check.mjs | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+)
diff --git a/scripts/local-open.mjs b/scripts/local-open.mjs
new file mode 100644
index 0000000..d8ba3dc
--- /dev/null
+++ b/scripts/local-open.mjs
@@ -0,0 +1,20 @@
+import { chromium } from 'playwright';
+import { dirname, join } from 'node:path';
+import { fileURLToPath } from 'node:url';
+const HERE = dirname(fileURLToPath(import.meta.url));
+const FILE = 'file://' + join(HERE, '..', 'public', 'portal.html');
+const OUT = join(HERE, '..', 'reports');
+const b = await chromium.launch();
+const pg = await b.newPage({ viewport: { width: 1440, height: 1600 }, deviceScaleFactor: 2 });
+await pg.goto(FILE, { waitUntil: 'networkidle', timeout: 45000 }).catch(()=>{});
+await pg.evaluate(() => { document.body && (document.body.style.display='block'); });
+await pg.waitForTimeout(1500);
+const info = await pg.evaluate(() => ({
+ title: document.title,
+ deals: document.querySelectorAll('[class*="deal"]').length,
+ bodyBg: getComputedStyle(document.body).backgroundColor,
+}));
+console.log(JSON.stringify(info));
+await pg.screenshot({ path: join(OUT, 'portal-live.png'), fullPage: false });
+console.log('saved reports/portal-live.png');
+await b.close();
diff --git a/scripts/prod-check.mjs b/scripts/prod-check.mjs
new file mode 100644
index 0000000..8a6b180
--- /dev/null
+++ b/scripts/prod-check.mjs
@@ -0,0 +1,37 @@
+#!/usr/bin/env node
+// prod-check.mjs — load the LIVE prod consulting portal in a real Chromium (browser
+// fingerprint passes the edge WAF that 403's curl), screenshot it, and probe the content
+// so we can definitively confirm prod is serving the refreshed 141KB growth page. $0 / local.
+import { chromium } from 'playwright';
+import { dirname, join } from 'node:path';
+import { fileURLToPath } from 'node:url';
+const HERE = dirname(fileURLToPath(import.meta.url));
+const OUT = join(HERE, '..', 'reports');
+const URL = 'https://rentv.agentabrams.com/consulting/portal.html';
+
+const b = await chromium.launch();
+const ctx = await b.newContext({ viewport: { width: 1440, height: 1400 } });
+const pg = await ctx.newPage();
+let status = null;
+pg.on('response', r => { if (r.url().startsWith(URL.split('?')[0])) status = r.status(); });
+await pg.goto(URL, { waitUntil: 'networkidle', timeout: 45000 }).catch(e => console.error('goto:', e.message));
+await pg.evaluate(() => { document.body && (document.body.style.display = 'block'); }).catch(()=>{});
+await pg.waitForTimeout(1500);
+
+const probe = await pg.evaluate(() => {
+ const html = document.documentElement.outerHTML;
+ return {
+ title: document.title,
+ htmlBytes: html.length,
+ hasDaynightPin: /html,body\{background:#000!important/.test(html),
+ bodyBg: getComputedStyle(document.body).backgroundColor,
+ // pull a couple of visible deal addresses to prove the refreshed CRCP data rendered
+ dealCards: Array.from(document.querySelectorAll('[class*="deal"], .deal-card, .card')).slice(0,3)
+ .map(el => (el.textContent||'').replace(/\s+/g,' ').trim().slice(0,80)),
+ };
+});
+console.log('HTTP status:', status);
+console.log(JSON.stringify(probe, null, 2));
+await pg.screenshot({ path: join(OUT, 'prod-portal.png'), fullPage: false });
+console.log('screenshot -> reports/prod-portal.png');
+await b.close();
← 55f002c chore: v0.4.0 (session close — CRCP deal refresh + refresh-d
·
back to Consulting Rentv Com
·
chore: v0.4.1 (session close — durability landed to rentv wo 753fad8 →