feat(web-platform): release V0.9.4 前端设计优化
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (pull_request) Has been cancelled
web-platform-ci / Playwright E2E (pull_request) Has been cancelled

This commit is contained in:
2026-09-09 13:15:46 +08:00
parent 13e35be98b
commit cb3fb47561
31 changed files with 563 additions and 182 deletions
+19 -4
View File
@@ -72,7 +72,24 @@ for (const theme of ['dark', 'light'] as const)
await page.getByRole('button', { name: '连接/刷新' }).click();
await expect(page.getByRole('img', { name: /收敛曲线/ })).toBeVisible();
await expect(page.getByRole('button', { name: '停止 Session' })).toBeVisible();
await expect(page.getByRole('button', { name: /决策与审批 · 待审批 1/ })).toBeVisible();
const sessions = page.getByRole('region', { name: '会话与 Trial' });
const metrics = page.getByRole('main', { name: '指标与排行' });
const decisions = page.getByRole('complementary', { name: '决策与审批' });
await expect(sessions).toBeVisible();
await expect(metrics).toBeVisible();
await expect(decisions).toBeVisible();
const left = (await sessions.boundingBox())!;
const center = (await metrics.boundingBox())!;
const right = (await decisions.boundingBox())!;
if (width >= 1280) {
expect(Math.abs(left.y - center.y)).toBeLessThan(2);
expect(Math.abs(center.y - right.y)).toBeLessThan(2);
expect(left.x + left.width).toBeLessThanOrEqual(center.x + 1);
expect(center.x + center.width).toBeLessThanOrEqual(right.x + 1);
} else {
expect(left.y + left.height).toBeLessThanOrEqual(center.y + 1);
expect(center.y + center.height).toBeLessThanOrEqual(right.y + 1);
}
await page.getByRole('button', { name: '收敛曲线放大', exact: true }).click();
await page
.getByRole('button', { name: `切换到${theme === 'dark' ? '白天' : '黑夜'}主题` })
@@ -88,12 +105,11 @@ for (const theme of ['dark', 'light'] as const)
await page.getByRole('heading', { name: 'Trial Leaderboard' }).scrollIntoViewIfNeeded();
await noOverflow(page);
await page.screenshot({ path: info.outputPath('tuning-leaderboard.png') });
await page.getByRole('button', { name: '会话与 Trial' }).click();
await page.getByRole('button', { name: '导入', exact: true }).scrollIntoViewIfNeeded();
await expect(page.getByRole('button', { name: '导入', exact: true })).toBeVisible();
await expect(page.getByText('导入会替换主工作台策略;无主窗口时下载文件。')).toBeVisible();
await noOverflow(page);
await page.screenshot({ path: info.outputPath('tuning-sessions.png') });
await page.getByRole('button', { name: /决策与审批/ }).click();
await page.getByRole('button', { name: 'Monaco Diff 审查' }).scrollIntoViewIfNeeded();
await noOverflow(page);
await page.screenshot({ path: info.outputPath('tuning-decisions.png') });
@@ -204,7 +220,6 @@ for (const theme of ['dark', 'light'] as const)
await expect(page.getByRole('dialog', { name: '诊断与事件日志' })).toBeVisible();
await page.screenshot({ path: info.outputPath('diagnostics.png') });
await page.keyboard.press('Escape');
await page.getByRole('button', { name: '工程', exact: true }).click();
await page.getByRole('button', { name: '源代码', exact: true }).click();
const source = page.getByRole('dialog', { name: '转换后的 MJCF 编辑器' });
await expect(source.locator('.monaco-editor')).toBeVisible();