Files
learning-planner/e2e/app.spec.ts

38 lines
1.9 KiB
TypeScript

import { expect, test } from '@playwright/test'
test.beforeEach(async ({ page }) => {
await page.goto('/')
await page.evaluate(() => localStorage.clear())
await page.reload()
})
test('core planning journey persists after reload', async ({ page }) => {
await expect(page.getByRole('heading', { name: /good progress starts/i })).toBeVisible()
await page.getByRole('button', { name: 'Learning goals' }).click()
await page.getByRole('button', { name: 'New goal' }).click()
await page.getByLabel('Goal title').fill('Research progressive enhancement')
await page.getByLabel('Category').fill('Web platform')
await page.getByLabel('Target date').fill('2026-12-01')
await page.getByRole('button', { name: 'Save goal' }).click()
await expect(page.getByRole('heading', { name: 'Research progressive enhancement' })).toBeVisible()
await page.reload()
await page.getByRole('button', { name: 'Learning goals' }).click()
await expect(page.getByRole('heading', { name: 'Research progressive enhancement' })).toBeVisible()
})
test('task search and status interaction work', async ({ page }) => {
await page.getByLabel('Primary navigation').getByRole('button', { name: /All tasks/ }).click()
await page.getByLabel('Search tasks').fill('Firefox')
const task = page.locator('.task-row').filter({ hasText: 'Run Firefox regression suite' })
await expect(task).toBeVisible()
await task.getByRole('button', { name: /complete run firefox/i }).click()
await expect(task).toHaveClass(/complete/)
})
test('required viewport has no page-level horizontal overflow', async ({ page }) => {
const dimensions = await page.evaluate(() => ({ scrollWidth: document.documentElement.scrollWidth, clientWidth: document.documentElement.clientWidth }))
expect(dimensions.scrollWidth).toBeLessThanOrEqual(dimensions.clientWidth)
await expect(page.locator('.topbar')).toBeVisible()
await expect(page.locator('.dashboard-grid')).toBeVisible()
})