- Skill ID
- petrkindlmann/qa-skills/compliance-testing
- Publisher
- petrkindlmann
- Repository
- qa-skills
- Installs
- 0
- Files
- 6
- License
- MIT
- Synced
- Sep 23, 2026
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/isAnalyticsCookieclassifiers 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 withpage.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 inventedwindow.__cmp.gpcStatusglobal — it does not exist; TCF v1's__cmpis 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 exposestcfPolicyVersion, 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
deniedforad_storage/analytics_storage/ad_user_data/ad_personalization; anupdatesignal must firegrantedafter acceptance. The interception assumes the gtagarguments-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.
| Obligation | Applies | What to test |
|---|---|---|
| Prohibitions + AI literacy | 2 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 + penalties | 2 Aug 2025 (live) | Model cards, training-data summaries, copyright-policy and disclosure pages exist. |
| Article 50 transparency | 2 Aug 2026 | AI-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 grace | 2 Dec 2026 | Systems 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 2027 | Risk management, data governance, human oversight, transparency UI. Postponed from 2 Aug 2026 by the Omnibus. |
| High-risk (Annex I, product-regulated) | 2 Aug 2028 | As above, embedded in regulated products. Postponed from 2 Aug 2027. |
More from petrkindlmann
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.
