import puppeteerExtra from "puppeteer-extra";
import StealthPlugin from "puppeteer-extra-plugin-stealth";

puppeteerExtra.use(StealthPlugin());

async function debugCMA() {
  const browser = await puppeteerExtra.launch({
    headless: true,
    args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"],
  });

  const page = await browser.newPage();
  await page.setUserAgent(
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
  );

  try {
    console.log("🌐 Navigating to CMA tracking page...");
    await page.goto("https://www.cma-cgm.com/ebusiness/tracking", { waitUntil: "domcontentloaded", timeout: 15000 });
    
    await new Promise(r => setTimeout(r, 3000));

    // Get all inputs
    const inputs = await page.evaluate(() => {
      return Array.from(document.querySelectorAll("input")).map(el => ({
        id: (el as any).id,
        name: (el as any).name,
        type: (el as any).type,
        placeholder: (el as any).placeholder,
      }));
    });

    console.log("📝 Found inputs:", JSON.stringify(inputs, null, 2));

    // Get all buttons
    const buttons = await page.evaluate(() => {
      return Array.from(document.querySelectorAll("button")).map(el => ({
        id: (el as any).id,
        name: (el as any).name,
        text: el.textContent?.substring(0, 50),
      }));
    });

    console.log("🔘 Found buttons:", JSON.stringify(buttons, null, 2));

    // Save HTML for inspection
    const html = await page.content();
    console.log(`\n📄 Page has ${html.length} characters`);
    
    // Check for DataDome
    const hasDataDome = html.includes("captcha-delivery.com") || html.includes("DataDome");
    console.log(`🚨 DataDome detected: ${hasDataDome}`);

    // Check for Cloudflare
    const hasCloudflare = html.includes("cf_challenge");
    console.log(`☁️  Cloudflare detected: ${hasCloudflare}`);

  } catch (error) {
    console.error("❌ Error:", (error as any).message);
  } finally {
    await browser.close();
  }
}

debugCMA();
