This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
import { expect, test } from '@playwright/test'
|
||||
|
||||
const hasCredentials = Boolean(
|
||||
process.env.DEVRUNBOOK_E2E_EMAIL && process.env.DEVRUNBOOK_E2E_PASSWORD,
|
||||
)
|
||||
|
||||
test.describe('Usability recovery', () => {
|
||||
test.skip(!hasCredentials, 'live local-account credentials are required')
|
||||
test.use({ storageState: 'test-results/.auth/m2.json' })
|
||||
|
||||
test.beforeEach(async ({ context, baseURL }) => {
|
||||
if (!baseURL) throw new Error('A browser base URL is required')
|
||||
await context.addCookies([
|
||||
{
|
||||
name: 'devrunbook_locale',
|
||||
value: 'nl',
|
||||
url: baseURL,
|
||||
sameSite: 'Lax',
|
||||
},
|
||||
])
|
||||
})
|
||||
|
||||
test('Task library is compact and understandable on mobile', async ({
|
||||
page,
|
||||
}) => {
|
||||
await page.setViewportSize({ width: 390, height: 844 })
|
||||
await page.goto('/library')
|
||||
|
||||
await expect(page).toHaveTitle('Taakbibliotheek · DevRunbook')
|
||||
await expect(
|
||||
page.getByRole('heading', { level: 1, name: 'Kies een bewezen taak' }),
|
||||
).toBeVisible()
|
||||
await expect(
|
||||
page.locator('.drb-library-filters details'),
|
||||
).not.toHaveAttribute('open', '')
|
||||
await expect(page.locator('.drb-playbook-card')).toHaveCount(8)
|
||||
await expect(page.getByRole('button', { name: /Meer tonen/ })).toBeVisible()
|
||||
expect(
|
||||
await page.evaluate(
|
||||
() =>
|
||||
document.documentElement.scrollWidth <=
|
||||
document.documentElement.clientWidth,
|
||||
),
|
||||
).toBe(true)
|
||||
|
||||
const undersizedNavigationTargets = await page
|
||||
.locator(
|
||||
'.drb-app-shell__header button, .drb-app-shell__header a, .drb-app-shell__mobile-tabs a',
|
||||
)
|
||||
.evaluateAll((elements) =>
|
||||
elements
|
||||
.filter((element) => {
|
||||
const box = element.getBoundingClientRect()
|
||||
const style = getComputedStyle(element)
|
||||
return (
|
||||
style.display !== 'none' &&
|
||||
style.visibility !== 'hidden' &&
|
||||
box.width > 0 &&
|
||||
box.height > 0 &&
|
||||
(box.width < 44 || box.height < 44)
|
||||
)
|
||||
})
|
||||
.map((element) => element.textContent?.trim()),
|
||||
)
|
||||
expect(undersizedNavigationTargets).toEqual([])
|
||||
})
|
||||
|
||||
test('Dutch shell, account and role context use ordinary language', async ({
|
||||
page,
|
||||
}) => {
|
||||
await page.goto('/account')
|
||||
await expect(
|
||||
page.getByRole('link', { name: 'DevRunbook startpagina' }),
|
||||
).toBeVisible()
|
||||
await expect(page.getByLabel('Actieve werkruimte')).toBeVisible()
|
||||
await expect(
|
||||
page.getByRole('heading', { level: 1, name: 'Jouw account' }),
|
||||
).toBeVisible()
|
||||
await expect(page.getByText('Rol in deze werkruimte')).toBeVisible()
|
||||
|
||||
await page.goto('/account/security')
|
||||
await expect(
|
||||
page.getByRole('heading', { level: 1, name: 'Wachtwoord en sessies' }),
|
||||
).toBeVisible()
|
||||
await expect(
|
||||
page.getByRole('link', { name: 'Wachtwoord veilig herstellen' }),
|
||||
).toBeVisible()
|
||||
})
|
||||
test('Start action does not cover mobile content', async ({ page }) => {
|
||||
await page.setViewportSize({ width: 390, height: 844 })
|
||||
await page.goto('/start')
|
||||
await expect(page).toHaveTitle('Nieuwe taak · DevRunbook')
|
||||
expect(
|
||||
await page.locator('main').evaluate((main) => {
|
||||
const stickyElements = [...main.querySelectorAll('*')].filter(
|
||||
(element) => getComputedStyle(element).position === 'sticky',
|
||||
)
|
||||
return stickyElements.length
|
||||
}),
|
||||
).toBe(0)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user