pp-planer/tests/e2e/service-edit-moderation.spec.ts

63 lines
1.9 KiB
TypeScript

import { test, expect } from '@playwright/test';
async function navigateToEditPage(page) {
await page.goto('/services');
await page.waitForLoadState('networkidle');
const editButton = page.getByTestId('service-list-edit-button').first();
const hasEditableService = await editButton.isVisible().catch(() => false);
if (!hasEditableService) {
return false;
}
await editButton.click();
await page.waitForLoadState('networkidle');
return true;
}
test('navigate to first editable service edit page', async ({ page }) => {
const navigated = await navigateToEditPage(page);
if (!navigated) {
test.skip();
}
await expect(page).toHaveURL(/.*services\/\d+\/edit/);
const agendaSection = page.getByTestId('agenda-section');
const emptyState = page.getByText('Keine Ablauf-Elemente vorhanden');
const hasAgenda = await agendaSection.isVisible().catch(() => false);
const hasEmptyState = await emptyState.isVisible().catch(() => false);
expect(hasAgenda || hasEmptyState).toBe(true);
});
test.skip('moderation block accordion — replaced by agenda view', async () => {});
test('agenda items with slides show slide uploader', async ({ page }) => {
const navigated = await navigateToEditPage(page);
if (!navigated) {
test.skip();
}
const agendaRows = page.getByTestId('agenda-item-row');
const rowCount = await agendaRows.count();
if (rowCount === 0) {
test.skip();
}
const addSlidesBtn = page.getByTestId('agenda-item-add-slides').first();
const hasSlidesBtn = await addSlidesBtn.isVisible().catch(() => false);
if (!hasSlidesBtn) {
test.skip();
}
await expect(addSlidesBtn).toBeVisible();
});
test.skip('existing moderation slides display as thumbnails — replaced by agenda item slides', async () => {});
test.skip('delete button on moderation slide triggers confirmation — replaced by agenda item slides', async () => {});