This commit is contained in:
oneao committed 2026-10-14 17:25:47 +08:00
1 parent 15e0ae5b67
commit e434374db5
71 files changed
+5726 -329

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
import { defineConfig, devices } from '@playwright/test'
const BASE_URL = process.env.E2E_BASE_URL || 'http://127.0.0.1:5090'
/**
* E2E(Playwright)。与 Vitest 的分工:
* vitest → `src/**\/*.{test,spec}.ts`,happy-dom 里的单元测试(见 vitest.config.ts)
* playwright → `e2e/**`,真实浏览器 + 真后端
*
* `testDir` 必须限定为 `./e2e`:Playwright 默认的 testMatch 会顺着包目录把
* `src/**\/*.spec.ts` 也收进来,那样 vitest 的用例会被塞进浏览器跑,报一堆莫名其妙的错。
*
* 前置条件:后端已在 8088 起来(见 CODEBUDDY.md)。前端 dev server 由下面的 webServer
* 负责,已经在跑就复用(不会重复占 5090)。
*/
export default defineConfig({
testDir: './e2e',
fullyParallel: true,
forbidOnly: Boolean(process.env.CI),
retries: process.env.CI ? 1 : 0,
reporter: process.env.CI ? [['list'], ['html', { open: 'never' }]] : [['list']],
// 整轮只在这里登录一次,原因见 e2e/support/session.ts 的「互踢」说明
globalSetup: './e2e/support/global-setup.ts',
// dev server 是按需转译的:某个页面**第一次**被访问时要现编整张依赖图,冷启动实测 5-11s。
// 用默认的 5s expect 超时会表现为「同一个用例时好时坏」,所以统一放宽。
// 后端慢(登录/菜单查询走远程 SQL Server)也吃这个时间。
timeout: 60_000,
expect: { timeout: 15_000 },
use: {
baseURL: BASE_URL,
actionTimeout: 15_000,
navigationTimeout: 30_000,
trace: 'retain-on-failure',
screenshot: 'only-on-failure',
},
projects: [
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
// 下载 Playwright 自带 Chromium 不便时(慢网 / 离线 / 公司代理),
// 用系统已装的浏览器:E2E_CHANNEL=msedge 或 E2E_CHANNEL=chrome
channel: process.env.E2E_CHANNEL || undefined,
},
},
],
webServer: {
command: 'pnpm dev',
url: BASE_URL,
reuseExistingServer: true,
timeout: 120_000,
},
})