Files
ontime/e2e/tests/features/202-cuesheet.spec.ts
T
Enubia 78d5d442cf feat: added export options (#529)
* feat: added export options

* chore: eslint console proposal

---------

Co-authored-by: arc-alex <ac@omnivox.dk>
2023-10-30 11:41:15 +01:00

64 lines
2.2 KiB
TypeScript

import { expect, test } from '@playwright/test';
import fs from 'fs';
test('cuesheet displays events and exports csv', async ({ page }) => {
// ensure elements exist in editor
await page.goto('http://localhost:4001/editor');
await page.getByText('First test event').click();
await page.getByText('Second test event').click();
await page.getByText('Third test event').click();
await page.getByText('Add timeSubtract timeApplyCancel').click();
await page.getByText('Lunch').click();
// same elements in cuesheet
await page.goto('http://localhost:4001/cuesheet');
await page.getByText('All about Carlos demo event').click();
await page.getByRole('cell', { name: 'First test event' }).click();
await page.getByRole('cell', { name: 'Second test event' }).click();
await page.getByRole('cell', { name: 'Third test event' }).click();
await page.getByRole('cell', { name: '+10 min' }).click();
await page.getByRole('cell', { name: 'Lunch' }).click();
const downloadPromise = page.waitForEvent('download');
await page.getByTestId('cuesheet').getByText('Export').click();
await page.getByText('CSV').click();
// From here we test the CSV download feature
function validateCSV(contents) {
// We should try to keep this in sync with the implementation over at cuesheetUtils.ts
const expectedHeader = ['All about Carlos demo event', 'www.getontime.no'];
const expectedColumns = [
'Time Start',
'Time End',
'Event Title',
'Presenter Name',
'Event Subtitle',
'Public',
'Note',
'Colour',
'End Action',
'Timer Type',
'Skip',
'user0',
'user1',
'user2',
'user3',
'user4',
'user5',
'user6',
'user7',
'user8',
'user9',
];
const expectedValues = ['First test event', 'Second test event', 'Third test event', 'Lunch'];
const allExpected = [...expectedHeader, ...expectedColumns, ...expectedValues];
return allExpected.every((value) => contents.includes(value));
}
const download = await downloadPromise;
const contents = await fs.promises.readFile(await download.path(), 'utf-8');
expect(contents).toContain('All about Carlos demo event');
expect(validateCSV(contents)).toBe(true);
});