Files
easy_tdx_max/web-ui/e2e/strategies.spec.ts
T
GitHub 211052f0e3 feat(e2e): Playwright E2E 前端测试基建 — 后端合成数据 mock 模式 + 5 用例 + CI
- 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 全绿
2026-09-01 22:56:38 +08:00

26 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 策略库 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 })
})