/**
 * 教师端 E2E 测试 - 登录
 */

import { test, expect } from '@playwright/test';
import { TEACHER_CONFIG } from './fixtures';

test.describe('教师端登录功能', () => {
  test('验证登录页面加载', async ({ page }) => {
    await page.goto('/login');

    // 验证页面标题
    await expect(page).toHaveTitle(/少儿智慧阅读/);

    // 验证角色选择按钮存在
    await expect(page.locator('.role-btn')).toBeVisible();

    // 验证教师角色按钮存在
    const teacherBtn = page.locator('.role-btn').filter({ hasText: '教师' });
    await expect(teacherBtn).toBeVisible();
  });

  test('使用正确账号密码登录', async ({ page }) => {
    await page.goto('/login');

    // 点击教师角色按钮
    await page.locator('.role-btn').filter({ hasText: '教师' }).first().click();

    // 输入账号密码
    await page.getByPlaceholder('请输入账号').fill(TEACHER_CONFIG.account);
    await page.getByPlaceholder('请输入密码').fill(TEACHER_CONFIG.password);

    // 点击登录按钮
    await page.locator('.login-btn').click();

    // 等待登录按钮消失
    await page.locator('.login-btn').waitFor({ state: 'hidden', timeout: 10000 });

    // 等待页面跳转
    await page.waitForURL(/teacher/, { timeout: 10000 });

    // 验证跳转到教师端首页
    await expect(page).toHaveURL(/.*teacher.*/);
  });

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

    // 点击教师角色按钮
    await page.locator('.role-btn').filter({ hasText: '教师' }).first().click();

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

    // 点击登录按钮
    await page.locator('.login-btn').click();

    // 等待错误提示
    await page.waitForSelector('.ant-message-error, [class*="error"]', { timeout: 5000 }).catch(() => {});

    // 验证仍在登录页
    await expect(page).toHaveURL(/.*login.*/);
  });

  test('登录表单验证', async ({ page }) => {
    await page.goto('/login');

    // 点击教师角色按钮
    await page.locator('.role-btn').filter({ hasText: '教师' }).first().click();

    // 不输入账号密码直接点击登录
    await page.locator('.login-btn').click();

    // 等待验证提示
    await page.waitForTimeout(1000);

    // 验证是否显示验证错误提示
    const hasError = await page.locator('.ant-message-error, .ant-form-item-explain-error').count() > 0;
    test.info().annotations.push({
      type: 'info',
      description: `表单验证提示：${hasError ? '存在' : '不存在'}`,
    });
  });
});
