Files
plp/tests/e2e/auth.spec.ts
T
root afab4e7cba test(web): 补充 Web MVP 端到端测试与本地测试编排
- 新增 Playwright E2E(治理、登录、投瓶捞瓶回复与实时聊天、举报拉黑与断线恢复)共 9 条用例
- 每个用例前重置数据库、用例后关闭全部 browser context,消除跨用例污染与资源泄漏
- 前端改由 Playwright 托管构建与 preview(关闭 SW);Vite 代理注入 Origin 头以通过接口 Origin 校验
- 根级 vitest 排除 Playwright 用例与需专用配置的 web 用例,避免误收集导致的假失败
- 测试手机号按实测校验结果收敛白名单,避免用例传入会被后端拒绝的号段

验证结果:
- Web E2E 9/9 连续两轮通过(含运行前后服务健康检查)
- API E2E 146/146 连续两轮通过
- 单测:根级 14 文件/119 用例、web 包 8 文件/31 用例通过
- typecheck、lint、build、依赖审计(audit)均通过
2026-09-18 11:23:20 +08:00

40 lines
1.2 KiB
TypeScript

import { test, expect } from "./fixtures";
import { freshAccount, loginViaUi } from "./helpers";
test.describe("authentication", () => {
test("unauthenticated user is redirected to the login page", async ({
page,
}) => {
await page.goto("/conversations");
await expect(page).toHaveURL(/\/login\?redirect=/);
await expect(
page.getByRole("button", { name: /获取演示验证码/ }),
).toBeVisible();
});
test("demo login reaches the sea home and persists across reload", async ({
page,
}) => {
const account = freshAccount("137");
await loginViaUi(page, account);
await expect(page.getByRole("link", { name: /扔一只瓶子/ })).toBeVisible();
await page.reload();
await expect(page).toHaveURL(/\/$/);
await expect(page.getByRole("link", { name: /扔一只瓶子/ })).toBeVisible();
});
test("logout returns to login and clears the session", async ({ page }) => {
const account = freshAccount("136");
await loginViaUi(page, account);
await page.goto("/settings");
await page.getByRole("button", { name: "退出登录" }).click();
await expect(page).toHaveURL(/\/login/);
await page.goto("/");
await expect(page).toHaveURL(/\/login\?redirect=/);
});
});