Files
LinkPort/web/tests/sidebar-panels.spec.ts
2026-09-27 16:39:38 +08:00

51 lines
2.7 KiB
TypeScript

import { test, expect } from '@playwright/test';
test('侧栏菜单与资源独占空间、切换保留搜索并刷新恢复', async ({ page }) => {
await page.goto('/');
const menu = page.getByRole('tab', {name:'菜单', exact:true});
const resources = page.getByRole('tab', {name:'资源', exact:true});
await expect(menu).toHaveAttribute('aria-selected','true');
await expect(page.locator('.sidebar')).toHaveCSS('width','280px');
const nav = page.getByRole('navigation', {name:'工作空间菜单'});
await expect(nav).toBeVisible();
await expect(page.getByRole('region', {name:'资源树'})).not.toBeVisible();
await expect(nav.getByRole('button',{name:'代理管理',exact:true})).toHaveCSS('font-size','14px');
await page.getByRole('textbox',{name:'搜索菜单',exact:true}).fill('资产');
await resources.click();
await expect(nav).not.toBeVisible();
await expect(page.getByRole('region',{name:'资源树'})).toBeVisible();
await page.screenshot({path:'test-results/sidebar-resources-desktop.png'});
await menu.click();
await expect(page.getByRole('textbox',{name:'搜索菜单',exact:true})).toHaveValue('资产');
await menu.press('ArrowRight');
await expect(resources).toBeFocused();
await expect(resources).toHaveAttribute('aria-selected','true');
await page.reload();
await expect(resources).toHaveAttribute('aria-selected','true');
await resources.press('Home');
await expect(menu).toBeFocused();
await expect(nav).toBeVisible();
await page.screenshot({path:'test-results/sidebar-menu-desktop.png'});
});
test('侧栏宽度键盘可调整且手机可切换资源', async ({page}) => {
await page.goto('/');
const resize = page.getByRole('separator',{name:'调整侧栏宽度'});
await resize.press('ArrowRight');
await expect(page.locator('.sidebar')).toHaveCSS('width','296px');
await page.reload();
await expect(page.locator('.sidebar')).toHaveCSS('width','296px');
await resize.press('Home');
await expect(page.locator('.sidebar')).toHaveCSS('width','280px');
await page.setViewportSize({width:390,height:844});
await page.getByRole('tab',{name:'资源',exact:true}).click();
await page.getByRole('button',{name:'展开资源树',exact:true}).click();
await expect(page.getByRole('dialog',{name:'资源树',exact:true})).toBeVisible();
await page.keyboard.press('Escape');
await page.getByRole('tab',{name:'菜单',exact:true}).click();
const nav=page.getByRole('navigation',{name:'工作空间菜单'});
await nav.getByRole('button',{name:'代理管理',exact:true}).click();
await expect(page.getByRole('heading',{name:'代理管理',exact:true})).toBeVisible();
await expect.poll(()=>page.evaluate(()=>document.documentElement.scrollWidth-innerWidth)).toBeLessThanOrEqual(1);
});