u
This commit is contained in:
1 parent
15e0ae5b67
commit
e434374db5
71 files changed
+5726
-329
No files matched your search
@@ -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,
|
||||
},
|
||||
})
|
||||
Reference in new issue
Block a user