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

async function debugPage() {
  const browser = await chromium.launch({ headless: true });
  const page = await browser.newPage();

  // 捕获页面错误
  page.on('console', msg => {
    console.log(`页面控制台: ${msg.type()} ${msg.text()}`);
  });

  page.on('pageerror', error => {
    console.log(`页面错误: ${error.message}`);
  });

  try {
    console.log('导航到登录页面...');
    await page.goto('http://localhost:8080/admin/login');

    console.log('填写登录信息...');
    await page.getByPlaceholder('请输入用户名').fill('admin');
    await page.getByPlaceholder('请输入密码').fill('admin123');

    console.log('点击登录按钮...');
    await page.getByRole('button', { name: '登录' }).click();

    console.log('等待登录完成...');
    await page.waitForLoadState('networkidle');

    // 等待更长时间确保页面完全加载
    await page.waitForTimeout(5000);

    // 检查页面是否完全加载
    const loadingIndicator = await page.locator('text=Loading...').count();
    console.log('Loading指示器数量:', loadingIndicator);

    if (loadingIndicator > 0) {
      console.log('页面仍在加载，等待更多时间...');
      await page.waitForTimeout(3000);
    }

    console.log('当前URL:', page.url());
    console.log('页面标题:', await page.title());

    // 尝试直接访问用户管理页面
    console.log('尝试直接访问用户管理页面...');
    await page.goto('http://localhost:8080/admin/users');
    await page.waitForLoadState('networkidle');
    await page.waitForTimeout(5000);

    console.log('用户管理页面URL:', page.url());
    console.log('用户管理页面标题:', await page.title());

    // 检查用户管理页面元素
    const headings = await page.getByRole('heading').all();
    console.log('页面标题数量:', headings.length);

    for (let i = 0; i < headings.length; i++) {
      const text = await headings[i].textContent();
      console.log(`标题 ${i}:`, text);
    }

    // 检查按钮
    const buttons = await page.getByRole('button').all();
    console.log('按钮数量:', buttons.length);

    for (let i = 0; i < Math.min(buttons.length, 10); i++) {
      const text = await buttons[i].textContent();
      console.log(`按钮 ${i}:`, text);
    }

    // 检查页面内容
    const bodyText = await page.textContent('body');
    console.log('页面内容前500字符:', bodyText.substring(0, 500));

  } catch (error) {
    console.error('调试出错:', error);
  } finally {
    await browser.close();
  }
}

debugPage();