v0.2.0: CRM/ERP 系统升级 - 清理 .gitignore 并移除误提交的 venv/env/db 文件
- 更新 .gitignore:全面覆盖环境变量、数据库、日志、缓存、上传文件 - 移除误跟踪的 server/venv/、crm_data.db、.env 文件 - 新增 server/.env.example 模板 - 新增合同管理、利润核算、AI教练等功能模块 - 新增 Playwright e2e 测试套件 - 前后端多项功能升级和 bug 修复
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* 前端路由守卫与权限 E2E 测试
|
||||
* 覆盖: 未登录重定向 / 已登录访问 /login / Token 失效后跳转
|
||||
*/
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
// 不使用全局 auth
|
||||
test.use({ storageState: { cookies: [], origins: [] } });
|
||||
|
||||
test.describe('路由守卫', () => {
|
||||
test('未登录访问受保护页面被重定向到登录页', async ({ page }) => {
|
||||
await page.goto('/customers');
|
||||
await page.waitForURL(/\/login/);
|
||||
await expect(page.locator('.login-title')).toBeVisible();
|
||||
});
|
||||
|
||||
test('未登录访问订单页被重定向', async ({ page }) => {
|
||||
await page.goto('/orders');
|
||||
await page.waitForURL(/\/login/);
|
||||
});
|
||||
|
||||
test('未登录访问设置页被重定向', async ({ page }) => {
|
||||
await page.goto('/settings');
|
||||
await page.waitForURL(/\/login/);
|
||||
});
|
||||
|
||||
test('登录页直接可访问', async ({ page }) => {
|
||||
await page.goto('/login');
|
||||
// 不会重定向,直接显示登录页
|
||||
await expect(page.locator('.login-title')).toContainText('CRM');
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('Token 销毁后行为', () => {
|
||||
test('清除 Token 后访问受保护页面被重定向', async ({ page }) => {
|
||||
// 先登录
|
||||
await page.goto('/login');
|
||||
await page.getByPlaceholder('用户名').fill('admin');
|
||||
await page.getByPlaceholder('密码').fill('123456');
|
||||
await page.getByRole('button', { name: '登 录' }).click();
|
||||
await page.waitForURL('/', { timeout: 10000 });
|
||||
|
||||
// 清除 localStorage(模拟 Token 销毁)
|
||||
await page.evaluate(() => localStorage.clear());
|
||||
|
||||
// 访问受保护页面
|
||||
await page.goto('/customers');
|
||||
// 应被重定向到登录页
|
||||
await page.waitForURL(/\/login/, { timeout: 5000 });
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user