/**
 * 超管端 E2E 测试 - 登录流程
 */

import { test, expect, Page } from '@playwright/test';
import { loginAsAdmin, logout } from './helpers';
import { ADMIN_CONFIG } from './fixtures';

test.describe('超管登录流程', () => {
  test('超管登录成功', async ({ page }) => {
    await loginAsAdmin(page);

    // 验证跳转到正确的仪表盘页面
    await expect(page).toHaveURL(new RegExp(`${ADMIN_CONFIG.dashboardPath}`));
    await expect(page).toHaveTitle(/少儿智慧阅读/);
  });

  test('验证跳转到正确的仪表盘页面', async ({ page }) => {
    await loginAsAdmin(page);

    // 验证数据看板页面元素
    await expect(page.getByText('数据看板').or(page.getByText('数据看板'))).toBeVisible({
      timeout: 10000,
    });
  });

  test('记住登录状态', async ({ page }) => {
    await loginAsAdmin(page);

    // 刷新页面，验证登录状态保持
    await page.reload();

    // 应该仍然在仪表盘页面
    await expect(page).toHaveURL(new RegExp(`${ADMIN_CONFIG.dashboardPath}`));
  });

  test('错误密码登录失败', async ({ page }) => {
    await page.goto('/login');

    // 点击超管角色按钮（使用 CSS 选择器）
    await page.locator('.role-btn').filter({ hasText: '超管' }).first().click();

    // 输入正确账号和错误密码
    await page.getByPlaceholder('请输入账号').fill(ADMIN_CONFIG.account);
    await page.getByPlaceholder('请输入密码').fill('wrongpassword');

    // 点击登录按钮（使用 CSS 选择器）
    await page.locator('.login-btn').click();

    // 等待错误提示
    await expect(page.locator('.ant-message-error')).toBeVisible({ timeout: 5000 });
  });

  test('账号不存在登录失败', async ({ page }) => {
    await page.goto('/login');

    // 点击超管角色按钮（使用 CSS 选择器）
    await page.locator('.role-btn').filter({ hasText: '超管' }).first().click();

    // 输入不存在的账号
    await page.getByPlaceholder('请输入账号').fill('nonexistent_admin');
    await page.getByPlaceholder('请输入密码').fill(ADMIN_CONFIG.password);

    // 点击登录按钮（使用 CSS 选择器）
    await page.locator('.login-btn').click();

    // 等待错误提示
    await expect(page.locator('.ant-message-error')).toBeVisible({ timeout: 5000 });
  });
});
