mirror of
https://ghfast.top/https://github.com/aeroxw/easy_tdx_max.git
synced 2026-09-12 18:04:20 +08:00
- web/e2e_mock.py:EASY_TDX_E2E_MOCK=1 时 lifespan 替换 TDX/MAC 客户端为 确定性合成数据(CRC32 播种随机游走,分页语义对齐真实 /bars);回测/WF/ 评估/自选/策略库仍走真实后端,SSE 由 QuoteStreamer 真轮询(mock 下 2s 一拍) - web-ui:@playwright/test + playwright.config.ts(webServer 自动起 serve, EASY_TDX_CONFIG_DIR 指向每轮临时目录);e2e/ 5 用例覆盖看板五指数/SSE、 自选增删、回测全流程、附加分析(WF 柱状图+一条龙评估卡)、策略库保存 - package.json 加 test:e2e;CI frontend job 追加 E2E;verify_ci.sh 补前端段 - tests/unit/test_e2e_mock.py(11 例)守护 mock 契约;本地 npx playwright test 全绿
26 lines
1.3 KiB
TypeScript
26 lines
1.3 KiB
TypeScript
// 策略库 E2E:回测出结果 → 保存策略(含成绩快照)→ 策略库页可见。
|
||
|
||
import { expect, test } from '@playwright/test'
|
||
|
||
test('回测结果保存到策略库并在策略库页可见', async ({ page }) => {
|
||
await page.goto('/backtest?startDate=2024-01-01&endDate=2025-12-31')
|
||
|
||
// 跑一次回测拿到结果(保存按钮只在有结果时出现)
|
||
await page.getByRole('button', { name: '开始回测' }).click()
|
||
await expect(page.getByRole('button', { name: '💾 保存策略' })).toBeVisible({ timeout: 60_000 })
|
||
|
||
// 打开保存对话框(名称已预填「双均线交叉 · 000001」)
|
||
await page.getByRole('button', { name: '💾 保存策略' }).click()
|
||
await expect(page.locator('.modal')).toBeVisible()
|
||
const nameInput = page.getByPlaceholder('给这个策略起个名')
|
||
await expect(nameInput).toHaveValue('双均线交叉 · 000001')
|
||
await nameInput.fill('E2E 冒烟策略')
|
||
|
||
await page.locator('.modal-actions .primary').click()
|
||
await expect(page.getByText('✓ 已保存到策略库')).toBeVisible()
|
||
|
||
// 策略库页列出刚保存的条目(SQLite strategies.db 落在临时 EASY_TDX_CONFIG_DIR)
|
||
await page.goto('/strategies')
|
||
await expect(page.getByText('E2E 冒烟策略').first()).toBeVisible({ timeout: 30_000 })
|
||
})
|