42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
import { expect, test } from '../fixtures'
|
|
import { closeMobileSidebar, showResearch } from '../workspace'
|
|
|
|
test('keeps the sidebar, composer and deck reachable at compact widths', async ({
|
|
page,
|
|
a11y,
|
|
}, testInfo) => {
|
|
await page.goto('/deck')
|
|
for (const width of [320, 375, 414, 768]) {
|
|
await page.setViewportSize({ width, height: 850 })
|
|
await showResearch(page)
|
|
const chat = page.getByRole('complementary', { name: '調査チャット' })
|
|
await expect(chat).toBeVisible()
|
|
const composer = chat.getByRole('textbox', {
|
|
name: 'メッセージ',
|
|
exact: true,
|
|
})
|
|
await expect(composer).toBeVisible()
|
|
const bounds = await composer.boundingBox()
|
|
if (!bounds) throw new Error('Composer must have a visible bounding box')
|
|
expect(bounds.x).toBeGreaterThanOrEqual(0)
|
|
expect(bounds.x + bounds.width).toBeLessThanOrEqual(width)
|
|
expect(bounds.y + bounds.height).toBeLessThanOrEqual(850)
|
|
expect(
|
|
await page.evaluate(() => document.documentElement.scrollWidth),
|
|
).toBe(width)
|
|
await page.screenshot({
|
|
path: testInfo.outputPath(`workspace-${width}.png`),
|
|
})
|
|
if (width === 320) expect((await a11y().analyze()).violations).toEqual([])
|
|
await closeMobileSidebar(page)
|
|
}
|
|
await page.getByRole('button', { name: 'サイドバーを切り替え' }).click()
|
|
await expect(
|
|
page.getByRole('complementary', { name: '調査チャット' }),
|
|
).toBeHidden()
|
|
await page.getByRole('button', { name: '調査チャット', exact: true }).click()
|
|
await expect(
|
|
page.getByRole('complementary', { name: '調査チャット' }),
|
|
).toBeVisible()
|
|
})
|