80 lines
2.4 KiB
TypeScript
80 lines
2.4 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Feature Showcase', () => {
|
|
test('browse view renders and shows items', async ({ page }) => {
|
|
await page.goto('/');
|
|
|
|
// Check that browse view loads
|
|
await expect(page.getByRole('heading', { name: 'Items' })).toBeVisible();
|
|
|
|
// Check that example items are visible
|
|
await expect(page.getByText('Example Item 1')).toBeVisible();
|
|
});
|
|
|
|
test('can select an item and view details', async ({ page }) => {
|
|
await page.goto('/');
|
|
|
|
// Click on an item
|
|
await page.getByText('Example Item 1').click();
|
|
|
|
// Check that detail panel shows
|
|
await expect(page.getByText('Status: published')).toBeVisible();
|
|
});
|
|
|
|
test('manage view allows creating items', async ({ page }) => {
|
|
await page.goto('/manage');
|
|
|
|
// Click create button
|
|
await page.getByRole('button', { name: 'Create New' }).click();
|
|
|
|
// Form should appear
|
|
await expect(page.getByLabel('Label')).toBeVisible();
|
|
|
|
// Fill and save
|
|
await page.getByLabel('Label').fill('Test Item');
|
|
await page.getByRole('button', { name: 'Save' }).click();
|
|
|
|
// Item should appear in list
|
|
await expect(page.getByText('Test Item')).toBeVisible();
|
|
});
|
|
|
|
test('manage view allows editing items', async ({ page }) => {
|
|
await page.goto('/manage');
|
|
|
|
// Click edit on first item
|
|
await page.getByRole('button', { name: 'Edit' }).first().click();
|
|
|
|
// Form should appear
|
|
const labelInput = page.getByLabel('Label');
|
|
await expect(labelInput).toBeVisible();
|
|
|
|
// Change label
|
|
await labelInput.clear();
|
|
await labelInput.fill('Updated Item');
|
|
await page.getByRole('button', { name: 'Save' }).click();
|
|
|
|
// Updated label should appear
|
|
await expect(page.getByText('Updated Item')).toBeVisible();
|
|
});
|
|
|
|
test('navigation works between views', async ({ page }) => {
|
|
await page.goto('/');
|
|
|
|
// Check we're on browse view
|
|
await expect(page.getByRole('heading', { name: 'Items' })).toBeVisible();
|
|
|
|
// Navigate to manage
|
|
await page.getByRole('link', { name: 'Manage' }).click();
|
|
|
|
// Check we're on manage view
|
|
await expect(
|
|
page.getByRole('heading', { name: 'Manage Items' })
|
|
).toBeVisible();
|
|
|
|
// Navigate back to browse
|
|
await page.getByRole('link', { name: 'Browse' }).click();
|
|
|
|
// Check we're back on browse
|
|
await expect(page.getByRole('heading', { name: 'Items' })).toBeVisible();
|
|
});
|
|
});
|