import { test } from '@playwright/test';

test('브라우저 콘솔 에러 확인', async ({ page }) => {
  const consoleMessages: string[] = [];
  const jsErrors: string[] = [];

  page.on('console', msg => {
    console.log(`[${msg.type().toUpperCase()}] ${msg.text()}`);
    if (msg.type() === 'error') {
      jsErrors.push(msg.text());
    }
    consoleMessages.push(`${msg.type()}: ${msg.text()}`);
  });

  page.on('pageerror', error => {
    console.log(`[PAGE ERROR] ${error.message}`);
    jsErrors.push(error.message);
  });

  console.log('\n로그인 페이지 접근...');
  await page.goto('http://localhost:5265/login');
  await page.waitForLoadState('networkidle');
  await page.waitForTimeout(2000);

  console.log('\n입력 및 로그인...');
  const usernameInput = page.locator('input[type="text"]').first();
  const passwordInput = page.locator('input[type="password"]');
  const loginButton = page.locator('button:has-text("로그인")');

  await usernameInput.fill('admin');
  await passwordInput.fill('admin');

  console.log('로그인 버튼 클릭...');
  await loginButton.click();

  await page.waitForTimeout(3000);

  console.log('\n\n╔════════════════════════════════════════════════════╗');
  console.log('║            콘솔 메시지 요약                       ║');
  console.log('╚════════════════════════════════════════════════════╝\n');

  console.log(`총 메시지: ${consoleMessages.length}`);
  console.log(`JavaScript 에러: ${jsErrors.length}`);

  if (jsErrors.length > 0) {
    console.log('\n❌ 감지된 에러:');
    jsErrors.forEach((err, i) => {
      console.log(`  ${i + 1}. ${err}`);
    });
  } else {
    console.log('\n✅ JavaScript 에러 없음');
  }

  // Blazor 관련 콘솔 메시지
  const blazorMessages = consoleMessages.filter(m => m.toLowerCase().includes('blazor'));
  if (blazorMessages.length > 0) {
    console.log('\n🔵 Blazor 메시지:');
    blazorMessages.forEach(msg => {
      console.log(`  - ${msg}`);
    });
  }

  console.log('\n최종 URL:', page.url());
});
