Skip to content

Commit c9d4732

Browse files
authored
Merge pull request #772 from maykinmedia/feature/1640-cookiebanner-playwright-tests
✅ [#1640] Add playwright tests for cookie banner
2 parents b06c744 + 119a325 commit c9d4732

File tree

1 file changed

+67
-1
lines changed

1 file changed

+67
-1
lines changed

src/open_inwoner/configurations/tests/test_analytics.py

+67-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1-
from django.test import TestCase
1+
from django.test import TestCase, override_settings, tag
22
from django.urls import reverse
3+
from django.utils.translation import gettext as _
4+
5+
from playwright.sync_api import expect
6+
7+
from open_inwoner.utils.test import ClearCachesMixin
38

49
from ...cms.tests import cms_tools
10+
from ...utils.tests.playwright import PlaywrightSyncLiveServerTestCase
511
from ..models import SiteConfiguration
612

713

@@ -111,3 +117,63 @@ def test_siteimprove_analytics_not_rendered(self):
111117

112118
self.assertTemplateNotUsed(response, "analytics/siteimprove.html")
113119
self.assertNotContains(response, "<!-- SiteImprove -->")
120+
121+
122+
@tag("e2e")
123+
@override_settings(ROOT_URLCONF="open_inwoner.cms.tests.urls")
124+
class CookieBannerPlaywrightTests(ClearCachesMixin, PlaywrightSyncLiveServerTestCase):
125+
def setUp(self):
126+
from open_inwoner.accounts.tests.factories import DigidUserFactory
127+
128+
super().setUp()
129+
130+
self.user = DigidUserFactory.create()
131+
self.user_login_state = self.get_user_bsn_login_state(self.user)
132+
133+
def test_cookie_accept(self):
134+
config = SiteConfiguration.get_solo()
135+
136+
context = self.browser.new_context(storage_state=self.user_login_state)
137+
138+
page = context.new_page()
139+
page.goto(self.live_reverse("profile:action_list"))
140+
141+
cookie_banner = page.locator("#cookie-banner")
142+
143+
expect(cookie_banner).to_be_visible()
144+
expect(cookie_banner.get_by_text(config.cookie_info_text)).to_be_visible()
145+
146+
accept_button = cookie_banner.get_by_text(_("Alles toestaan"))
147+
accept_button.click()
148+
149+
cookie_banner_accepted = None
150+
for cookie in page.context.cookies():
151+
if cookie["name"] == "cookieBannerAccepted" and cookie["value"] == "true":
152+
cookie_banner_accepted = True
153+
154+
self.assertTrue(cookie_banner_accepted)
155+
expect(page.locator("#cookie-banner")).to_be_hidden()
156+
157+
def test_cookie_reject(self):
158+
config = SiteConfiguration.get_solo()
159+
160+
context = self.browser.new_context(storage_state=self.user_login_state)
161+
162+
page = context.new_page()
163+
page.goto(self.live_reverse("profile:action_list"))
164+
165+
cookie_banner = page.locator("#cookie-banner")
166+
167+
expect(cookie_banner).to_be_visible()
168+
expect(cookie_banner.get_by_text(config.cookie_info_text)).to_be_visible()
169+
170+
reject_button = cookie_banner.get_by_text(_("Alles weigeren"))
171+
reject_button.click()
172+
173+
cookie_banner_accepted = None
174+
for cookie in page.context.cookies():
175+
if cookie["name"] == "cookieBannerAccepted" and cookie["value"] == "false":
176+
cookie_banner_accepted = False
177+
178+
self.assertFalse(cookie_banner_accepted)
179+
expect(page.locator("#cookie-banner")).to_be_hidden()

0 commit comments

Comments
 (0)