/**
 * 调试登录流程
 */
import { test, expect } from '@playwright/test';

test.describe('登录调试', () => {
  test('测试登录流程', async ({ page }) => {
    test.setTimeout(60000);

    console.log('=== 开始登录测试 ===');

    // 步骤 1: 访问登录页面
    console.log('步骤 1: 访问登录页面');
    await page.goto('/login', { timeout: 30000, waitUntil: 'commit' });
    await page.waitForTimeout(1000);

    // 截图查看登录页面
    await page.screenshot({ path: 'test-results/debug-login-page.png' });
    console.log('登录页面截图已保存');

    // 步骤 2: 点击超管按钮
    console.log('步骤 2: 点击超管按钮');
    const superAdminButton = page.getByText('超管').first();
    const isVisible = await superAdminButton.isVisible().catch(() => false);
    console.log('超管按钮可见:', isVisible);

    if (isVisible) {
      await superAdminButton.click();
      await page.waitForTimeout(500);
      console.log('已点击超管按钮');
    } else {
      console.log('超管按钮不可见');
      // 截图查看当前页面
      await page.screenshot({ path: 'test-results/debug-no-superadmin.png' });
    }

    // 步骤 3: 输入账号密码
    console.log('步骤 3: 输入账号密码');
    const accountInput = page.getByPlaceholder('请输入账号');
    const accountVisible = await accountInput.isVisible().catch(() => false);
    console.log('账号输入框可见:', accountVisible);

    if (accountVisible) {
      await accountInput.fill('admin');
      await page.getByPlaceholder('请输入密码').fill('123456');
      console.log('已输入账号密码');
    }

    // 步骤 4: 点击登录按钮
    console.log('步骤 4: 点击登录按钮');
    const loginButton = page.getByRole('button', { name: '登 录' });
    const loginVisible = await loginButton.isVisible().catch(() => false);
    console.log('登录按钮可见:', loginVisible);

    if (loginVisible) {
      // 设置响应监听
      const [response] = await Promise.all([
        page.waitForResponse(
          res => res.url().includes('/api/v1/auth/login') && res.status() === 200,
          { timeout: 15000 }
        ).catch(() => {
          console.log('登录 API 响应超时');
          return null;
        }),
        loginButton.click()
      ]);

      console.log('已点击登录按钮');

      if (response) {
        const responseData = await response.json().catch(() => null);
        console.log('登录响应:', responseData);
      }

      // 等待重定向
      await page.waitForLoadState('networkidle', { timeout: 15000 }).catch(() => {
        console.log('networkidle 超时');
      });

      // 截图查看登录后页面
      await page.screenshot({ path: 'test-results/debug-after-login.png' });
      console.log('登录后页面截图已保存');

      console.log('当前 URL:', page.url());
    }

    console.log('=== 登录测试完成 ===');
  });
});
