oh-my-muse/muse-studio/e2e/live-read.spec.ts
lili 6d3eeed068 test(studio): content/market/account 读旅程 rendered-UI 活体 e2e(3/3 绿)
live-read.spec.ts:MSW off 直连活体单体,chromium 验作品列表/市场浏览/个人中心均渲染真实后端数据,
证 client.ts tenant-id 修复后 studio 可跨 BC 直取活体数据、真实数据形态与渲染契约对齐。
前端 in-UI 覆盖:content(列表读+采纳写)/ai/market(浏览读)/account(个人中心读)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 00:26:13 -07:00

40 lines
1.7 KiB
TypeScript

import { expect, test, type Page } from '@playwright/test';
/**
* 活体只读旅程 e2e(真实后端,MSW off)。
*
* 前置:vite 以 VITE_API_MOCK=false 运行(关 MSW)、真实 muse-server 在 48080、muse_slice_live 已种子。
* 目的:验证 rendered studio 经「client.ts 注入 tenant-id 修复」后的 HTTP 客户端,能直连活体单体并把
* content(作品列表)/market(资产浏览)/account(个人中心)三个 BC 的真实后端数据在 UI 正确渲染
* ——即真实数据形态与页面渲染契约对齐(MSW mock 形态之外的活体校验)。
*/
const TOKEN = 'test1';
async function seedToken(page: Page): Promise<void> {
await page.addInitScript((t) => {
window.localStorage.setItem('accessToken', t);
window.localStorage.setItem('tenantId', '1');
}, TOKEN);
}
test.describe('活体只读旅程(真实后端,MSW off)', () => {
test('作品列表渲染真实作品(content)', async ({ page }) => {
await seedToken(page);
await page.goto('/');
// .first():种子库存在多个同名作品(多次播种),strict 模式需唯一匹配;能渲染即证真实后端作品列表已加载。
await expect(page.getByText('活体验证样书').first()).toBeVisible({ timeout: 15_000 });
});
test('市场浏览渲染真实资产(market)', async ({ page }) => {
await seedToken(page);
await page.goto('/market');
await expect(page.getByText('活体市场资产·测试')).toBeVisible({ timeout: 15_000 });
});
test('个人中心渲染真实账户(account)', async ({ page }) => {
await seedToken(page);
await page.goto('/account');
await expect(page.getByText('活体用户')).toBeVisible({ timeout: 15_000 });
});
});