Skip to content

Commit 3ed9b71

Browse files
committed
III-6948: add e2e tests for the movie specific actions
1 parent a820c91 commit 3ed9b71

File tree

1 file changed

+229
-0
lines changed

1 file changed

+229
-0
lines changed
Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
import { expect, test as base } from '@playwright/test';
2+
3+
type TestFixtures = {
4+
moviePreviewUrl: string;
5+
movieEventId: string;
6+
};
7+
8+
const test = base.extend<TestFixtures>({
9+
movieEventId: async ({ page, baseURL }, applyFixture) => {
10+
page.on('console', (msg) => {
11+
if (msg.type() === 'error' && msg.text().includes('Hydration')) {
12+
return;
13+
}
14+
});
15+
await page.goto(`${baseURL}/create`);
16+
17+
await page.getByRole('button', { name: 'Evenement' }).click();
18+
await page.getByRole('button', { name: 'Film' }).click();
19+
await page
20+
.locator('#calendar-step-day-day-1date-period-picker-start')
21+
.fill(new Date(Date.now() + 86400000).toLocaleDateString('nl-BE'));
22+
23+
await page.getByLabel('Gemeente').click();
24+
await page.getByLabel('Gemeente').fill('9000');
25+
await page.getByRole('option', { name: '9000 Gent' }).click();
26+
await page.getByLabel('Kies een locatie').click();
27+
await page.getByLabel('Kies een locatie').fill('S.M');
28+
await page
29+
.getByRole('option', { name: 'S.M.A.K.', exact: true })
30+
.first()
31+
.click();
32+
33+
await page.getByLabel('Naam van het evenement').click();
34+
await page
35+
.getByLabel('Naam van het evenement')
36+
.fill(`E2E Movie Sidebar Actions Test ${Date.now()}`);
37+
await page.getByRole('button', { name: 'Volwassenen 18+' }).click();
38+
await page.getByRole('button', { name: 'Opslaan' }).click();
39+
40+
await page.getByRole('tab', { name: 'Labels' }).click();
41+
await page.getByLabel('Verfijn met labels').fill('udb-filminvoer');
42+
await page.getByRole('option', { name: 'udb-filminvoer' }).click();
43+
44+
await page.getByRole('button', { name: 'Publiceren', exact: true }).click();
45+
46+
await page.waitForURL(/\/event\/[a-f0-9-]+\/preview/);
47+
const url = page.url();
48+
const movieEventId = url.match(/\/event\/([a-f0-9-]+)\/preview/)?.[1] ?? '';
49+
50+
await applyFixture(movieEventId);
51+
},
52+
53+
moviePreviewUrl: async ({ movieEventId }, applyFixture) => {
54+
await applyFixture(`/events/${movieEventId}`);
55+
},
56+
});
57+
58+
test.describe('Movie Preview Sidebar Actions', () => {
59+
test.beforeEach(async ({ page, moviePreviewUrl }) => {
60+
page.on('console', (msg) => {
61+
if (msg.type() === 'error' && msg.text().includes('Hydration')) {
62+
return;
63+
}
64+
});
65+
66+
await page.goto(moviePreviewUrl);
67+
await page.waitForLoadState('networkidle');
68+
});
69+
70+
test('should display all movie action buttons and be enabled', async ({
71+
page,
72+
}) => {
73+
const editButton = page.getByRole('button', {
74+
name: 'Bewerken',
75+
exact: true,
76+
});
77+
await expect(editButton).toBeVisible();
78+
await expect(editButton).not.toBeDisabled();
79+
await expect(editButton.locator('svg.fa-pencil')).toBeVisible();
80+
81+
const editMovieButton = page.getByRole('button', {
82+
name: 'Bewerken als film',
83+
});
84+
await expect(editMovieButton).toBeVisible();
85+
await expect(editMovieButton).not.toBeDisabled();
86+
await expect(editMovieButton.locator('svg.fa-video')).toBeVisible();
87+
88+
const translateButton = page.getByRole('button', { name: 'Vertalen' });
89+
await expect(translateButton).toBeVisible();
90+
await expect(translateButton).not.toBeDisabled();
91+
await expect(translateButton.locator('svg.fa-globe')).toBeVisible();
92+
93+
const duplicateButton = page.getByRole('button', {
94+
name: 'Kopiëren en aanpassen',
95+
exact: true,
96+
});
97+
await expect(duplicateButton).toBeVisible();
98+
await expect(duplicateButton).not.toBeDisabled();
99+
await expect(duplicateButton.locator('svg.fa-copy')).toBeVisible();
100+
101+
const duplicateAsMovieButton = page.getByRole('button', {
102+
name: 'Kopiëren en aanpassen als film',
103+
});
104+
await expect(duplicateAsMovieButton).toBeVisible();
105+
await expect(duplicateAsMovieButton).not.toBeDisabled();
106+
await expect(duplicateAsMovieButton.locator('svg.fa-video')).toBeVisible();
107+
108+
const availabilityButton = page.getByRole('button', {
109+
name: 'Beschikbaarheid wijzigen',
110+
});
111+
await expect(availabilityButton).toBeVisible();
112+
await expect(availabilityButton).not.toBeDisabled();
113+
await expect(
114+
availabilityButton.locator('svg.fa-calendar-check'),
115+
).toBeVisible();
116+
117+
const deleteButton = page.getByRole('button', { name: 'Verwijderen' });
118+
await expect(deleteButton).toBeVisible();
119+
await expect(deleteButton).not.toBeDisabled();
120+
await expect(deleteButton.locator('svg.fa-trash')).toBeVisible();
121+
});
122+
123+
test('should navigate to edit page when Edit button is clicked', async ({
124+
page,
125+
movieEventId,
126+
}) => {
127+
await page.getByRole('button', { name: 'Bewerken', exact: true }).click();
128+
await page.waitForURL(`**/events/${movieEventId}/edit`);
129+
});
130+
131+
test('should navigate to edit-movie page when Edit Movie button is clicked', async ({
132+
page,
133+
movieEventId,
134+
}) => {
135+
await page.getByRole('button', { name: 'Bewerken als film' }).click();
136+
await page.waitForURL(`**/events/${movieEventId}/edit-movie`);
137+
});
138+
139+
test('should navigate to translate page when Translate button is clicked', async ({
140+
page,
141+
movieEventId,
142+
}) => {
143+
await page.getByRole('button', { name: 'Vertalen' }).click();
144+
await page.waitForURL(`**/events/${movieEventId}/translate`);
145+
});
146+
147+
test('should navigate to duplicate page when Duplicate button is clicked', async ({
148+
page,
149+
movieEventId,
150+
}) => {
151+
await page
152+
.getByRole('button', { name: 'Kopiëren en aanpassen', exact: true })
153+
.click();
154+
await page.waitForURL(`**/events/${movieEventId}/duplicate`);
155+
});
156+
157+
test('should navigate to duplicate-movie page when Duplicate as Movie button is clicked', async ({
158+
page,
159+
movieEventId,
160+
}) => {
161+
await page
162+
.getByRole('button', { name: 'Kopiëren en aanpassen als film' })
163+
.click();
164+
await page.waitForURL(`**/events/${movieEventId}/duplicate-movie`);
165+
});
166+
167+
test('should navigate to availability page when Change Availability button is clicked', async ({
168+
page,
169+
movieEventId,
170+
}) => {
171+
await page
172+
.getByRole('button', { name: 'Beschikbaarheid wijzigen' })
173+
.click();
174+
await page.waitForURL(`**/events/${movieEventId}/availability`);
175+
});
176+
177+
test('should only show two duplicate buttons for expired movie event', async ({
178+
page,
179+
movieEventId,
180+
}) => {
181+
const editButton = page.getByRole('button', {
182+
name: 'Bewerken',
183+
exact: true,
184+
});
185+
await editButton.click();
186+
await page.waitForURL(`**/events/${movieEventId}/edit`);
187+
188+
const pastDate = new Date(Date.now() - 86400000 * 30);
189+
await page
190+
.locator('#calendar-step-day-day-2date-period-picker-start')
191+
.fill(pastDate.toLocaleDateString('nl-BE'));
192+
await page
193+
.locator('#calendar-step-day-day-2date-period-picker-end')
194+
.fill(pastDate.toLocaleDateString('nl-BE'));
195+
196+
await page.getByRole('button', { name: 'Klaar met bewerken' }).click();
197+
await page.waitForLoadState('networkidle');
198+
199+
await page.goto(`/events/${movieEventId}`);
200+
await page.waitForLoadState('networkidle');
201+
202+
await expect(
203+
page.getByRole('button', { name: 'Bewerken', exact: true }),
204+
).not.toBeVisible();
205+
await expect(
206+
page.getByRole('button', { name: 'Bewerken als film', exact: false }),
207+
).not.toBeVisible();
208+
await expect(
209+
page.getByRole('button', { name: 'Vertalen' }),
210+
).not.toBeVisible();
211+
212+
await expect(
213+
page.getByRole('button', { name: 'Kopiëren en aanpassen', exact: true }),
214+
).toBeVisible();
215+
await expect(
216+
page.getByRole('button', {
217+
name: 'Kopiëren en aanpassen als film',
218+
exact: true,
219+
}),
220+
).toBeVisible();
221+
222+
await expect(
223+
page.getByRole('button', { name: 'Beschikbaarheid wijzigen' }),
224+
).not.toBeVisible();
225+
await expect(
226+
page.getByRole('button', { name: 'Verwijderen' }),
227+
).not.toBeVisible();
228+
});
229+
});

0 commit comments

Comments
 (0)