mirror of
https://ghfast.top/https://github.com/aeroxw/easy_tdx_max.git
synced 2026-09-12 16:54: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 全绿
24 lines
1.1 KiB
TypeScript
24 lines
1.1 KiB
TypeScript
// 看板 E2E:五大指数区块加载 + SSE 合成行情到达后价格渲染。
|
|
//
|
|
// 数据链路:QuoteStreamer 轮询 mock 客户端 → SSE /stream/quotes →
|
|
// quoteStore → .idx-card。首帧在打开页面后 1~3 秒内到达(轮询循环
|
|
// 「无订阅 1s 待命 → 有订阅立即拉一轮」),盘外时段也不受影响。
|
|
|
|
import { expect, test } from '@playwright/test'
|
|
|
|
test('市场看板加载五大指数区块并渲染实时价格', async ({ page }) => {
|
|
await page.goto('/')
|
|
|
|
const cards = page.locator('.idx-card')
|
|
await expect(cards).toHaveCount(5)
|
|
|
|
const names = cards.locator('.idx-name')
|
|
await expect(names).toHaveText(['上证指数', '深证成指', '创业板指', '科创50', '沪深300'])
|
|
|
|
// SSE 首帧到达前价格是占位符「—」;合成行情到达后变为数值
|
|
await expect(cards.first().locator('.idx-price')).toHaveText(/\d/, { timeout: 30_000 })
|
|
|
|
// 市场统计卡也从 mock /market/stat 拿到数据(不再是「加载中…」)
|
|
await expect(page.locator('.card', { hasText: '市场统计' }).locator('.stat-nums')).toBeVisible()
|
|
})
|