What we check
The deep scan loads the page in a headless Chromium with a real browser identifier and waits up to four seconds for the banner. Then it clicks "Accept all", through the known selectors of the detected CMP or through the visible button text, and records every request, cookie and consent call. Second run. Same page, this time "Reject" on the first layer. If there is no reject button there, the state without interaction counts as the reject capture, and a separate finding notes that.
This line reports only the outcome of the procedure: "ok" with the vendor name when both runs completed; otherwise a note with the reason. No banner found. Banner detected but not operable. Page did not load. Time limit reached. Browser currently unavailable. Since September 2026 it is a status row and does not count toward the score.
Why it matters
The static scan reads intent: what is in the source. The simulation reads behaviour: what the browser actually does after a click. The most common real defect in consent setups, marketing requests after "reject", is invisible in the source. The tag manager loads, the CMP asks, and whether a trigger respects the decision is visible only in the network log. Without the simulation, seven findings are missing: reject respected, consent activates measurement, consent update, the Consent Mode default observed in the browser, the basic-or-advanced mode, the tracking architecture and the page_view double count.
Common causes
- The CMP renders the banner in an iframe or shadow root the scanner cannot reach (some Sourcepoint and custom builds).
- The buttons carry neither known selectors nor unambiguous labels; custom UIs without standard labels stay inoperable.
- A bot protection (such as a Cloudflare challenge) stops the headless browser before the banner appears.
- The page loads slower than the scan's time budget and the simulation aborts in a controlled way.
- There is no reject button on the first layer. The simulation still runs; the reject run is then the state without a click.