petrkindlmann/qa-skillsMIT6 files

Compliance Testing

>-

Specification
Skill ID
petrkindlmann/qa-skills/compliance-testing
Publisher
petrkindlmann
Repository
qa-skills
Installs
0
Files
6
License
MIT
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

petrkindlmann/qa-skills/compliance-testingInstalls these files
  • SKILL.md
  • references/better-ads-tests.md
  • references/ci-automation.md
  • references/cookie-compliance.md
  • references/eu-ai-act-tests.md
  • references/gdpr-cmp-tests.md

What this skill tells the agent

<objective> Compliance is binary: a single analytics cookie that fires before consent, or a "Reject all" rendered as a tiny grey link, is a violation no matter how polished the rest of the flow looks. Manual quarterly audits miss the regression a developer shipped on a Tuesday. This skill automates the technical checks — consent state, script blocking, cookie attributes, GPC, Consent Mode v2, AI Act disclosure — so configuration drift fails CI instead of a regulator's inbox. </objective>

Discovery Questions

First, check for .agents/qa-project-context.md in the project root — it carries applicable regulations, CMP details, ad networks, and geographic scope. Skip any question already answered there. If it is missing, suggest creating one with the qa-project-context skill.

Applicable regulations

  • Which privacy and platform regulations apply? This sets the entire test matrix.
  • EU: GDPR, ePrivacy Directive (cookies), Digital Services Act (DSA, applied 17 Feb 2024), EU AI Act (prohibitions + AI literacy live since 2 Feb 2025; GPAI obligations + penalties since 2 Aug 2025; Article 50 transparency from 2 Aug 2026 — high-risk obligations postponed, see below).
  • US: CCPA/CPRA plus comprehensive state laws now active in ~20 states (Texas TDPSA, Indiana CDPA eff. 1 Jan 2026, Delaware DPDPA, Nebraska NDPA, Minnesota CDPA, Rhode Island DTPPA, …). Most require honoring Global Privacy Control (Sec-GPC: 1).
  • UK: UK GDPR/DPA, PECR (cookies), Online Safety Act 2023, Data Use and Access Act (DUAA).
  • Other: LGPD (Brazil), PIPEDA (Canada), POPIA (South Africa).
  • What is the legal basis for processing? Consent (opt-in), legitimate interest, or contractual necessity — this decides whether explicit consent must precede processing.
  • Is there a DPO or legal team? They define the legal requirements; this skill only validates the technical implementation against them.

Consent management

  • What CMP is in use? OneTrust, Cookiebot, Didomi, Usercentrics, Iubenda, Sourcepoint, or Axeptio — or custom? The CMP sets the consent storage format, API, and integration. If you serve ads in the EEA or UK, you must use a Google-certified CMP and Consent Mode v2 — uncertified CMPs block Google ad serving. As of 28 Feb 2026, new TC strings must be TCF v2.3 or Google demand treats traffic as unconsented and drops to Limited Ads.
  • What consent categories exist? Typically Strictly Necessary (always on), Analytics/Performance, Functional/Preferences, Marketing/Targeting.
  • How is consent signaled to third-party scripts? IAB TCF v2 (__tcfapi), a custom data layer, or direct CMP API?

Advertising and accessibility

  • What ad networks and formats? Google Ads, Meta, programmatic; display, video, interstitial. The Coalition for Better Ads defines which formats trigger Chrome ad-filtering.
  • Are there accessibility obligations (ADA, EAA, Section 508)? Those are real compliance, but author them in accessibility-testing — this skill only maps the legal landscape, see below.

Core Principles

1. Compliance is binary

There is no "mostly compliant." A cookie that fires before consent is a violation. A banner you cannot dismiss without accepting is a violation. Test for exact compliance, not "good enough."

2. Automate the technical checks, schedule the legal audits

Automate: cookies before consent, scripts loading without consent, banner functionality, cookie attributes, consent persistence, GPC, Consent Mode signals. A human still audits privacy-policy language and cross-border transfer documentation. Don't pretend a test settles a legal-language question.

3. Test the unhappy consent states

The compliance boundary lives in the "no interaction," "rejected," and "withdrawn" states — that is where violations hide. The "all accepted" state is the least interesting one to test.

4. Verify behavior, not the CMP

CMPs have bugs. Don't trust the CMP UI as proof. Assert the actual outcome: were cookies set, did scripts load, was the GPC opt-out registered. The CMP is an implementation detail; compliance is measured by behavior.

5. Defense in depth, config-driven

Verify at multiple layers — CMP config, network requests, cookie state, client signals. Drive tests from a typed inventory and a tracking-domain list so adding a category or threshold is a data edit, not a suite rewrite. Regulations change; the suite must be cheap to update.

GDPR / CMP Testing with Playwright

Consent-flow compliance breaks into distinct, independently failing checks. Full runnable code for each is in references/gdpr-cmp-tests.md.

  • Consent banner and dark patterns — banner appears on first visit; accept and reject have equal prominence (reject is not a tiny link); a privacy-policy link is present.
  • Cookie state before/after consent — the critical test: no non-essential cookies before consent; analytics cookies only after accepting; nothing non-essential after rejecting. Maintain isStrictlyNecessary / isAnalyticsCookie classifiers against your inventory.
  • Consent persistence and withdrawal — consent survives navigation; the user can withdraw via privacy settings, which must then clear the relevant cookies.
  • Third-party script blocking — tracking scripts (google-analytics.com, googletagmanager.com, facebook.net, analytics.tiktok.com, bat.bing.com, …) must not load before consent and should load after acceptance. This is the most critical check — monitor with page.on('request').
  • Global Privacy Control (`Sec-GPC: 1`) — a required honored signal under CCPA/CPRA and most active US state laws. With the header set, assert navigator.globalPrivacyControl === true (the real browser signal) and that marketing cookies are absent. Do not assert an invented window.__cmp.gpcStatus global — it does not exist; TCF v1's __cmp is legacy and TCF v2 uses __tcfapi.
  • TCF v2 consent state — every TCF-certified CMP exposes window.__tcfapi('getTCData', 2, cb). Read purpose/vendor consent through it directly instead of guessing at CMP-private globals; the same call exposes tcfPolicyVersion, which doubles as a TCF-v2.3 freshness guard.
  • Google Consent Mode v2 — required since March 2024 for Google ads in the EEA/UK. Default state must be denied for ad_storage / analytics_storage / ad_user_data / ad_personalization; an update signal must fire granted after acceptance. The interception assumes the gtag arguments-array shape — note the object-form fallback in the reference.

EU AI Act Compliance

The Act applies in phases, and the timeline shifted in 2026. Note: the Digital Omnibus (Nov 2025 proposal; 7 May 2026 provisional agreement) postponed the high-risk obligations — do not test against the old 2 Aug 2026 high-risk date.

ObligationAppliesWhat to test
Prohibitions + AI literacy2 Feb 2025 (live)No Article 5 prohibited practices (social scoring, real-time public biometric ID, manipulative AI). Document AI features in scope; gate prohibited libraries.
GPAI obligations + penalties2 Aug 2025 (live)Model cards, training-data summaries, copyright-policy and disclosure pages exist.
Article 50 transparency2 Aug 2026AI-generated content marked; deepfake disclosure; user told they are interacting with AI. Test the disclosure label/watermark. Still live on this date.
Machine-readable marking grace2 Dec 2026Systems already on the market before 2 Aug 2026 get until here to add the watermark/marking (Omnibus compressed six months to three).
High-risk (Annex III, use-case)2 Dec 2027Risk management, data governance, human oversight, transparency UI. Postponed from 2 Aug 2026 by the Omnibus.
High-risk (Annex I, product-regulated)2 Aug 2028As above, embedded in regulated products. Postponed from 2 Aug 2027.

Use this skill in a project

Open any RiverX project, search the Skills panel for petrkindlmann/qa-skills/compliance-testing, and install it in one click.

Use this skill