import { expect, test, type Page } from '@playwright/test' // 响应式壳层对齐现状(task-276 已移除侧边栏收起按钮/is-collapsed 机制): // 断言主题改为「窄屏不破版、核心地标与标题可用」。 async function open(page: Page, width: number, path = '/admin-vue/') { await page.setViewportSize({ width, height: 900 }) await page.goto(path) } test('test_task_017_desktop_shell_responsive_normal_primary_path', async ({ page }) => { await open(page, 1440) await expect(page.locator('.admin-topbar h1')).toHaveText('用户管理') await expect(page.getByRole('navigation', { name: '侧边栏菜单' })).toBeVisible() await expect(page.locator('.admin-brand-copy strong')).toHaveText('数富AI') }) test('test_task_017_desktop_shell_responsive_normal_variant_input', async ({ page }) => { await open(page, 1280) await expect(page.locator('.admin-topbar h1')).toHaveText('用户管理') await expect(page.getByRole('navigation', { name: '侧边栏菜单' })).toBeVisible() }) test('test_task_017_desktop_shell_responsive_normal_repeated_operation_is_idempotent', async ({ page }) => { await open(page, 1440) await page.reload() await expect(page.locator('.admin-topbar h1')).toHaveText('用户管理') await expect(page.getByRole('navigation', { name: '侧边栏菜单' })).toBeVisible() }) test('test_task_017_desktop_shell_responsive_boundary_empty_input', async ({ page }) => { await open(page, 640) await expect(page.locator('.admin-topbar h1')).toHaveText('用户管理') await expect(page.getByRole('navigation', { name: '侧边栏菜单' })).toBeVisible() // 窄屏侧栏自适应收缩(当前 85px 窄栏),不遮主内容标题。 await expect(page.locator('.admin-topbar h1')).toBeVisible() }) test('test_task_017_desktop_shell_responsive_boundary_single_item', async ({ page }) => { await open(page, 700) await expect(page.locator('.admin-topbar h1')).toHaveText('用户管理') await expect(page.locator('.admin-brand-copy strong')).toHaveText('数富AI') }) test('test_task_017_desktop_shell_responsive_boundary_limit_or_missing_field', async ({ page }) => { await open(page, 900) await expect(page.locator('.admin-topbar h1')).toHaveText('用户管理') await open(page, 901, '/admin-vue/account/users') await expect(page.locator('.admin-topbar h1')).toHaveText('用户管理') }) test('test_task_017_desktop_shell_responsive_invalid_input_rejected', async ({ page }) => { // 无折叠偏好了;刷新后壳层保持正常渲染(不因重载变样)。 await open(page, 1440) await page.reload() await expect(page.locator('.admin-topbar h1')).toHaveText('用户管理') await expect(page.getByRole('navigation', { name: '侧边栏菜单' })).toBeVisible() }) test('test_task_017_desktop_shell_responsive_dependency_failure_returns_actionable_message', async ({ page }) => { // 桌面/窄屏两种宽度下壳层均无初始化错误、导航地标可见。 await open(page, 1440) await expect(page.locator('.el-alert--error')).toHaveCount(0) await expect(page.getByRole('navigation', { name: '侧边栏菜单' })).toBeVisible() await open(page, 820, '/admin-vue/account/users') await expect(page.locator('.el-alert--error')).toHaveCount(0) })