← back to Marketing Command Center

scripts/probe-403-and-posts.js

36 lines

const { chromium } = require('playwright');
const BASE = 'https://marketing.designerwallcoverings.com';
(async () => {
  const browser = await chromium.launch();
  const ctx = await browser.newContext({ viewport: { width: 1600, height: 900 }, httpCredentials: { username: 'admin', password: 'DW2024!' } });
  const page = await ctx.newPage();
  const bad = [];
  page.on('response', r => { if (r.status() >= 400) bad.push(r.status() + '  ' + r.url()); });
  const perr = [];
  page.on('pageerror', e => perr.push('' + e));
  await page.goto(BASE + '/', { waitUntil: 'domcontentloaded' });
  await page.waitForTimeout(2000);

  for (const panel of ['engine', 'social']) {
    for (const sel of [`[data-panel="${panel}"]`, `a[href="#${panel}"]`, `a[href*="${panel}"]`]) {
      try { const el = page.locator(sel).first(); if (await el.count()) { await el.click({ timeout: 3000 }); break; } } catch {}
    }
    await page.waitForTimeout(2500);
    const info = await page.evaluate(() => {
      const main = document.querySelector('main, .panel, #app') || document.body;
      // find any "Failed"/error banner
      const banners = [...document.querySelectorAll('*')].filter(e => /^(failed|error|no posts|nothing|couldn|could not)/i.test((e.childNodes.length && e.textContent || '').trim().slice(0, 40)) && e.offsetHeight > 0 && e.children.length <= 2).slice(0, 5).map(e => e.tagName + '.' + (e.className || '') + ' :: ' + e.textContent.trim().slice(0, 120));
      return { title: (document.querySelector('h1,h2,.panel-title')?.innerText || '').slice(0, 60), banners, first600: main.innerText.trim().slice(0, 600) };
    });
    console.log('\n===== PANEL: ' + panel + ' =====');
    console.log('title:', info.title);
    console.log('banners:', JSON.stringify(info.banners, null, 1));
    console.log('first600:\n' + info.first600);
  }
  console.log('\n===== FAILED RESPONSES (>=400) =====');
  [...new Set(bad)].forEach(b => console.log(b));
  console.log('\n===== PAGE ERRORS =====');
  [...new Set(perr)].forEach(e => console.log(e));
  await ctx.close(); await browser.close();
})().catch(e => { console.error('FATAL', e); process.exit(1); });