import { chromium } from "@playwright/test";

(async () => {
  console.log("════════════════════════════════════════════════════════");
  console.log("     ✅ FINAL INTEGRATED TEST (JS Interop Enabled)");
  console.log("════════════════════════════════════════════════════════\n");
  
  const b = await chromium.launch({ headless: true });
  const p = await b.newPage();
  
  p.on("console", msg => {
    const text = msg.text();
    if (text.includes("[Auth]") || text.includes("[Dashboard]") || text.includes("[Login]")) {
      console.log("  📝 " + text);
    }
  });
  
  try {
    console.log("1️⃣  로그인 페이지 로드");
    await p.goto("http://localhost:5265/login", { waitUntil: "networkidle" });
    
    console.log("2️⃣  로그인 (admin/quant123!)");
    await p.fill('input[type="text"]', "admin");
    await p.fill('input[type="password"]', "quant123!");
    await p.click('button:has-text("로그인")');
    
    console.log("3️⃣  대기 및 모니터링 (12초)\n");
    for (let i = 1; i <= 12; i++) {
      await new Promise(r => setTimeout(r, 1000));
      const url = p.url();
      if (!url.includes("login")) {
        console.log(`\n   ✅ [${i}s] 리다이렉트됨!`);
        console.log(`   URL: ${url}`);
        break;
      }
    }
    
    const finalUrl = p.url();
    console.log(`\n4️⃣  최종 상태:`);
    console.log(`   URL: ${finalUrl}`);
    
    if (finalUrl.includes("/dashboard")) {
      console.log("   ✅ 대시보드 도착!");
      
      // 콘텐츠 확인
      await new Promise(r => setTimeout(r, 2000));
      const content = await p.content();
      
      if (content.includes("관리자 대시보드")) {
        console.log("   ✅ 대시보드 콘텐츠 확인됨!");
        console.log("\n🎉🎉🎉 로그인 시스템 완전 성공!\n");
      } else {
        console.log("   ⚠️  콘텐츠 미확인");
      }
    } else if (finalUrl.includes("/login")) {
      console.log("   ❌ 다시 로그인으로 돌아옴");
      console.log("   → 인증 체크에서 실패했거나, JS interop이 작동하지 않음");
    } else {
      console.log("   ❓ 예상치 못한 페이지");
    }
    
    await p.screenshot({ path: "./final-integrated-test.png", fullPage: true });
    console.log("📷 스크린샷: final-integrated-test.png");
    
  } catch (e) {
    console.error("Error:", e.message);
  }
  
  await b.close();
})();
