Files
IronKanban/tests/e2e/app.spec.js
T
Keith Solomon 812e5c2f2a feature: Initial MVP
2026-04-05 16:20:39 -05:00

46 lines
2.1 KiB
JavaScript

const { test, expect } = require('@playwright/test');
test.describe('IronKanban smoke', () => {
test('loads the demo board and core UI sections', async ({ page }) => {
await page.goto('/?project=demo-project');
await expect(page.getByRole('heading', { name: 'IronKanban' })).toBeVisible();
await expect(page.getByRole('heading', { name: 'Demo Project' })).toBeVisible();
await expect(page.locator('#board-columns .column')).toHaveCount(4);
await expect(page.locator('#trash-panel')).toBeVisible();
await expect(page.locator('#notes-panel')).toBeVisible();
});
test('toggles notes and opens existing note and task dialogs', async ({ page }) => {
await page.goto('/?project=demo-project');
const notesToggle = page.getByRole('button', { name: /Show Notes \(\d+\)/ });
await notesToggle.click();
await expect(page.getByRole('button', { name: /Hide Notes \(\d+\)/ })).toBeVisible();
await expect(page.locator('#notes-list .note-card')).toHaveCount(2);
await page.locator('#notes-list .note-card').first().click();
await expect(page.locator('#note-dialog')).toBeVisible();
await expect(page.locator('#note-form input[name="title"]')).not.toHaveValue('');
await page.keyboard.press('Escape');
await expect(page.locator('#note-dialog')).not.toBeVisible();
await page.locator('#board-columns .task-card').first().click();
await expect(page.locator('#task-dialog')).toBeVisible();
await expect(page.locator('#task-form input[name="title"]')).not.toHaveValue('');
await page.keyboard.press('Escape');
await expect(page.locator('#task-dialog')).not.toBeVisible();
});
test('toggles the trash section and shows trashed tasks', async ({ page }) => {
await page.goto('/?project=demo-project');
const trashToggle = page.getByRole('button', { name: /Show Trash \(\d+\)/ });
await trashToggle.click();
await expect(page.getByRole('button', { name: /Hide Trash \(\d+\)/ })).toBeVisible();
await expect(page.locator('#trash-columns .task-card')).toHaveCount(1);
await expect(page.locator('#trash-dropzone-meta')).toContainText('1 task');
});
});