@@ -9,74 +9,58 @@ import { test, expect } from '@test/e2e/helpers'
99
1010test . describe ( 'Cookie Consent Banner' , ( ) => {
1111 test . beforeEach ( async ( { page, context } ) => {
12- // Clear all cookies and storage before each test
12+ // Clear all cookies and storage before navigation
1313 await context . clearCookies ( )
14+
15+ // Navigate to page and clear storage
1416 await page . goto ( '/' )
1517 await page . evaluate ( ( ) => {
1618 localStorage . clear ( )
1719 sessionStorage . clear ( )
1820 } )
19- await page . reload ( )
21+
22+ // Wait for cookie banner to be initialized
23+ await page . waitForTimeout ( 1000 )
2024 } )
2125
22- test . skip ( '@wip cookie banner displays on first visit' , async ( { page } ) => {
26+ test ( '@ready cookie banner displays on first visit' , async ( { page } ) => {
2327 // Expected: Cookie consent banner should appear for first-time visitors
24- const cookieBanner = page . locator ( '[data- cookie-banner] ' )
28+ const cookieBanner = page . locator ( '# cookie-modal-id ' )
2529 await expect ( cookieBanner ) . toBeVisible ( )
2630 } )
2731
28- test . skip ( '@wip cookie banner has accept button' , async ( { page } ) => {
29- // Expected: Banner should have "Accept" button
30- const cookieBanner = page . locator ( '[data-cookie-banner]' )
31- const acceptButton = cookieBanner . locator ( '[data-cookie-accept], button:has-text("Accept")' )
32-
33- await expect ( acceptButton . first ( ) ) . toBeVisible ( )
34- } )
35-
36- test . skip ( '@wip cookie banner has reject/decline button' , async ( { page } ) => {
37- // Expected: Banner should have "Decline" or "Reject" option
38- const cookieBanner = page . locator ( '[data-cookie-banner]' )
39- const rejectButton = cookieBanner . locator ( '[data-cookie-reject], button:has-text("Decline"), button:has-text("Reject")' )
32+ test ( '@ready cookie banner has accept button' , async ( { page } ) => {
33+ // Expected: Banner should have "Allow All" button
34+ const cookieBanner = page . locator ( '#cookie-modal-id' )
35+ const acceptButton = cookieBanner . locator ( 'button:has-text("Allow All")' )
4036
41- await expect ( rejectButton . first ( ) ) . toBeVisible ( )
37+ await expect ( acceptButton ) . toBeVisible ( )
4238 } )
4339
44- test . skip ( '@wip cookie banner has preferences/settings button' , async ( { page } ) => {
45- // Expected: Banner should allow managing preferences
46- const cookieBanner = page . locator ( '[data-cookie-banner]' )
47- const settingsButton = cookieBanner . locator (
48- '[data-cookie-settings], button:has-text("Settings"), button:has-text("Preferences"), button:has-text("Manage")'
49- )
40+ test ( '@ready cookie banner has customize link' , async ( { page } ) => {
41+ // Expected: Banner should have "Customize" link
42+ const cookieBanner = page . locator ( '#cookie-modal-id' )
43+ const customizeLink = cookieBanner . getByRole ( 'link' , { name : 'Customize' } )
5044
51- await expect ( settingsButton . first ( ) ) . toBeVisible ( )
45+ await expect ( customizeLink ) . toBeVisible ( )
46+ await expect ( customizeLink ) . toHaveAttribute ( 'href' , '/cookies' )
5247 } )
5348
54- test . skip ( '@wip clicking accept hides banner' , async ( { page } ) => {
49+ test ( '@ready clicking allow all hides banner' , async ( { page } ) => {
5550 // Expected: Banner should disappear after accepting
56- const cookieBanner = page . locator ( '[data- cookie-banner] ' )
57- const acceptButton = cookieBanner . locator ( '[data-cookie-accept], button:has-text("Accept ")' ) . first ( )
51+ const cookieBanner = page . locator ( '# cookie-modal-id ' )
52+ const acceptButton = cookieBanner . locator ( 'button:has-text("Allow All ")' )
5853
5954 await acceptButton . click ( )
6055 await page . waitForTimeout ( 500 )
6156
6257 await expect ( cookieBanner ) . not . toBeVisible ( )
6358 } )
6459
65- test . skip ( '@wip clicking decline hides banner' , async ( { page } ) => {
66- // Expected: Banner should disappear after declining
67- const cookieBanner = page . locator ( '[data-cookie-banner]' )
68- const rejectButton = cookieBanner . locator ( '[data-cookie-reject], button:has-text("Decline")' ) . first ( )
69-
70- await rejectButton . click ( )
71- await page . waitForTimeout ( 500 )
72-
73- await expect ( cookieBanner ) . not . toBeVisible ( )
74- } )
75-
76- test . skip ( '@wip accept choice persists across page reloads' , async ( { page } ) => {
60+ test ( '@ready accept choice persists across page reloads' , async ( { page } ) => {
7761 // Expected: After accepting, banner should not reappear
78- const cookieBanner = page . locator ( '[data- cookie-banner] ' )
79- const acceptButton = cookieBanner . locator ( '[data-cookie-accept], button:has-text("Accept ")' ) . first ( )
62+ const cookieBanner = page . locator ( '# cookie-modal-id ' )
63+ const acceptButton = cookieBanner . locator ( 'button:has-text("Allow All ")' )
8064
8165 await acceptButton . click ( )
8266 await page . waitForTimeout ( 500 )
@@ -87,10 +71,10 @@ test.describe('Cookie Consent Banner', () => {
8771 await expect ( cookieBanner ) . not . toBeVisible ( )
8872 } )
8973
90- test . skip ( '@wip accept choice persists across navigation' , async ( { page } ) => {
74+ test ( '@ready accept choice persists across navigation' , async ( { page } ) => {
9175 // Expected: After accepting, banner should not appear on other pages
92- const cookieBanner = page . locator ( '[data- cookie-banner] ' )
93- const acceptButton = cookieBanner . locator ( '[data-cookie-accept], button:has-text("Accept ")' ) . first ( )
76+ const cookieBanner = page . locator ( '# cookie-modal-id ' )
77+ const acceptButton = cookieBanner . locator ( 'button:has-text("Allow All ")' )
9478
9579 await acceptButton . click ( )
9680 await page . waitForTimeout ( 500 )
@@ -101,113 +85,41 @@ test.describe('Cookie Consent Banner', () => {
10185 await expect ( cookieBanner ) . not . toBeVisible ( )
10286 } )
10387
104- test . skip ( '@wip banner contains privacy policy link' , async ( { page } ) => {
88+ test ( '@ready banner contains privacy policy link' , async ( { page } ) => {
10589 // Expected: Banner should link to privacy/cookie policy
106- const cookieBanner = page . locator ( '[data- cookie-banner] ' )
90+ const cookieBanner = page . locator ( '# cookie-modal-id ' )
10791 const policyLink = cookieBanner . locator ( 'a[href*="privacy"], a[href*="cookie"]' )
10892
10993 await expect ( policyLink . first ( ) ) . toBeVisible ( )
11094 } )
11195
112- test . skip ( '@wip cookie preferences modal opens' , async ( { page } ) => {
113- // Expected: Settings button should open preferences modal
114- const cookieBanner = page . locator ( '[data-cookie-banner]' )
115- const settingsButton = cookieBanner . locator ( '[data-cookie-settings], button:has-text("Settings")' ) . first ( )
116-
117- await settingsButton . click ( )
118- await page . waitForTimeout ( 500 )
119-
120- const preferencesModal = page . locator ( '[data-cookie-preferences]' )
121- await expect ( preferencesModal ) . toBeVisible ( )
122- } )
123-
124- test . skip ( '@wip preferences modal has cookie categories' , async ( { page } ) => {
125- // Expected: Modal should list different cookie types (essential, analytics, etc.)
126- const cookieBanner = page . locator ( '[data-cookie-banner]' )
127- const settingsButton = cookieBanner . locator ( '[data-cookie-settings], button:has-text("Settings")' ) . first ( )
128-
129- await settingsButton . click ( )
130- await page . waitForTimeout ( 500 )
131-
132- const preferencesModal = page . locator ( '[data-cookie-preferences]' )
133-
134- // Look for toggle switches or checkboxes for different categories
135- const categories = preferencesModal . locator ( 'input[type="checkbox"]' )
136- const count = await categories . count ( )
137-
138- expect ( count ) . toBeGreaterThan ( 0 )
139- } )
140-
141- test . skip ( '@wip essential cookies cannot be disabled' , async ( { page } ) => {
142- // Expected: Essential/necessary cookies should be always enabled
143- const cookieBanner = page . locator ( '[data-cookie-banner]' )
144- const settingsButton = cookieBanner . locator ( '[data-cookie-settings], button:has-text("Settings")' ) . first ( )
145-
146- await settingsButton . click ( )
147- await page . waitForTimeout ( 500 )
148-
149- const essentialCheckbox = page . locator (
150- 'input[name*="essential"], input[name*="necessary"]'
151- ) . first ( )
152-
153- if ( ( await essentialCheckbox . count ( ) ) > 0 ) {
154- const isDisabled = await essentialCheckbox . isDisabled ( )
155- const isChecked = await essentialCheckbox . isChecked ( )
156-
157- expect ( isDisabled || isChecked ) . toBe ( true )
158- }
159- } )
160-
161- test . skip ( '@wip can save custom preferences' , async ( { page } ) => {
162- // Expected: Should be able to customize and save cookie preferences
163- const cookieBanner = page . locator ( '[data-cookie-banner]' )
164- const settingsButton = cookieBanner . locator ( '[data-cookie-settings], button:has-text("Settings")' ) . first ( )
165-
166- await settingsButton . click ( )
167- await page . waitForTimeout ( 500 )
168-
169- // Toggle some preference
170- const analyticsCheckbox = page . locator ( 'input[name*="analytics"]' ) . first ( )
171- if ( ( await analyticsCheckbox . count ( ) ) > 0 && ! ( await analyticsCheckbox . isDisabled ( ) ) ) {
172- await analyticsCheckbox . uncheck ( )
173- }
174-
175- // Save preferences
176- const saveButton = page . locator ( 'button:has-text("Save"), button:has-text("Confirm")' ) . first ( )
177- await saveButton . click ( )
178- await page . waitForTimeout ( 500 )
179-
180- // Banner should close
181- await expect ( cookieBanner ) . not . toBeVisible ( )
182- } )
183-
184- test . skip ( '@wip banner is accessible via keyboard' , async ( { page } ) => {
96+ test ( '@ready banner is accessible via keyboard' , async ( { page } ) => {
18597 // Expected: Can navigate and interact with keyboard
186- const cookieBanner = page . locator ( '[data- cookie-banner] ' )
98+ const cookieBanner = page . locator ( '# cookie-modal-id ' )
18799 await expect ( cookieBanner ) . toBeVisible ( )
188100
189- // Tab to first button
101+ // Tab to first interactive element (close button)
102+ await page . keyboard . press ( 'Tab' )
103+
104+ // Tab to Allow All button
190105 await page . keyboard . press ( 'Tab' )
191106
192107 // Should be able to press Enter to activate
193108 await page . keyboard . press ( 'Enter' )
194109 await page . waitForTimeout ( 500 )
195110
196- // Banner should have responded (closed or opened modal)
197- const isBannerHidden = ! ( await cookieBanner . isVisible ( ) )
198- const isModalOpen = await page . locator ( '[data-cookie-preferences]' ) . isVisible ( )
199-
200- expect ( isBannerHidden || isModalOpen ) . toBe ( true )
111+ // Banner should be hidden after accepting
112+ await expect ( cookieBanner ) . not . toBeVisible ( )
201113 } )
202114
203- test . skip ( '@wip banner has proper ARIA attributes' , async ( { page } ) => {
115+ test ( '@ready banner has proper ARIA attributes' , async ( { page } ) => {
204116 // Expected: Banner should be accessible with proper roles
205- const cookieBanner = page . locator ( '[data- cookie-banner] ' )
117+ const cookieBanner = page . locator ( '# cookie-modal-id ' )
206118
207119 const role = await cookieBanner . getAttribute ( 'role' )
208120 const ariaLabel = await cookieBanner . getAttribute ( 'aria-label' )
209- const ariaLabelledBy = await cookieBanner . getAttribute ( 'aria-labelledby' )
210121
211- expect ( role || ariaLabel || ariaLabelledBy ) . toBeTruthy ( )
122+ expect ( role ) . toBe ( 'dialog' )
123+ expect ( ariaLabel ) . toBeTruthy ( )
212124 } )
213125} )
0 commit comments