How CookieHawk tests websites

Method v1.0 · August 2026 · versioned and open

Version 1.2, last reviewed on 22 August 2026. The texts are based on section 3-15 of Norway’s Electronic Communications Act, the GDPR and guidance from the Norwegian Data Protection Authority, with internal quality assurance; they are not a legal opinion. Questions: kontakt@cookiehawk.com.

Contents
  1. What the test is
  2. Three states
  3. When “Reject all” is considered confirmed
  4. What we record
  5. Classification and priority
  6. Known limitations
  7. Data, deletion and right of reply
  8. The homepage figures

1. What the test is

The test is an automated technical spot check, not a legal conclusion. An isolated Chromium context (Playwright) with language nb-NO, time zone Europe/Oslo and a 1366 × 900 viewport visits the homepage and up to three public subpages in each state. The traffic’s IP country is determined by the scanner server (EEA). The test can therefore produce up to 12 page loads. It does not log in or fill out forms.

2. Three states

  1. Before a choice: the page loads without any clicks. All contacts and storage here occur before the visitor has made a decision.
  2. After “Reject all”: a new, empty browser. The scanner finds the banner, selects rejection in the first layer where available, and continues to subpages.
  3. After “Accept all”: a new, empty browser with acceptance. Used as a reference for what the website can send.

Each state runs in a separate browser context, so no cookies or storage carry over between states. Activity is attributed to a state based on when the request was actually sent relative to the click.

3. When “Reject all” is considered confirmed

The scanner first tries a visible rejection button in the banner’s first layer. If none exists, it opens settings and tries rejection in the second layer. The absence of a first-layer rejection button is reported as a separate observation, but does not prevent technical confirmation of rejection.

Technical confirmation is recorded when the CMP’s own API (such as Cookiebot, OneTrust, TCF, Usercentrics or Google Consent Mode) reports rejection, when a click on a known CMP button or second-layer button closes the visible banner, or, if the banner was not visible, when a consent-related cookie or storage value changes. A click based solely on text heuristics requires both a closed banner and a state change. If the CMP API reports a different status (such as “granted”), the choice is not confirmed. The strength of confirmation varies and does not by itself show that all purposes and vendors were rejected. Unconfirmed clicks are not used as a basis for observations “after confirmed rejection”.

4. What we record

5. Classification and priority

Services are classified against a versioned database of known tracking, analytics and advertising tools (with category and source). “Technical priority” is very high, high, medium, low or information, and indicates how much follow-up an observation needs. Each observation also has a confidence level: high, medium, low or inconclusive. Priority is a technical sorting mechanism and does not determine the legal assessment. Contact with a third party alone does not show that information was stored on or accessed from the device, or that personal data was processed.

Examples of assessments we make to avoid overstating findings: cookieless Consent Mode signals with denied status (gcs=G100) are classified as information, not a prioritised observation. Functional embeds (maps, video, chat) visible to visitors are assessed by what they actually set, not by category alone. When the scanner finds no banner while observing services often used for consent-based purposes, it creates a separate observation (“no banner found”). The result needs manual review because the banner may depend on geography or timing, or detection may have failed.

6. Known limitations

7. Data, deletion and right of reply

Temporary browser profiles and raw artefacts are deleted after analysis. Final reports are retained under the retention schedule (in Norwegian) and shared confidentially with the requester. Affected website owners and named suppliers can request corrections or submit a reply via kontakt@cookiehawk.com; we respond within 5 working days.

8. The homepage figures

Market figures are published only with a frozen dataset, scanner version, date, definitions and documented calculation. The homepage figures come from calibration run v7 (scanner cmp-scan 0.1.0, run on 21 August 2026 from 07:51 to 08:14 Norwegian time, dagbladet.no rescanned that day), frozen on 21 August 2026 as 60 JSON files with sha256 checksums and a per-website table (data/KALIBRERING-V7-FRYST.md). The figures are calculated programmatically from the files using these definitions:

The sample is not representative of all Norwegian websites. The dataset (with masked URLs) and calculation script are available for review on request.

Method v1.0 · scanner cmp-scan 0.1.0 · 22 August 2026 · Changes to test rules are logged here.