Skip to content

Commit 22d3cb3

Browse files
committed
III-6977: add tests for the publication status on the event preview page
1 parent 2da9042 commit 22d3cb3

File tree

3 files changed

+391
-0
lines changed

3 files changed

+391
-0
lines changed

CLAUDE.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,8 @@ src/
427427
- Separate setup for admin vs regular users (auth.setup.ts, auth-admin.setup.ts)
428428
- Admin tests: `*.admin.spec.ts` files
429429
- Run: `yarn test:e2e`
430+
- Never test styling or spacing
431+
- Never test different languages
430432
431433
#### Playwright Fixtures Pattern
432434
@@ -495,3 +497,4 @@ test.describe('My Tests', () => {
495497
- Remove unused code completely (no backwards-compatibility hacks)
496498
- Avoid over-engineering: make only necessary changes
497499
- Prefer simple solutions over abstractions
500+
- Never create documentation that duplicates what code already expresses
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
import { expect, test as base } from '@playwright/test';
2+
3+
import { suppressHydrationErrors } from '../helpers/suppress-hydration-errors';
4+
5+
type TestFixtures = {
6+
cultuurkuurEventUrl: string;
7+
cultuurkuurEventId: string;
8+
};
9+
10+
const test = base.extend<TestFixtures>({
11+
cultuurkuurEventId: async ({ page, baseURL }, applyFixture) => {
12+
suppressHydrationErrors(page);
13+
await page.goto(`${baseURL}/create`);
14+
15+
await page.getByRole('button', { name: 'Evenement' }).click();
16+
17+
await page.getByText('Dit is een evenement voor scholen').click();
18+
19+
await expect(
20+
page.getByText(
21+
'Je evenement zal verschijnen op cultuurkuur.be, het platform voor onderwijs & cultuur',
22+
),
23+
).toBeVisible();
24+
25+
await page.getByRole('button', { name: 'Theatervoorstelling' }).click();
26+
await page.getByRole('button', { name: 'Tekst en muziektheater' }).click();
27+
28+
await page
29+
.getByRole('button', { name: 'Tijdstip in overleg met de school' })
30+
.click();
31+
32+
await page
33+
.getByRole('button', { name: 'Op een locatie in overleg met de school' })
34+
.click();
35+
36+
await page.getByLabel('Naam van het evenement').click();
37+
await page
38+
.getByLabel('Naam van het evenement')
39+
.fill(`E2E Cultuurkuur Publication Test ${Date.now()}`);
40+
41+
await page.getByRole('button', { name: 'Opslaan' }).click();
42+
43+
await page
44+
.getByRole('button', { name: 'Provincie, regio of gemeente toevoegen' })
45+
.click();
46+
47+
await page.getByText('Regio Leiestreek West-Vlaanderen').click();
48+
await page.getByRole('button', { name: 'Kortrijk' }).click();
49+
await page.getByRole('button', { name: 'Zwevegem' }).click();
50+
51+
await page
52+
.getByRole('dialog')
53+
.getByRole('button', { name: 'Opslaan' })
54+
.click();
55+
56+
await page.getByRole('button', { name: 'Opslaan' }).click();
57+
58+
await page
59+
.getByRole('button', { name: 'Onderwijsniveaus toevoegen' })
60+
.click();
61+
62+
await page.getByText('Gewoon kleuteronderwijs', { exact: true }).click();
63+
await page.getByRole('button', { name: 'Kleuter (4-5 jaar)' }).click();
64+
65+
await page
66+
.getByRole('dialog')
67+
.getByRole('button', { name: 'Opslaan' })
68+
.click();
69+
70+
await page.getByRole('button', { name: 'Opslaan' }).click();
71+
72+
await page.waitForLoadState('networkidle');
73+
74+
await page.getByRole('button', { name: 'Publiceren', exact: true }).click();
75+
76+
await page.waitForURL(/\/events\/[a-f0-9-]+/);
77+
const url = page.url();
78+
const eventId = url.match(/\/events\/([a-f0-9-]+)/)?.[1] ?? '';
79+
80+
await applyFixture(eventId);
81+
},
82+
83+
cultuurkuurEventUrl: async ({ cultuurkuurEventId }, applyFixture) => {
84+
await applyFixture(`/events/${cultuurkuurEventId}`);
85+
},
86+
});
87+
88+
test.describe('Cultuurkuur Event - Publication Status Display', () => {
89+
test.beforeEach(async ({ context, page }) => {
90+
await context.addCookies([
91+
{
92+
name: 'ff_react_event_preview',
93+
value: 'true',
94+
domain: 'localhost',
95+
path: '/',
96+
},
97+
]);
98+
suppressHydrationErrors(page);
99+
});
100+
101+
test('should display Cultuurkuur branded public URL', async ({
102+
page,
103+
cultuurkuurEventUrl,
104+
cultuurkuurEventId,
105+
}) => {
106+
await page.goto(cultuurkuurEventUrl);
107+
108+
await page.getByRole('button', { name: 'Bewerken' }).waitFor();
109+
110+
const publicUrlLink = page.getByRole('link', {
111+
name: 'Bekijk op Cultuurkuur',
112+
});
113+
await expect(publicUrlLink).toBeVisible();
114+
115+
await expect(publicUrlLink).toHaveAttribute(
116+
'href',
117+
`https://cultuurkuur.be/event/${cultuurkuurEventId}`,
118+
);
119+
120+
await expect(publicUrlLink).toHaveAttribute('target', '_blank');
121+
});
122+
123+
test('should display Cultuurkuur publication alert after editing', async ({
124+
page,
125+
cultuurkuurEventId,
126+
}) => {
127+
await page.goto(`/events/${cultuurkuurEventId}/edit`);
128+
await page.waitForLoadState('domcontentloaded');
129+
130+
await page.getByRole('button', { name: 'Klaar met bewerken' }).click();
131+
132+
await page.waitForURL(/\/events\/[a-f0-9-]+\?edited=true/);
133+
134+
const alert = page.getByText(/binnen een dag.*zichtbaar op.*Cultuurkuur/);
135+
await expect(alert).toBeVisible();
136+
});
137+
});

0 commit comments

Comments
 (0)