1
0
Files
nex/frontend/playwright.config.ts
lanyuanxiaoyao 52007c9461 feat: 前端 ESLint 规则增强,自动检测 LLM 编码违规
- 启用 TanStack Query flat/recommended(7 条规则)
- 新增 no-console(允许 warn/error)、consistent-type-imports(inline 风格)、no-non-null-assertion 规则
- 新增自定义规则 no-hardcoded-color-in-style,检测 JSX style 中硬编码颜色值
- 将 ESLint 检查集成到 build 命令(tsc -b && eslint . && vite build)
- 修复现有代码中的 lint 违规(import 顺序、type import 风格、unused vars)
- 使用 @typescript-eslint/rule-tester 编写自定义规则集成测试
2026-04-23 22:47:32 +08:00

63 lines
1.7 KiB
TypeScript

import fs from 'node:fs'
import os from 'node:os'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig, devices } from '@playwright/test'
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),
},
},
],
})