Waivern Waivern Consent Analyser ← Home   Log
ePrivacy / GDPR Compliance Report  ·  ePrivacy/GDPR (EU)

Consent Compliance Report

2026-04-02 14:50:58 UTC  ·  https://www.independent.ie/  ·  CMP: Didomi   🤖 AI on
📍 Analysis ran from: 🇳🇱 Amsterdam, North Holland, The Netherlands  ·  IP: 208.77.244.106  ·  Railway  ·  Results reflect how this site presents to this location.
Post Reject All — compliance state
13 FAIL   15 PASS   10 MANUAL  ·  13 warn   0 err

CMP Interaction

Banner detected True
Accept button Accept
Reject button
Clicks to accept / reject 1 / 1
Reject buried in manage panel True

Screenshots

Pre-Consent — initial page load
Pre-Consent — initial page load
Post Accept All — consent baseline
Post Accept All — consent baseline
Post Reject All — compliance state
Post Reject All — compliance state

Section M — Summary

Category Result
Pre Consent Clean✗ FAIL
No Tracking Cookies Pre Consent✓ PASS
Tracker Globals Undefined✗ FAIL
No Tracking Storage Pre Consent✓ PASS
Network Blocked After Decline☐ MANUAL
Third Party Cookies Absent☐ MANUAL
Doc Cookie Clean Post Reject✓ PASS
Web Storage Clean Post Reject✓ PASS
First Party Cookies Classifiedℹ INFO
Server Side Cookies Gated— N/A
No Cname Cloaking✓ PASS
Tracker Globals Absent✗ FAIL
Dom Scripts Blocked✗ FAIL
Reject Equals Accept Clicks✓ PASS
No Preticked Boxes☐ MANUAL
Persistent Withdrawal Widget✓ PASS
No Cookie Wall✓ PASS
Consent Persists✗ FAIL
Run Log   81 entries  ·  ⚠ 13 warning(s)  ·  raw JSON
elapsed level session message
0.0s▶ STEPMAINRun c80a5239 started
{"url": "https://www.independent.ie/"}
0.0s· INFOMAINDetecting probe server location
0.2s· INFOMAINProbe location
{"ip": "208.77.244.106", "city": "Amsterdam", "region": "North Holland", "country": "The Netherlands", "country_code": "NL", "org": "Railway", "latitude": 52.37403, "longitude": 4.88969}
0.2s▶ STEPMAINStarting analysis of https://www.independent.ie/
{"mode": "GDPR"}
0.7s· INFOMAINChromium launched
{"headless": true}
0.8s· INFOPREFLIGHTNavigating to https://www.independent.ie/
11.0s⚠ WARNPREFLIGHTNetwork did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).
11.1s▶ STEPASession A start (accept path)
11.2s· INFOANavigating to https://www.independent.ie/
21.2s⚠ WARNANetwork did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).
23.2s· INFOACapturing pre-consent state
23.4s· INFOAPre-consent state captured
{"pre_consent_cookies": 11, "pre_consent_ad_cookies": 0, "pre_consent_tracking_storage": 0, "pre_consent_tracker_globals": ["dataLayer", "google_tag_manager"], "pre_consent_unblocked_scripts": 2, "pre_consent_capture_error": null}
32.5s· INFOABanner: found
39.9s· INFOAAccept All interaction
{"cmp": "Didomi", "button_text": "Accept", "clicked": true, "in_iframe": false, "error": null}
41.9s· INFOACapturing post-accept baseline state
42.2s· INFOABaseline captured
{"baseline_cookies": 52, "baseline_ad_cookies": 8, "baseline_tracking_storage": 1, "baseline_tracker_globals": ["dataLayer", "google_tag_manager", "fbq", "_fbq", "hj", "_hjSettings", "twq", "twttr", "lintrk", "ttq", "snaptr"], "baseline_unblocked_scripts": 15, "baseline_capture_error": null}
42.9s· INFOAContext closed, HAR saved
42.9s▶ STEPASession A complete
{"pre_consent_cookies": 11, "pre_consent_ad_cookies": 0, "pre_consent_tracking_storage": 0, "pre_consent_tracker_globals": ["dataLayer", "google_tag_manager"], "pre_consent_unblocked_scripts": 2, "pre_consent_capture_error": null, "baseline_cookies": 52, "baseline_ad_cookies": 8, "baseline_tracking_storage": 1, "baseline_tracker_globals": ["dataLayer", "google_tag_manager", "fbq", "_fbq", "hj", "_
42.9s▶ STEPBSession B start (reject path)
42.9s· INFOBNavigating to https://www.independent.ie/
52.8s⚠ WARNBNetwork did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).
54.8s· INFOBCapturing pre-consent state
54.9s· INFOBPre-consent B captured
{"pre_consent_B_cookies": 11, "pre_consent_B_ad_cookies": 0, "pre_consent_B_tracking_storage": 0, "pre_consent_B_tracker_globals": ["dataLayer", "google_tag_manager"], "pre_consent_B_unblocked_scripts": 2, "pre_consent_B_capture_error": null}
63.9s· INFOBBanner: found
64.0s· INFOBPersistent widget found pre-reject (CMP fully loaded)
{"found": true, "text": "Manage", "in_iframe": false}
81.1s· INFOBClick symmetry measured
{"accept_clicks": 1, "reject_clicks": 0}
102.0s· INFOBReject All interaction
{"cmp": "Didomi", "button_text": "", "clicked": false, "clicks_required": 1, "required_manage_panel": true, "panel_navigated": false, "panel_new_frames": 0, "panel_wait_s": 6.3999999999999995, "error": "Reject button not found in manage panel after 6s. Poll trace: [{'t': 0.8, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 1.6, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 2.4,
102.0s⚠ WARNBReject interaction issue: Reject button not found in manage panel after 6s. Poll trace: [{'t': 0.8, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 1.6, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 2.4, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 3.2, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 4.0, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 4.8, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 5.6, 'navigated': False, 'new_frames': 0, 'url': None}, {'t': 6.4, 'navigated': False, 'new_frames': 0, 'url': None}]. The panel may use an unrecognised reject label, or require individual toggles to be turned off manually.
102.0s⚠ WARNBReject All was NOT successfully clicked — post-reject state captures an unmodified consent state, not a rejection.
104.0s· INFOBSite accessible after reject: True
104.0s· INFOBCapturing post-reject state
104.3s· INFOBPost-reject captured
{"post_reject_cookies": 11, "post_reject_ad_cookies": 0, "post_reject_tracking_storage": 0, "post_reject_tracker_globals": ["dataLayer", "google_tag_manager"], "post_reject_unblocked_scripts": 2, "post_reject_capture_error": null}
104.3s· INFOBPersistent widget check
{"found": true, "text": "Manage", "in_iframe": false}
104.3s· INFOBCapturing subpages
114.3s· INFOB2 subpage(s) captured
{"urls": ["https://member.independent.ie/newsletter", "https://www.independent.ie/entertainment/puzzles"], "errors": []}
115.4s· INFOBContext closed, HAR saved
115.4s· INFOBChecking pre-ticked toggles (separate session)
115.4s· INFOBNavigating to https://www.independent.ie/
125.8s⚠ WARNBNetwork did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).
155.2s⚠ WARNBManage/preferences button not visible after 5s wait — toggle check may return 0 results
156.7s· INFOBPre-ticked toggles: 0 found
{"toggles": {}}
156.7s⚠ WARNBToggle check returned 0 results — diagnostics:
{"manage_button_found": false, "manage_button_text": null, "frames_scanned": [], "total_elements_found": 0, "note": "Manage/preferences button not found on page"}
156.7s▶ STEPBSession B complete
{"post_reject_cookies": 11, "post_reject_ad_cookies": 0, "post_reject_tracking_storage": 0, "post_reject_tracker_globals": ["dataLayer", "google_tag_manager"], "post_reject_unblocked_scripts": 2, "post_reject_capture_error": null, "accept_clicks": 1, "reject_clicks": 1, "reject_at_first_screen": false, "subpages_captured": 2}
156.7s▶ STEPCSession C start (persistence check)
156.8s· INFOCNavigating to https://www.independent.ie/
166.9s⚠ WARNCNetwork did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).
181.3s· INFOCReject for persistence test
{"clicked": false, "error": "No reject button and no manage/preferences button found on layer 1. CMP may not have loaded, or uses an unrecognised button label."}
181.3s⚠ WARNCReject All failed in Session C — persistence check results will be unreliable.
183.3s· INFOCOpening second tab (same-session test)
183.3s· INFOCNavigating to https://www.independent.ie/
194.2s⚠ WARNCNetwork did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).
196.3s· INFOCSame-session state captured
{"persistence_1_cookies": 42, "persistence_1_ad_cookies": 4, "persistence_1_tracking_storage": 1, "persistence_1_tracker_globals": ["dataLayer", "google_tag_manager", "fbq", "_fbq", "hj", "_hjSettings", "twq", "twttr", "lintrk", "ttq", "snaptr"], "persistence_1_unblocked_scripts": 14, "persistence_1_capture_error": null}
196.4s· INFOCStorage state saved, opening new context
196.5s· INFOCNavigating to https://www.independent.ie/
206.6s⚠ WARNCNetwork did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).
208.7s· INFOCNew-session state captured
{"persistence_2_cookies": 42, "persistence_2_ad_cookies": 4, "persistence_2_tracking_storage": 1, "persistence_2_tracker_globals": ["dataLayer", "google_tag_manager", "fbq", "_fbq", "hj", "_hjSettings", "twq", "twttr", "lintrk", "ttq", "snaptr"], "persistence_2_unblocked_scripts": 14, "persistence_2_capture_error": null}
208.7s▶ STEPCSession C complete
{"persistence_1_captured": true, "persistence_2_captured": true}
208.7s▶ STEPPOLICY_RENDERRendering cookie policy page in browser
209.0s· INFOPOLICY_RENDERStandard paths not found — scanning page for policy link
215.9s· INFOPOLICY_RENDERFound policy link via page scan: "cookie policy" → https://www.mediahuis.ie/cookiepolicy
215.9s· INFOPOLICY_RENDERNavigating to policy: https://www.mediahuis.ie/cookiepolicy
223.3s· INFOPOLICY_RENDERExtracted 219 chars from policy page
223.4s· INFOPOLICY_RENDERPolicy page rendered (219 chars)
223.4s· INFOMAINBrowser closed
223.4s▶ STEPDNSRunning CNAME cloaking checks
223.4s· INFODNSApex domain: independent.ie (from hostname: www.independent.ie)
223.9s· INFODNSChecking 4 subdomain(s)
{"subdomains": ["member.independent.ie", "focus.independent.ie", "gigya-cp.independent.ie", "markup.independent.ie"]}
224.0s· INFODNSCNAME check done — 0 tracker CNAME(s)
{"results": [{"sub": "member.independent.ie", "cname": null, "tracker": false, "vendor": null}, {"sub": "focus.independent.ie", "cname": null, "tracker": false, "vendor": null}, {"sub": "gigya-cp.independent.ie", "cname": null, "tracker": false, "vendor": null}, {"sub": "markup.independent.ie", "cname": null, "tracker": false, "vendor": null}]}
224.0s▶ STEPPOLICYFetching cookie policy
224.0s· INFOPOLICYPolicy found at https://www.mediahuis.ie/cookiepolicy
224.0s· INFOPOLICYFetching policy, cross-referencing 49 cookie(s)
234.6s· INFOPOLICYPolicy fetch OK
{"declared": 1, "undeclared_observed": 47, "ai_used": true}
234.6s⚠ WARNPOLICY47 cookie(s) not in policy
{"cookies": ["__eoi", "_rdt_uuid", "_ga", "DSID", "gig_canary", "guest_id_ads", "guest_id", "cto_bundle", "_mhtc_cId", "_twpid", "ttcsid", "_ain_cid", "_tt_enable_cookie", "didomi_token", "X-AB", "_fbp", "ucid", "lidc", "bcookie", "__cf_bm"]}
234.6s▶ STEPMAINAnalysis complete
{"error_count": 0}
234.6s▶ STEPC1Running Component 1 HAR analysis
235.1s· INFOC1HAR analysis complete — 1 FAIL item(s)
{"total_requests": 249, "phases": ["pre_consent"], "phase_strategy": {"accept": "not_detected", "reject": "not_detected"}, "fail_items": ["B.1"]}
235.4s· INFOC1Extracted 1 TCF string(s) from accept-path HAR
{"purposes_found": ["All 10 core purposes CONSENTED"]}
235.4s· INFOC1Running C1 on accept-path HAR for C.2/C.3 baseline
235.4s· INFOC1Accept-HAR promoted 1 item(s): ['C.2']
{"phases": ["pre_consent"]}
235.4s▶ STEPCHECKSRunning browser-state checks
235.4s· INFOCHECKSBrowser checks complete — 12 FAIL item(s)
{"fail_items": ["B.3", "B.5", "E.4", "G.2", "H.1", "H.3", "I.1", "I.2", "I.3", "K.1", "L.2", "L.3"], "mode": "gdpr"}

Detailed Findings

B. Pre-Consent State 3 FAIL   2 PASS   0 MANUAL
B.1 No tracking requests before consent banner interaction
✗ FAIL

2 tracking domain(s) made requests before any consent signal was recorded.

domainvendorcategoryrequest_countfirst_request_timeexample_url
securepubads.g.doubleclick.netGoogle Publisher AdsADVERTISING62026-04-02T14:47:46https://securepubads.g.doubleclick.net/tag/js/gpt.js
pagead2.googlesyndication.comGoogle AdSense/GAMADVERTISING12026-04-02T14:47:51https://pagead2.googlesyndication.com/pagead/ping?e=1
Recommendation: Third-party analytics and advertising scripts must not be loaded until after affirmative consent. Implement a consent-gate that defers all non-essential script initialisation until the TCF API reports a positive consent decision.
B.2 No analytics/marketing cookies in Storage pre-consent
✓ PASS

No advertising cookies found in Storage before consent.

B.3 JS tracker globals return undefined pre-consent
✗ FAIL

Tracker globals defined before consent: ['google_tag_manager']

global: google_tag_manager  ·  type: __defined_object__
Recommendation: Tracker initialisation scripts must not execute before consent. Implement a consent gate that loads tracker SDKs only after the TCF API confirms a positive decision.
B.4 No tracking identifiers in localStorage/sessionStorage pre-consent
✓ PASS

No tracking keys found in web storage pre-consent.

B.5 Non-essential scripts have type=text/plain (CMP-blocked) in DOM
✗ FAIL

2 tracking script(s) in DOM without CMP-blocking type attribute.

srctypevendor
https://securepubads.g.doubleclick.net/tag/js/gpt.jsGoogle Publisher Ads
https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202603300101/pubads_impl.js?cb=3109751Google Publisher Ads
Recommendation: Scripts for tracking vendors should either be absent from the DOM entirely pre-consent, or have their type attribute set to 'text/plain' to prevent execution. CMPs typically manage this; verify the CMP script-blocking configuration.
C. Baseline Capture 0 PASS   1 MANUAL
C.2 Third-party domains active after Accept All
☐ MANUAL

No post-accept phase detected. Was 'Accept All' clicked during recording?

C.3 Full cookie inventory (with expiry, HttpOnly, Secure, SameSite) after Accept All
ℹ INFO

52 cookies in storage after Accept All (full metadata).

▶ Show all 52 rows
namedomainexpires_dayshttp_onlysecuresame_siteclassification
X-ABsc-static.net1.0FalseTrueNoneUNKNOWN
__cf_bm.independent.ie0.0TrueTrueLaxESSENTIAL
gig_canarycdns.gigya.com0.0TrueTrueNoneUNKNOWN
fp.browser_session_id.independent.iesessionFalseFalseLaxESSENTIAL
gig_canarycdns.eu1.gigya.com0.0TrueTrueNoneUNKNOWN
gmid.gigya-cp.independent.ie365.0TrueTrueNoneUNKNOWN
ucid.gigya-cp.independent.ie365.0TrueTrueNoneUNKNOWN
hasGmid.gigya-cp.independent.ie183.0FalseTrueNoneUNKNOWN
gig_bootstrap_4_CO8231Ix1RbYi2EmMbsrlw.independent.ie365.0FalseTrueNoneUNKNOWN
scwww.independent.ie0.0FalseFalseLaxUNKNOWN
_mhtc_cId.independent.ie31.0FalseFalseLaxUNKNOWN
didomi_token.independent.ie366.0FalseFalseLaxESSENTIAL
euconsent-v2.independent.ie366.0FalseFalseLaxESSENTIAL
_gcl_au.independent.ie90.0FalseFalseLaxUNKNOWN
sessionIdwww.independent.ie0.0FalseFalseLaxESSENTIAL
viewSqwww.independent.ie0.0FalseFalseLaxUNKNOWN
_mhtrdisableshortnamewww.independent.ie0.0FalseFalseLaxUNKNOWN
_ttp.tiktok.com90.0FalseTrueNoneUNKNOWN
uid.criteo.com390.0FalseTrueNoneUNKNOWN
_twpid.independent.ie390.0FalseTrueStrictUNKNOWN
_rdt_uuid.independent.ie90.0FalseTrueStrictUNKNOWN
muc_ads.t.co400.0FalseTrueNoneUNKNOWN
IDE.doubleclick.net390.0TrueTrueNoneAD
_scid.independent.ie395.0FalseFalseLaxUNKNOWN
_scid_r.independent.ie395.0FalseFalseLaxUNKNOWN
guest_id_marketing.twitter.com400.0FalseTrueNoneUNKNOWN
guest_id_ads.twitter.com400.0FalseTrueNoneUNKNOWN
personalization_id.twitter.com400.0FalseTrueNoneUNKNOWN
guest_id.twitter.com400.0FalseTrueNoneUNKNOWN
sc_at.snapchat.com390.0FalseTrueNoneUNKNOWN
test_cookie.doubleclick.net0.0TrueTrueNoneUNKNOWN
bcookie.linkedin.com365.0FalseTrueNoneUNKNOWN
li_gc.linkedin.com180.0FalseTrueNoneUNKNOWN
lidc.linkedin.com1.0FalseTrueNoneUNKNOWN
_ga.independent.ie400.0FalseFalseLaxAD
cto_bundle.criteo.com390.0FalseTrueNoneUNKNOWN
_mhtc_sId.independent.ie0.0FalseFalseLaxUNKNOWN
_hjSessionUser_1713171.independent.ie365.0FalseTrueNoneESSENTIAL
_hjSession_1713171.independent.ie0.0FalseTrueNoneESSENTIAL
_fbp.independent.ie90.0FalseFalseLaxAD
_tt_enable_cookie.independent.ie90.0FalseFalseLaxUNKNOWN
_ttp.independent.ie90.0FalseFalseLaxUNKNOWN
__gads.independent.ie390.0FalseTrueNoneAD
__gpi.independent.ie390.0FalseTrueNoneAD
__eoi.independent.ie180.0FalseTrueNoneAD
cto_bundle.independent.ie390.0FalseFalseLaxUNKNOWN
_ga_W2EK8THFQJ.independent.ie400.0FalseFalseLaxAD
ttcsid.independent.ie90.0FalseFalseLaxUNKNOWN
ttcsid_CSN1O63C77U450RMS5E0.independent.ie90.0FalseFalseLaxUNKNOWN
DSID.doubleclick.net0.0TrueTrueNoneAD
_ain_cidwww.independent.ie0.0FalseTrueStrictUNKNOWN
_ain_uidwww.independent.ie180.0FalseTrueStrictUNKNOWN
C.4 Tracker JS globals active after Accept All (baseline)
ℹ INFO

Globals defined after consent: ['dataLayer', 'google_tag_manager', 'fbq', '_fbq', 'hj', '_hjSettings', 'twq', 'twttr', 'lintrk', 'ttq', 'snaptr']

▶ Show all 11 rows
globaltype
dataLayer__defined_object__
google_tag_manager__defined_object__
fbqfunction
_fbqfunction
hjfunction
_hjSettings__defined_object__
twqfunction
twttr__defined_object__
lintrkfunction
ttq__defined_object__
snaptrfunction
D. Decline Non-Essential Consent 1 PASS   0 MANUAL
D.4 Reject requires no more clicks than Accept (EDPB symmetry)
✓ PASS

Accept and Reject both require 1 click(s). Symmetric.

accept clicks: 1  ·  reject clicks: 1  ·  extra clicks to reject: 0  ·  reject required manage panel: True
E. Network Request Verification 1 FAIL   0 PASS   3 MANUAL
E.1 Network requests after reject-all
☐ MANUAL

No post-reject phase detected in this HAR.

E.2 Network requests after reject-all
☐ MANUAL

No post-reject phase detected in this HAR.

E.3 Network requests after reject-all
☐ MANUAL

No post-reject phase detected in this HAR.

E.4 No tracking activity on subpages after reject-all
✗ FAIL

Tracking activity detected on 2 subpage(s) after reject.

pageglobalphase
https://member.independent.ie/newslettergasubpage_1
https://member.independent.ie/newsletter_gaqsubpage_1
https://member.independent.ie/newslettergoogle_tag_managersubpage_1
https://member.independent.ie/newsletterGoogleAnalyticsObjectsubpage_1
https://www.independent.ie/entertainment/puzzlesgoogle_tag_managersubpage_2
F. Cookie Verification (Third-Party) 2 PASS   1 MANUAL
F.1 No non-essential cookies after reject-all
☐ MANUAL

No post-reject phase detected.

F.2 document.cookie contains only essential cookies post-reject
✓ PASS

No advertising cookies visible in document.cookie post-reject.

doc cookie snippet: didomi_token=eyJ1c2VyX2lkIjoiMTlkNGVhYTItNDcyOC02ZDhlLWFjNDItOGU1MjJjMTMwZDFlIiwiY3JlYXRlZCI6IjIwMjYtMDQtMDJUMTQ6NDc6NDYuNTQ2WiIsInVwZGF0ZWQiOiIyMDI2LTA0LTAyVDE0OjQ3OjQ2LjU0NloiLCJ2ZXJzaW9uIjpudWxsfQ==; fp.browser_session_id=e692cf5c-f9ec-4b16-b0f8-c32678d1ab84; gig_bootstrap_4_CO8231Ix1RbYi2EmMbsrlw=gigya-cp_ver4; sc=9336507d-c303-42aa-aae7-0118ce5b85c6.1; _mhtc_cId=b1e8ffcf-1cd4-499d-afd7-6d5d65
F.3 No tracking identifiers in web storage post-reject
✓ PASS

No tracking identifiers found in localStorage/sessionStorage post-reject.

G. First-Party Cookie Classification 1 FAIL   5 PASS   0 MANUAL
G.1 Complete first-party cookie inventory with full metadata
ℹ INFO

34 first-party cookies in Storage after Accept All.

▶ Show all 34 rows
namedomainexpires_dayshttp_onlysecuresame_siteclassification
__cf_bm.independent.ie0.0TrueTrueLaxESSENTIAL
fp.browser_session_id.independent.iesessionFalseFalseLaxESSENTIAL
gmid.gigya-cp.independent.ie365.0TrueTrueNoneUNKNOWN
ucid.gigya-cp.independent.ie365.0TrueTrueNoneUNKNOWN
hasGmid.gigya-cp.independent.ie183.0FalseTrueNoneUNKNOWN
gig_bootstrap_4_CO8231Ix1RbYi2EmMbsrlw.independent.ie365.0FalseTrueNoneUNKNOWN
scwww.independent.ie0.0FalseFalseLaxUNKNOWN
_mhtc_cId.independent.ie31.0FalseFalseLaxUNKNOWN
didomi_token.independent.ie366.0FalseFalseLaxESSENTIAL
euconsent-v2.independent.ie366.0FalseFalseLaxESSENTIAL
_gcl_au.independent.ie90.0FalseFalseLaxUNKNOWN
sessionIdwww.independent.ie0.0FalseFalseLaxESSENTIAL
viewSqwww.independent.ie0.0FalseFalseLaxUNKNOWN
_mhtrdisableshortnamewww.independent.ie0.0FalseFalseLaxUNKNOWN
_twpid.independent.ie390.0FalseTrueStrictUNKNOWN
_rdt_uuid.independent.ie90.0FalseTrueStrictUNKNOWN
_scid.independent.ie395.0FalseFalseLaxUNKNOWN
_scid_r.independent.ie395.0FalseFalseLaxUNKNOWN
_ga.independent.ie400.0FalseFalseLaxAD
_mhtc_sId.independent.ie0.0FalseFalseLaxUNKNOWN
_hjSessionUser_1713171.independent.ie365.0FalseTrueNoneESSENTIAL
_hjSession_1713171.independent.ie0.0FalseTrueNoneESSENTIAL
_fbp.independent.ie90.0FalseFalseLaxAD
_tt_enable_cookie.independent.ie90.0FalseFalseLaxUNKNOWN
_ttp.independent.ie90.0FalseFalseLaxUNKNOWN
__gads.independent.ie390.0FalseTrueNoneAD
__gpi.independent.ie390.0FalseTrueNoneAD
__eoi.independent.ie180.0FalseTrueNoneAD
cto_bundle.independent.ie390.0FalseFalseLaxUNKNOWN
_ga_W2EK8THFQJ.independent.ie400.0FalseFalseLaxAD
ttcsid.independent.ie90.0FalseFalseLaxUNKNOWN
ttcsid_CSN1O63C77U450RMS5E0.independent.ie90.0FalseFalseLaxUNKNOWN
_ain_cidwww.independent.ie0.0FalseTrueStrictUNKNOWN
_ain_uidwww.independent.ie180.0FalseTrueStrictUNKNOWN
G.2 All observed cookies declared in cookie policy
✗ FAIL

47 cookie(s) observed but not found in cookie policy at https://www.mediahuis.ie/cookiepolicy.

▶ Show all 30 rows
cookie_namestatus
__eoiobserved but not in cookie policy
_rdt_uuidobserved but not in cookie policy
_gaobserved but not in cookie policy
DSIDobserved but not in cookie policy
gig_canaryobserved but not in cookie policy
guest_id_adsobserved but not in cookie policy
guest_idobserved but not in cookie policy
cto_bundleobserved but not in cookie policy
_mhtc_cIdobserved but not in cookie policy
_twpidobserved but not in cookie policy
ttcsidobserved but not in cookie policy
_ain_cidobserved but not in cookie policy
_tt_enable_cookieobserved but not in cookie policy
didomi_tokenobserved but not in cookie policy
X-ABobserved but not in cookie policy
_fbpobserved but not in cookie policy
ucidobserved but not in cookie policy
lidcobserved but not in cookie policy
bcookieobserved but not in cookie policy
__cf_bmobserved but not in cookie policy
scobserved but not in cookie policy
_ga_W2EK8THFQJobserved but not in cookie policy
gmidobserved but not in cookie policy
hasGmidobserved but not in cookie policy
gig_bootstrap_4_CO8231Ix1RbYi2EmMbsrlwobserved but not in cookie policy
_hjSession_1713171observed but not in cookie policy
viewSqobserved but not in cookie policy
sc_atobserved but not in cookie policy
IDEobserved but not in cookie policy
test_cookieobserved but not in cookie policy
G.3 Strictly necessary two-part test (AI-assisted)
✓ PASS

AI analysis: 0 cookie(s) fail the strictly-necessary test and should be absent after reject-all. Summary:

G.4 Server-side analytics/ad cookies identified in Set-Cookie headers
✓ PASS

No advertising cookies observed in Set-Cookie response headers.

G.5 No CNAME cloaking detected (first-party subdomains resolving to tracker infrastructure)
✓ PASS

No CNAME cloaking detected across 4 subdomain(s).

subdomaincname_targetis_trackervendorerror
member.independent.ie(no CNAME / A record only)FalseNoneNone
focus.independent.ie(no CNAME / A record only)FalseNoneNone
gigya-cp.independent.ie(no CNAME / A record only)FalseNoneNone
markup.independent.ie(no CNAME / A record only)FalseNoneNone
G.6 Non-essential first-party cookies absent after reject-all
✓ PASS

All advertising cookies absent from Storage post-reject.

G.9 No tracking keys in first-party localStorage/sessionStorage post-reject
✓ PASS

No tracking identifiers found in first-party web storage post-reject.

H. JS Global Object Verification 2 FAIL   0 PASS   0 MANUAL
H.1 Tracker JS globals (ga, gtag, fbq, hj, etc.) return undefined post-reject
✗ FAIL

Tracker globals still defined after reject-all: ['google_tag_manager']

global: google_tag_manager  ·  type: __defined_object__
H.2 Tracker globals not merely defined without values
ℹ INFO

See H.1 — same evidence applies.

global: google_tag_manager  ·  present: True
H.3 window.dataLayer absent or contains no tracking events post-reject
✗ FAIL

dataLayer contains 3 tracking event(s): ['gtm.js', 'gtm.dom', 'pageview']

event
didomi-consent
didomi-ready
gtm.js
gtm.dom
gtm.load
user-ready
pageview
gtm.click
I. DOM / Source Inspection 3 FAIL   0 PASS   0 MANUAL
I.1 Tracker script tags have type=text/plain (CMP-blocked) in DOM post-reject
✗ FAIL

2 tracker script(s) in DOM without CMP type-blocking post-reject. 0 script(s) correctly blocked.

srctype_attrvendor
https://securepubads.g.doubleclick.net/tag/js/gpt.jsGoogle Publisher Ads
https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202603300101/pubads_impl.js?cb=3109751Google Publisher Ads
I.2 Non-essential scripts blocked (type=text/plain)
✗ FAIL

See I.1 — same check.

srctype_attrvendor
https://securepubads.g.doubleclick.net/tag/js/gpt.jsGoogle Publisher Ads
https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202603300101/pubads_impl.js?cb=3109751Google Publisher Ads
I.3 No tracker JS files in executed sources post-reject
✗ FAIL

Based on DOM script inventory; full Sources tab verification requires Chrome DevTools protocol introspection (beyond current scope).

srctype_attrvendor
https://securepubads.g.doubleclick.net/tag/js/gpt.jsGoogle Publisher Ads
https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202603300101/pubads_impl.js?cb=3109751Google Publisher Ads
J. Safari-Specific Considerations 1 PASS   2 MANUAL
J.1 ITP setting
☐ MANUAL

Requires manual browser configuration check.

J.2 ITP-off re-test
☐ MANUAL

Requires manual browser configuration check.

J.3 Server-side cookie-setting identified where ITP would block client-side
✓ PASS

No obvious ITP-bypass server-side cookies detected.

K. Consent Mechanism UX Compliance 1 FAIL   2 PASS   2 MANUAL
K.1 Reject All at same prominence and level as Accept All
✗ FAIL

Reject All not directly accessible from first consent screen — requires entering Manage Preferences. EDPB guidelines require equal prominence.

accept visible at first screen: True  ·  reject visible at first screen: False  ·  reject requires extra layer: True  ·  accept button text: Accept  ·  reject button text:
Recommendation: Add a 'Reject All' button directly to the first consent layer (same screen as 'Accept All'). Do not require users to navigate to a preferences panel to decline.
K.2 Non-essential categories default to OFF
☐ MANUAL

Could not open preferences panel to check toggles.

K.3 No dark patterns in consent banner (colour, visual hierarchy)
☐ MANUAL

DOM-level button detection completed. Full visual assessment of colour contrast, typography prominence, and deceptive visual hierarchy requires screenshot review. See screenshots in report.

K.5 Persistent consent withdrawal mechanism accessible after interaction
✓ PASS

Persistent consent widget found: 'Manage'

found: True  ·  text: Manage  ·  in iframe: False
K.6 Site fully accessible after declining consent (no cookie wall)
✓ PASS

Site content accessible after declining consent.

accessible: True
L. Consent State Persistence 2 FAIL   0 PASS   0 MANUAL
L.2 Consent choice respected on second tab (same session)
✗ FAIL

Advertising cookies found in second tab — consent state may not be persisted.

consent cookie found: False  ·  ad cookies found: True  ·  tcf available: True  ·  tcf display status: None
L.3 Declined state maintained after closing and reopening (simulate new session)
✗ FAIL

Advertising cookies found on return — consent state not correctly maintained.

ad cookies on return: True  ·  total cookies: 42
Additional Findings 2 PASS   1 MANUAL
ADD.1 Persistent identifier bridging across consent states
✓ PASS

No persistent cross-phase identifiers detected in POST bodies.

ADD.2 TCF consent string analysis (all phases)
ℹ INFO

No TCF consent strings detected in query parameters.

phasepost_accept
domaincm.g.doubleclick.net
timestamp2026-04-02T14:47:35
summaryAccept-all (purposes 1–10 consented, CMP: Unknown CMP (ID 7))
is reject allFalse
is accept allTrue
cmpUnknown CMP (ID 7)
tcf policy version5
purpose consentsAll 10 core purposes CONSENTED
li claims
2791011
decode errorNone
ADD.3 Session ID bridging across consent and rejection phases
✓ PASS

No session ID bridging detected across consent states.

ADD.4 Vendor userId transmission post-reject
☐ MANUAL

No post-reject phase detected.

Test Details 0 PASS   0 MANUAL
META Site URL, test date, CMP platform
ℹ INFO

CMP identified as: Didomi

urlCrosswords and Sudokus - Online Games and Puzzles - Irish Independent
test date2026-04-02
test time utc2026-04-02T14:47:45
cmp detectedDidomi
total requests249
phases detected
pre_consent
phase strategy{'accept': 'not_detected', 'reject': 'not_detected'}
run_id: c80a5239  ·  raw log  ·  ⬇ report JSON  ·  all runs  ·  ← Home
🤖 AI-Enhanced Analysis
Add regulatory citations, risk ratings, enforcement precedents, and a remediation roadmap using Claude AI. Results are cached — generation only runs once per report.
🤖 View AI Report