mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-14 11:53:49 +00:00
80 lines
4.2 KiB
TypeScript
80 lines
4.2 KiB
TypeScript
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);
|
|
});
|