fix(e2e): 修复 10 个被 skip 的 E2E 测试
- 将 playwright.config.ts 的 mkdtemp 替换为固定路径,解决主进程/worker 临时目录不一致问题 - 交换后端 WAL 与迁移执行顺序,确保 sql.js 能读取到完整 schema - 修复 models.spec.ts 断言使用 exact:true 避免统一模型 ID 列干扰 - 移除全部 10 个 test.skip,26 个 E2E 测试全部通过
This commit is contained in:
@@ -31,18 +31,21 @@
|
||||
|
||||
### Requirement: 临时文件隔离
|
||||
|
||||
E2E 测试 SHALL 使用临时目录隔离所有文件,测试结束后自动清理。
|
||||
E2E 测试 SHALL 使用固定临时目录隔离所有文件,确保主进程与 worker 进程使用同一路径,测试结束后自动清理。
|
||||
|
||||
#### Scenario: 临时目录创建
|
||||
|
||||
- **WHEN** Playwright 配置加载
|
||||
- **THEN** SHALL 使用 `fs.mkdtempSync(path.join(os.tmpdir(), 'nex-e2e-'))` 创建临时目录
|
||||
- **THEN** SHALL 使用固定路径 `path.join(os.tmpdir(), 'nex-e2e')` 作为临时目录
|
||||
- **THEN** SHALL 先执行 `fs.rmSync(tempDir, { recursive: true, force: true })` 清理残留
|
||||
- **THEN** SHALL 执行 `fs.mkdirSync` 创建 `log/` 子目录
|
||||
- **THEN** 临时目录 SHALL 包含 `test.db`(数据库)和 `log/`(日志)子路径
|
||||
|
||||
#### Scenario: 临时目录清理
|
||||
|
||||
- **WHEN** Playwright 所有测试完成
|
||||
- **THEN** `globalTeardown` SHALL 使用 `fs.rm(dir, { recursive: true, force: true })` 删除临时目录
|
||||
- **THEN** `globalTeardown` SHALL 使用固定路径 `path.join(os.tmpdir(), 'nex-e2e')` 定位临时目录
|
||||
- **THEN** SHALL 使用 `fs.rmSync(dir, { recursive: true, force: true })` 删除临时目录
|
||||
- **THEN** 清理 SHALL 在 webServer 进程关闭之后执行
|
||||
|
||||
### Requirement: 统计数据 seed
|
||||
@@ -103,7 +106,7 @@ E2E 测试 SHALL 验证供应商的完整 CRUD 用户流程。
|
||||
|
||||
### Requirement: 模型管理 E2E 测试
|
||||
|
||||
E2E 测试 SHALL 验证模型的完整 CRUD 用户流程。
|
||||
E2E 测试 SHALL 验证模型的完整 CRUD 用户流程,断言 SHALL 精确匹配以避免多列文本干扰。
|
||||
|
||||
#### Scenario: 前置数据准备
|
||||
|
||||
@@ -116,21 +119,24 @@ E2E 测试 SHALL 验证模型的完整 CRUD 用户流程。
|
||||
- **THEN** 对话框 SHALL 关闭
|
||||
- **THEN** 新模型 SHALL 出现在展开行的模型表格中
|
||||
- **THEN** 模型表格 SHALL 显示统一模型 ID(`provider_id/model_name` 格式)
|
||||
- **THEN** 验证断言 SHALL 使用 `{ exact: true }` 精确匹配模型名称文本,避免匹配到"统一模型 ID"列
|
||||
|
||||
#### Scenario: 编辑模型并验证
|
||||
|
||||
- **WHEN** 用户点击模型编辑按钮、修改并提交
|
||||
- **THEN** 对话框 SHALL 关闭
|
||||
- **THEN** 模型表格 SHALL 显示更新后的数据
|
||||
- **THEN** 验证断言 SHALL 使用 `{ exact: true }` 精确匹配模型名称文本
|
||||
|
||||
#### Scenario: 删除模型并验证
|
||||
|
||||
- **WHEN** 用户点击模型删除按钮并确认
|
||||
- **THEN** 该模型 SHALL 从模型表格中消失
|
||||
- **THEN** 验证断言 SHALL 使用 `{ exact: true }` 精确匹配模型名称文本
|
||||
|
||||
### Requirement: 统计页面 E2E 测试
|
||||
|
||||
E2E 测试 SHALL 验证统计页面的数据展示和筛选功能。
|
||||
E2E 测试 SHALL 验证统计页面的数据展示和筛选功能。所有测试用例 SHALL NOT 被跳过。
|
||||
|
||||
#### Scenario: 统计数据准备
|
||||
|
||||
@@ -144,9 +150,12 @@ E2E 测试 SHALL 验证统计页面的数据展示和筛选功能。
|
||||
- **THEN** 统计摘要卡片 SHALL 显示正确的总请求量
|
||||
- **THEN** 统计摘要卡片 SHALL 显示正确的活跃模型数和活跃供应商数
|
||||
- **THEN** 统计表格 SHALL 显示 seed 的数据行
|
||||
- **THEN** 页面 SHALL 渲染趋势图表区域(标题包含"请求趋势")
|
||||
|
||||
#### Scenario: 统计筛选验证
|
||||
|
||||
- **WHEN** 页面加载完成
|
||||
- **THEN** 页面 SHALL 显示筛选栏(供应商下拉选择和模型名称输入框)
|
||||
- **WHEN** 用户选择供应商筛选条件
|
||||
- **THEN** 统计表格 SHALL 只显示该供应商的数据
|
||||
- **WHEN** 用户输入模型名称筛选条件
|
||||
|
||||
Reference in New Issue
Block a user