refactor: cache is rundown aware

This commit is contained in:
Carlos Valente
2026-04-04 14:58:58 +02:00
committed by GitHub
parent 3022ec2acd
commit 8c14c330f5
7 changed files with 253 additions and 85 deletions
@@ -0,0 +1,79 @@
import { expect, test } from '@playwright/test';
test('switching rundowns preserves edits per rundown', async ({ page }) => {
const suffix = Date.now();
const nameA = `Rundown A ${suffix}`;
const nameB = `Rundown B ${suffix}`;
await page.goto('/editor');
await expect(page.getByTestId('editor-container')).toBeVisible();
const editButton = page.getByRole('button', { name: 'Edit' }).first();
await editButton.click();
// open manage rundowns and create Rundown A
await page.getByRole('button', { name: 'Rundown menu' }).click();
await page.getByRole('menuitem', { name: 'Manage Rundowns...' }).click();
await page.getByRole('heading', { name: 'Manage project rundowns' }).getByRole('button', { name: 'New' }).click();
await page.getByPlaceholder('Your rundown name').fill(nameA);
await page.getByRole('button', { name: 'Create rundown' }).click();
await expect(page.getByRole('row', { name: nameA })).toBeVisible();
// load Rundown A
await page.getByRole('row', { name: nameA }).getByRole('button').click();
await page.getByRole('menuitem', { name: 'Load', exact: true }).click();
await page.getByRole('button', { name: 'Load rundown' }).click();
await expect(page.getByRole('row', { name: nameA }).getByText('Loaded')).toBeVisible();
// close settings and add an event to Rundown A
await page.getByRole('button', { name: 'Close settings' }).click();
await page.getByRole('button', { name: 'Create Event' }).click();
await page.getByTestId('entry-1').getByTestId('entry__title').fill('Event in rundown A');
await page.getByTestId('entry-1').getByTestId('entry__title').press('Enter');
// open manage rundowns and create Rundown B
await page.getByRole('button', { name: 'Rundown menu' }).click();
await page.getByRole('menuitem', { name: 'Manage Rundowns...' }).click();
await page.getByRole('heading', { name: 'Manage project rundowns' }).getByRole('button', { name: 'New' }).click();
await page.getByPlaceholder('Your rundown name').fill(nameB);
await page.getByRole('button', { name: 'Create rundown' }).click();
await expect(page.getByRole('row', { name: nameB })).toBeVisible();
// load Rundown B
await page.getByRole('row', { name: nameB }).getByRole('button').click();
await page.getByRole('menuitem', { name: 'Load', exact: true }).click();
await page.getByRole('button', { name: 'Load rundown' }).click();
await expect(page.getByRole('row', { name: nameB }).getByText('Loaded')).toBeVisible();
// close settings and add an event to Rundown B
await page.getByRole('button', { name: 'Close settings' }).click();
await expect(page.getByTestId('rundown-event')).toHaveCount(0);
await page.getByRole('button', { name: 'Create Event' }).click();
await page.getByTestId('entry-1').getByTestId('entry__title').fill('Event in rundown B');
await page.getByTestId('entry-1').getByTestId('entry__title').press('Enter');
// switch back to Rundown A and verify its event is preserved
await page.getByRole('button', { name: 'Rundown menu' }).click();
await page.getByRole('menuitem', { name: 'Manage Rundowns...' }).click();
await page.getByRole('row', { name: nameA }).getByRole('button').click();
await page.getByRole('menuitem', { name: 'Load', exact: true }).click();
await page.getByRole('button', { name: 'Load rundown' }).click();
await page.getByRole('button', { name: 'Close settings' }).click();
await expect(page.getByTestId('entry-1').getByTestId('entry__title')).toHaveValue('Event in rundown A');
await expect(page.getByTestId('rundown-event')).toHaveCount(1);
// switch back to Rundown B and verify its event is preserved
await page.getByRole('button', { name: 'Rundown menu' }).click();
await page.getByRole('menuitem', { name: 'Manage Rundowns...' }).click();
await page.getByRole('row', { name: nameB }).getByRole('button').click();
await page.getByRole('menuitem', { name: 'Load', exact: true }).click();
await page.getByRole('button', { name: 'Load rundown' }).click();
await page.getByRole('button', { name: 'Close settings' }).click();
await expect(page.getByTestId('entry-1').getByTestId('entry__title')).toHaveValue('Event in rundown B');
await expect(page.getByTestId('rundown-event')).toHaveCount(1);
});