Testing Untouched, Reject, and Accept Cookie States: How Real GDPR Audits Work

Three isolated test chambers inspect the same website in untouched, rejected and accepted consent states and feed their traces into one evidence folder.

When a company installs a cookie banner on its website, the verification test usually lasts ten seconds. Someone opens the homepage in an incognito window, sees the consent popup appear at the bottom of the screen, clicks “Accept” or “Reject,” watches the box disappear, and marks the task complete.

Even many commercial compliance scanners do little more than fetch the page HTML once and list the cookie names found on initial load. That single-load check misses the exact violations that trigger data protection complaints and ad-platform disruptions.

To know what a website actually does with visitor data, you have to test three separate browser states in sequence: what happens during the first eight seconds when the visitor has not clicked anything (Untouched), what happens after the visitor clicks Reject All, and what happens after the visitor clicks Accept All. Testing all three states in an isolated headless browser exposes trackers that fire before consent, reject buttons that only hide the UI while scripts keep running, and broken tag configurations that block conversions even after a user agrees.

Executive Summary


A single page load only captures a static snapshot of initial network traffic, leaving you blind to delayed script timers, broken reject handlers, and state persistence across page navigation.

In our foundational guide on how a technical GDPR website audit works, we explained why reading a written privacy policy never tells you what third-party scripts execute in the user’s browser. When auditing the consent mechanism itself, timing and interaction state determine whether the site is compliant:

  1. Delayed Pre-Consent Triggers (setTimeout and Scroll Listeners): Some tag managers delay firing Meta Pixel, LinkedIn Insight Tag, or Hotjar by three seconds or until the user scrolls 200 pixels, assuming the user will click “Accept” immediately. A scanner that closes the page after one second reports zero trackers, whereas a real visitor who reads the headline before touching the banner gets tracked without consent.
  2. UI Dismissal Without Consent Revocation: Clicking “Reject All” must do more than set display: none on the banner modal. It must keep Google Consent Mode v2 flags set to denied and prevent non-essential tags from firing on subsequent page views.
  3. Storage Outside Standard HTTP Cookies: Modern tracking scripts frequently store visitor UUIDs and session fingerprints inside window.localStorage, sessionStorage, or IndexedDB when cookies are blocked. Inspecting document.cookie alone misses these identifiers completely.
THREE-STATE BROWSER AUDIT: UNTOUCHED VS REJECT ALL VS ACCEPT ALL
Runtime Verification
01
State 1: Untouched (0s to 8s)
Fresh browser profile, scroll 300px, click nothing on the banner
Zero Ad Requests Allowed
02
State 2: Reject All + Navigate
Click Reject/Necessary Only, reload page, and navigate to a second URL
Verify Silence Persists
03
State 3: Accept All + Verify Tags
Fresh profile, click Accept All, inspect consented analytics & disclosed vendors
Match Privacy Policy

Inside the Three-State Playwright Inspection Protocol

An automated Playwright audit launches clean browser contexts to record every outbound HTTP request, cookie write, and storage key across all three user interaction states.

Instead of relying on manual DevTools checks that nobody repeats after a marketing update, we run a scripted browser inspection protocol that tests each state deterministically:

The script opens the target URL in a brand-new Chromium context with an EU IP address, waits eight full seconds, and scrolls halfway down the page without clicking the cookie banner.

State 2: The Reject State (Refusal & Navigation Persistence)

Next, the script locates the refusal action on the banner (“Reject All”, “Decline”, “Only Necessary”, or “Alle ablehnen”), clicks it, waits five seconds, and then clicks an internal link to a second page on the same site.

State 3: The Accept State (Disclosure Parity & Conversion Health)

Finally, the script starts a fresh browser session, clicks “Accept All”, and records every third-party domain, cookie expiration, and storage key that activates.


Comparing network logs across the three states immediately pinpoints whether a violation comes from hardcoded HTML scripts, misconfigured GTM triggers, or dark-pattern banner design.

Failure PatternState 1 (Untouched)State 2 (Reject All)State 3 (Accept All)Root Cause in Code
1. Compliant Implementation0 tracking requests; 0 non-essential cookies0 tracking requests; 1 refusal preference cookieDisclosed analytics & ad tags fire cleanlyScripts wrapped in consent callbacks; GTM triggers gated by consent state.
2. Pre-Consent Firing (Most Common)GA4, Meta Pixel, or YouTube fire immediatelyTrackers already loaded in memory keep runningTrackers continue runningTracking snippets pasted directly in <head> outside the CMP or GTM consent wrapper.
3. Cosmetic Reject Button0 tracking requests on initial loadAnalytics or session recording fires after clicking RejectAll tags fireGTM trigger fires on banner button click event without filtering consent_status === 'granted'.
4. Second-Page Amnesia0 tracking requests on homepage0 on homepage, but trackers fire on page 2 after navigationAll tags fireRefusal cookie scoped to wrong path/domain or overwritten by a secondary script on navigation.
5. Over-Blocked Broken Analytics0 tracking requests0 tracking requests0 analytics requests (marketing blind spot)Developer deleted or broke the consent update callback when trying to fix a previous GDPR warning.

Visual Banner Checks vs Single-Load Scanners vs Three-State Runtime Audit

Checking whether a cookie banner exists on screen tells you nothing about compliance; only comparing browser network behavior across all three consent states proves your setup works.

AUDIT DEPTH: SINGLE-LOAD SCANNER VS 3-STATE RUNTIME VERIFICATION
Verification Method

Basic Cookie Scanner

Single Snapshot

Loads the URL once without interacting with the banner or testing navigation persistence.

  • Cannot test whether Reject All actually works
  • Misses scroll-triggered and delayed scripts
  • Ignores localStorage and sessionStorage identifiers

3-State Playwright Audit

Full Interaction

Executes Untouched, Reject, and Accept flows in isolated browsers with full network & storage diffs.

  • Proves zero pre-consent and post-reject tracking
  • Verifies multi-page refusal persistence
  • Confirms accepted analytics fire without data loss

Frequently Asked Questions (FAQ)

If we use a certified CMP like Cookiebot, Usercentrics, or OneTrust, can our Reject state still fail?

Yes. A Consent Management Platform (CMP) only displays the banner and broadcasts the user’s choice. If a developer or marketing agency previously pasted a LinkedIn pixel, Hotjar script, Calendly embed, or Google Font link directly into the website’s <head> or CMS template without binding it to the CMP’s blocking attributes, that script will fire in both the Untouched and Reject states regardless of which CMP you pay for.

In basic Google Consent Mode, zero requests should be sent to Google servers until the user grants consent. In advanced Google Consent Mode, cookieless pings (gcs=G100) may be transmitted without writing cookies, provided your legal basis and privacy notice explicitly cover cookieless modeling. In most strict European interpretations (including Germany and Poland), blocking all outbound analytics network pings until explicit opt-in remains the safest technical configuration.

Run an automated three-state check whenever marketing publishes new Google Tag Manager changes, embeds a third-party video or booking widget, or updates the site template. Even a single newly embedded YouTube player or HubSpot form on a landing page can introduce pre-consent tracking cookies on an otherwise clean website.


Test What Your Website Actually Does in All Three States

Do not guess whether your cookie banner actually blocks trackers before consent or after a visitor clicks “Reject.” Send us your website URL. We will run a three-state browser audit across your live pages and hand you a clear engineering report showing every network request, cookie, and storage item in the Untouched, Reject, and Accept states.

Explore our technical web engineering and compliance services or request a technical website audit today.