login.spec.ts 1.7 KB
import { test, expect } from '@playwright/test';

/**
 * E2E 测试需要:
 *   - 后端运行在 :9090(cd backend && mvn spring-boot:run)
 *   - 前端 dev server :5173 由 playwright.config webServer 自动起
 *   - `npx playwright install chromium` 完成浏览器 binary 下载
 *
 * 本 plan Task 10 当前 .fixme(),FE 完成 review 时纳入 nice-to-have;
 * 由开发者手动 `npx playwright install && npm run e2e` 跑一次完整链路验收。
 */

test.fixme('successLogin_redirectsToUsers', async ({ page }) => {
  await page.goto('/login');
  await page.getByPlaceholder('请输入你的用户名').fill('alice');
  await page.getByPlaceholder('请输入你的密码').fill('Password1!');
  await page.getByTestId('login-submit').click();
  await expect(page).toHaveURL(/.*\/users/);
});

test.fixme('badPassword_showsError', async ({ page }) => {
  await page.goto('/login');
  await page.getByPlaceholder('请输入你的用户名').fill('alice');
  await page.getByPlaceholder('请输入你的密码').fill('WRONG');
  await page.getByTestId('login-submit').click();
  await expect(page.getByText('用户名或密码错误')).toBeVisible();
});

test.fixme('unknownCompany_showsError', async ({ page }) => {
  await page.goto('/login');
  // 通过 evaluate 把 form value 改成不存在的 companyCode
  await page.evaluate(() => {
    // 实际 UI 操作:通过 AntD Select 选不存在的项;这里 spec 留 placeholder
  });
  await page.getByPlaceholder('请输入你的用户名').fill('alice');
  await page.getByPlaceholder('请输入你的密码').fill('Password1!');
  await page.getByTestId('login-submit').click();
  await expect(page.getByText('公司不存在或已删除')).toBeVisible();
});