mirror of
https://github.com/wu736139669/hapi.git
synced 2026-11-07 01:21:37 +00:00
* feat(web): open a session in a separate window * test(web): cover session sidebar restore control * fix(web): preserve hidden sidebar across session navigation * fix(web): retain hidden sidebar on session routes
44 lines
1.9 KiB
TypeScript
44 lines
1.9 KiB
TypeScript
import { expect, test } from '@playwright/test'
|
|
|
|
const fixtureUrl = '/e2e-fixtures/session-separate-window-fixture.html'
|
|
|
|
test.describe('session separate window', () => {
|
|
test('opens a desktop session in a new browsing context with hidden-sidebar state', async ({ page }) => {
|
|
await page.setViewportSize({ width: 1024, height: 768 })
|
|
await page.goto(fixtureUrl)
|
|
|
|
const action = page.getByRole('menuitem', { name: 'Open in separate window' })
|
|
await expect(action).toBeVisible()
|
|
await expect(action).toHaveAttribute('href', '/sessions/session-123?sidebar=hidden')
|
|
await expect(action).toHaveAttribute('target', '_blank')
|
|
await expect(action).toHaveAttribute('rel', 'noopener noreferrer')
|
|
|
|
const popupPromise = page.waitForEvent('popup')
|
|
await action.click()
|
|
const popup = await popupPromise
|
|
await expect(popup).toHaveURL(/\/sessions\/session-123\?sidebar=hidden$/)
|
|
await popup.close()
|
|
})
|
|
|
|
test('starts with the full session list hidden and restores it from the edge control', async ({ page }) => {
|
|
await page.setViewportSize({ width: 1024, height: 768 })
|
|
await page.goto(`${fixtureUrl}?sidebar=hidden`)
|
|
|
|
await expect(page.getByTestId('session-list')).toHaveCount(0)
|
|
const showButton = page.getByRole('button', { name: 'Show session list' })
|
|
await expect(showButton).toBeVisible()
|
|
|
|
await showButton.click()
|
|
|
|
await expect(page.getByTestId('session-list')).toBeVisible()
|
|
await expect(showButton).toHaveCount(0)
|
|
})
|
|
|
|
test('does not expose the desktop-only action on a mobile-width layout', async ({ page }) => {
|
|
await page.setViewportSize({ width: 390, height: 844 })
|
|
await page.goto(fixtureUrl)
|
|
|
|
await expect(page.getByRole('menuitem', { name: 'Open in separate window' })).toBeHidden()
|
|
})
|
|
})
|