- 将 playwright.config.ts 的 mkdtemp 替换为固定路径,解决主进程/worker 临时目录不一致问题 - 交换后端 WAL 与迁移执行顺序,确保 sql.js 能读取到完整 schema - 修复 models.spec.ts 断言使用 exact:true 避免统一模型 ID 列干扰 - 移除全部 10 个 test.skip,26 个 E2E 测试全部通过
63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
import { defineConfig, devices } from '@playwright/test'
|
|
import fs from 'node:fs'
|
|
import os from 'node:os'
|
|
import path from 'node:path'
|
|
import { fileURLToPath } from 'node:url'
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = path.dirname(__filename)
|
|
|
|
const E2E_PORT = 19026
|
|
const tempDir = path.join(os.tmpdir(), 'nex-e2e')
|
|
if (!fs.existsSync(path.join(tempDir, 'test.db'))) {
|
|
fs.rmSync(tempDir, { recursive: true, force: true })
|
|
}
|
|
const dbPath = path.join(tempDir, 'test.db')
|
|
const logPath = path.join(tempDir, 'log')
|
|
|
|
fs.mkdirSync(logPath, { recursive: true })
|
|
|
|
process.env.NEX_BACKEND_PORT = String(E2E_PORT)
|
|
process.env.NEX_E2E_TEMP_DIR = tempDir
|
|
|
|
const backendDir = path.resolve(__dirname, '..', 'backend')
|
|
|
|
export default defineConfig({
|
|
testDir: './e2e',
|
|
fullyParallel: false,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: process.env.CI ? 2 : 0,
|
|
workers: 1,
|
|
reporter: 'html',
|
|
use: {
|
|
baseURL: 'http://localhost:5173',
|
|
trace: 'on-first-retry',
|
|
storageState: undefined,
|
|
},
|
|
projects: [
|
|
{
|
|
name: 'chromium',
|
|
use: { ...devices['Desktop Chrome'] },
|
|
},
|
|
],
|
|
globalSetup: './e2e/global-setup.ts',
|
|
globalTeardown: './e2e/global-teardown.ts',
|
|
webServer: [
|
|
{
|
|
command: `go run cmd/server/main.go --server-port ${E2E_PORT} --database-path "${dbPath}" --log-path "${logPath}" --log-level warn`,
|
|
url: `http://localhost:${E2E_PORT}/health`,
|
|
timeout: 60_000,
|
|
reuseExistingServer: false,
|
|
cwd: backendDir,
|
|
},
|
|
{
|
|
command: 'bun run dev',
|
|
url: 'http://localhost:5173',
|
|
reuseExistingServer: false,
|
|
env: {
|
|
NEX_BACKEND_PORT: String(E2E_PORT),
|
|
},
|
|
},
|
|
],
|
|
})
|