From 4d1d551ad70fef80f73650b0ee52f3c259f8c84c Mon Sep 17 00:00:00 2001 From: Maxim Tsoy Date: Sat, 6 Jan 2024 13:36:19 +0100 Subject: [PATCH] Single selector in hide rules (#334) * Improve Tealium rule * Change compile target for the test bundle to support optional chaining in evals * Add test cases for tealium * Make the hide rule accept a single selector (#316) * Make the `hide` rule accept a single selector instead of a list * Change the Hide rule in json files * Update element selector docs * Add a note about hide rule only supporting CSS selectors --- lib/cmps/evidon.ts | 2 +- lib/cmps/trustarc-top.ts | 2 +- lib/rule-executors.ts | 8 +-- lib/rules.ts | 7 +-- lib/utils.ts | 8 +-- lib/web.ts | 2 +- readme.md | 65 +++++++++++--------- rules/autoconsent/1password-com.json | 2 +- rules/autoconsent/agolde-com.json | 2 +- rules/autoconsent/altium-com.json | 2 +- rules/autoconsent/aquasana-com.json | 2 +- rules/autoconsent/athlinks-com.json | 2 +- rules/autoconsent/ausopen.json | 2 +- rules/autoconsent/baden-wuerttemberg-de.json | 2 +- rules/autoconsent/bbb.json | 2 +- rules/autoconsent/burpee-com.json | 2 +- rules/autoconsent/cc-banner.json | 2 +- rules/autoconsent/clustrmaps-com.json | 2 +- rules/autoconsent/complianz-notice.json | 2 +- rules/autoconsent/cookie-law-info.json | 2 +- rules/autoconsent/cookie-notice.json | 2 +- rules/autoconsent/cookieinformation.json | 2 +- rules/autoconsent/cookieyes.json | 2 +- rules/autoconsent/crossfit-com.json | 2 +- rules/autoconsent/dailymotion-us.json | 2 +- rules/autoconsent/delta-com.json | 2 +- rules/autoconsent/dsgvo.json | 2 +- rules/autoconsent/eu-cookie-compliance.json | 2 +- rules/autoconsent/eu-cookie-law.json | 2 +- rules/autoconsent/geeks-for-geeks.json | 2 +- rules/autoconsent/generic-cosmetic.json | 2 +- rules/autoconsent/hl-co-uk.json | 2 +- rules/autoconsent/indeed-com.json | 2 +- rules/autoconsent/itopvpn-com.json | 2 +- rules/autoconsent/jquery-cookiebar.json | 2 +- rules/autoconsent/macpaw-com.json | 2 +- rules/autoconsent/marksandspencer.json | 2 +- rules/autoconsent/midway-usa.json | 2 +- rules/autoconsent/moove.json | 2 +- rules/autoconsent/nba-com.json | 2 +- rules/autoconsent/netflix-de.json | 2 +- rules/autoconsent/notice-cookie.json | 2 +- rules/autoconsent/nrk-no.json | 2 +- rules/autoconsent/osano.json | 2 +- rules/autoconsent/pinetools-com.json | 2 +- rules/autoconsent/pmc-cmp.json | 2 +- rules/autoconsent/pornhub.json | 2 +- rules/autoconsent/pornpics.json | 2 +- rules/autoconsent/primebox.json | 2 +- rules/autoconsent/samsung-com.json | 2 +- rules/autoconsent/similarweb-com.json | 2 +- rules/autoconsent/takealot-com.json | 2 +- rules/autoconsent/tealium.json | 4 +- rules/autoconsent/testcmp-cosmetic.json | 2 +- rules/autoconsent/tidbits-com.json | 2 +- rules/autoconsent/tractor-supply.json | 2 +- rules/autoconsent/trader-joes-com.json | 2 +- rules/autoconsent/true-car.json | 2 +- rules/autoconsent/tumblr-com.json | 2 +- rules/autoconsent/twitch.json | 2 +- rules/autoconsent/uk-cookie-consent.json | 2 +- rules/autoconsent/urbanarmorgear-com.json | 2 +- rules/autoconsent/whitepages.json | 2 +- rules/autoconsent/wpcc.json | 2 +- rules/autoconsent/xhamster-us.json | 2 +- rules/autoconsent/xnxx-com.json | 2 +- rules/autoconsent/youporn.json | 2 +- 67 files changed, 109 insertions(+), 107 deletions(-) diff --git a/lib/cmps/evidon.ts b/lib/cmps/evidon.ts index a6826eeb..305ef9b8 100644 --- a/lib/cmps/evidon.ts +++ b/lib/cmps/evidon.ts @@ -30,7 +30,7 @@ export default class Evidon extends AutoConsentCMPBase { return true; } - hideElements(getStyleElement(), ["#evidon-prefdiag-overlay", "#evidon-prefdiag-background"]); + hideElements(getStyleElement(), "#evidon-prefdiag-overlay,#evidon-prefdiag-background"); click("#_evidon-option-button"); await waitForElement("#evidon-prefdiag-overlay", 5000); diff --git a/lib/cmps/trustarc-top.ts b/lib/cmps/trustarc-top.ts index 0cf07ee1..6be3c7c2 100644 --- a/lib/cmps/trustarc-top.ts +++ b/lib/cmps/trustarc-top.ts @@ -73,7 +73,7 @@ export default class TrustArcTop extends AutoConsentCMPBase { // hide elements permanently, so user doesn't see the popup hideElements( getStyleElement(), - [".truste_popframe", ".truste_overlay", ".truste_box_overlay", bannerContainer], + `.truste_popframe, .truste_overlay, .truste_box_overlay, ${bannerContainer}`, ); click(cookieSettingsButton); diff --git a/lib/rule-executors.ts b/lib/rule-executors.ts index 41b024ff..16e37591 100644 --- a/lib/rule-executors.ts +++ b/lib/rule-executors.ts @@ -78,16 +78,16 @@ export function wait(ms: number): Promise { }); } -export function hide(selectors: string[], method: HideMethod): boolean { +export function hide(selector: string, method: HideMethod): boolean { // enableLogs && console.log("[hide]", ruleStep.hide, ruleStep.method); const styleEl = getStyleElement(); - return hideElements(styleEl, selectors, method); + return hideElements(styleEl, selector, method); } -export function prehide(selectors: string[]): boolean { +export function prehide(selector: string): boolean { const styleEl = getStyleElement('autoconsent-prehide'); enableLogs && console.log("[prehide]", styleEl, location.href); - return hideElements(styleEl, selectors, "opacity"); + return hideElements(styleEl, selector, "opacity"); } export function undoPrehide(): boolean { diff --git a/lib/rules.ts b/lib/rules.ts index 1bfd7f1a..184b6089 100644 --- a/lib/rules.ts +++ b/lib/rules.ts @@ -32,7 +32,6 @@ export type AutoConsentRuleStep = { optional?: boolean } & Partial & Partial & Partial & - Partial & Partial & Partial & Partial @@ -78,14 +77,10 @@ export type WaitRule = { wait: number; }; -export type UrlRule = { - url: string; -}; - export type HideMethod = 'display' | 'opacity'; export type HideRule = { - hide: string[]; + hide: string; method?: HideMethod; }; diff --git a/lib/utils.ts b/lib/utils.ts index f220e9a7..2e66cfac 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -21,17 +21,15 @@ export function getStyleElement(styleOverrideElementId = "autoconsent-css-rules" // hide elements with a CSS rule export function hideElements( styleEl: HTMLStyleElement, - selectors: string[], + selector: string, method: HideMethod = 'display', ): boolean { const hidingSnippet = method === "opacity" ? `opacity: 0` : `display: none`; // use display by default - const rule = `${selectors.join( - "," - )} { ${hidingSnippet} !important; z-index: -1 !important; pointer-events: none !important; } `; + const rule = `${selector} { ${hidingSnippet} !important; z-index: -1 !important; pointer-events: none !important; } `; if (styleEl instanceof HTMLStyleElement) { styleEl.innerText += rule; - return selectors.length > 0; + return selector.length > 0; } return false; } diff --git a/lib/web.ts b/lib/web.ts index 17e890c7..c09c0646 100644 --- a/lib/web.ts +++ b/lib/web.ts @@ -376,7 +376,7 @@ export default class AutoConsent { this.undoPrehide(); } }, this.config.prehideTimeout || 2000); - return prehide(selectors); + return prehide(selectors.join(',')); } undoPrehide(): boolean { diff --git a/readme.md b/readme.md index 32cef713..ba3e5739 100644 --- a/readme.md +++ b/readme.md @@ -37,7 +37,7 @@ that are installed on multiple sites. Each CMP ruleset defines: There are currently three ways of implementing a CMP: - 1. As a [JSON ruleset](./rules/autoconsent/), intepreted by the `AutoConsent` class. + 1. As a [JSON ruleset](./rules/autoconsent/), intepreted by the `AutoConsent` class. 1. As a class implementing the `AutoCMP` interface. This enables more complex logic than the linear AutoConsent rulesets allow. 3. As a [Consent-O-Matic](https://github.com/cavi-au/Consent-O-Matic) rule. The `ConsentOMaticCMP` class implements @@ -79,36 +79,45 @@ Both JSON and class implementations have the following components: ### Element selectors -Most rules use "selectors" to locate elements in a page. In most cases, a selector can be a string, or array of strings, which are used to locale elements as follows: +Many rules use `ElementSelector` to locate elements in a page. `ElementSelector` can be a string, or array of strings, which are used to locate elements as follows: - By default, strings are treated as [CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Locating_DOM_elements_using_selectors) via the `querySelector` API. e.g. `#reject-cookies` to find an element whose `id` is 'reject-cookies'. - - Selectors prefixed with `xpath/` are [Xpath](https://developer.mozilla.org/en-US/docs/Web/XPath) selectors which can locate elements in the page via [`document.evaluate`](https://developer.mozilla.org/en-US/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript#document.evaluate). e.g. `xpath///*[@id="reject-cookies"]` can find an element whose `id` is 'reject-cookies'. - - If an array of selectors is given, the selectors are applied in array order, with the search scope constrained each time but the first match of the previous selector. e.g. `['#reject-cookies', 'button']` first looks for an element with `id` 'reject-cookies', then looks for a match for `button` _that is a decendant_ of that element. - - If an array of selectors is given, and a selector returns an element that has a `shadowRoot` attribute, the next selector will run within that element's shadow DOM. + - Strings prefixed with `xpath/` are [Xpath](https://developer.mozilla.org/en-US/docs/Web/XPath) selectors which can locate elements in the page via [`document.evaluate`](https://developer.mozilla.org/en-US/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript#document.evaluate). e.g. `xpath///*[@id="reject-cookies"]` can find an element whose `id` is 'reject-cookies'. + - If an array of strings is given, the selectors are applied in array order, with the search scope constrained each time but the first match of the previous selector. e.g. `['#reject-cookies', 'button']` first looks for an element with `id="reject-cookies"`, then looks for a match for `button` _that is a descendant_ of that element. + **If one of the selectors returns an element that has a `shadowRoot` property, the next selector will run within that element's shadow DOM.** This is the main difference from nested CSS selectors, which do not cross shadow DOM boundaries. + + For example, consider the following DOM fragment: + ```html + + + + ``` + +Then `['open-shadow-root-element', 'button']` will find the button, but a usual CSS selector `'open-shadow-root-element button'` will not. ### Element exists -```json +```javascript { - "exists": "selector" + "exists": ElementSelector } ``` Returns true if the given selector matches one or more elements. ### Element visible -```json +```javascript { - "visible": "selector", + "visible": ElementSelector, "check": "any" | "all" | "none" } ``` -Returns true if elements returned matched by "selector" are currently visible on the page. If `check` is `all`, every element must be visible. If `check` is `none`, no element should be visible. Visibility check is a CSS-based heuristic. +Returns true if elements matched by ElementSelector are currently visible on the page. If `check` is `all`, every element must be visible. If `check` is `none`, no element should be visible. Visibility check is a CSS-based heuristic. ### Wait for element -```json +```javascript { - "waitFor": "selector", + "waitFor": ElementSelector, "timeout": 1000 } ``` @@ -116,9 +125,9 @@ Waits until `selector` exists in the page. After `timeout` ms the step fails. ### Wait for visibility -```json +```javascript { - "waitForVisible": "selector", + "waitForVisible": ElementSelector, "timeout": 1000, "check": "any" | "all" | "none" } @@ -126,18 +135,18 @@ Waits until `selector` exists in the page. After `timeout` ms the step fails. Waits until element is visible in the page. After `timeout` ms the step fails. ### Click an element -```json +```javascript { - "click": "selector", + "click": ElementSelector, "all": true | false, } ``` Click on an element returned by `selector`. If `all` is `true`, all matching elements are clicked. If `all` is `false`, only the first returned value is clicked. ### Wait for then click -```json +```javascript { - "waitForThenClick": "selector", + "waitForThenClick": ElementSelector, "timeout": 1000, "all": true | false } @@ -145,7 +154,7 @@ Click on an element returned by `selector`. If `all` is `true`, all matching ele Combines `waitFor` and `click`. ### Unconditional wait -```json +```javascript { "wait": 1000, } @@ -153,17 +162,17 @@ Combines `waitFor` and `click`. Wait for the specified number of milliseconds. ### Hide -```json +```javascript { - "hide": ["selector", ...], + "hide": "CSS selector", "method": "display" | "opacity" } ``` -Hide the elements matched by the selectors. `method` defines how elements are hidden: "display" sets `display: none`, "opacity" sets `opacity: 0`. Method is "display" by default. +Hide the elements matched by the selectors. `method` defines how elements are hidden: "display" sets `display: none`, "opacity" sets `opacity: 0`. Method is "display" by default. Note that only a single string CSS selector is supported here, not an array. ### Eval -```json +```javascript { "eval": "SNIPPET_ID" } @@ -173,9 +182,9 @@ Eval rules are not 100% reliable because they can be affected by the page script ### Conditionals -```json +```javascript { - "if": { "exists": "selector" }, + "if": { "exists": ElementSelector }, "then": [ { "click": ".button1" }, { "click": ".button3" } @@ -191,7 +200,7 @@ The "if" rule is considered successful as long as all rules inside the chosen br ### Any -```json +```javascript { "any": [ { "exists": ".button1" }, @@ -200,11 +209,11 @@ The "if" rule is considered successful as long as all rules inside the chosen br } ``` -Evaluates a list of steps in order. If any return true (success), then the step exists and returns true. If all steps return false, the `any` step returns false. +Evaluates a list of steps in order. If any return true (success), then the step returns true. If all steps return false, the `any` step returns false. ### Optional actions -Any rule can include the `"optional": true` to ignore failure. +All rules can include the `"optional": true` to ignore failure. ## API diff --git a/rules/autoconsent/1password-com.json b/rules/autoconsent/1password-com.json index 07b4adfa..f3135b3e 100644 --- a/rules/autoconsent/1password-com.json +++ b/rules/autoconsent/1password-com.json @@ -6,6 +6,6 @@ "detectPopup": [{ "visible": "footer #footer-root [aria-label=\"Cookie Consent\"]" }], "optIn": [{"click": "footer #footer-root [aria-label=\"Cookie Consent\"] button" }], - "optOut": [{ "hide": ["footer #footer-root [aria-label=\"Cookie Consent\"]"] }] + "optOut": [{ "hide": "footer #footer-root [aria-label=\"Cookie Consent\"]" }] } \ No newline at end of file diff --git a/rules/autoconsent/agolde-com.json b/rules/autoconsent/agolde-com.json index c5895b76..e8cd2470 100644 --- a/rules/autoconsent/agolde-com.json +++ b/rules/autoconsent/agolde-com.json @@ -8,6 +8,6 @@ { "click": "button[aria-label=\"Close modal\"]" } ], "optOut": [ - { "hide": ["#modal-1 div[data-micromodal-close]"] } + { "hide": "#modal-1 div[data-micromodal-close]" } ] } diff --git a/rules/autoconsent/altium-com.json b/rules/autoconsent/altium-com.json index a178b8da..369aa0fb 100644 --- a/rules/autoconsent/altium-com.json +++ b/rules/autoconsent/altium-com.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": ".altium-privacy-bar" }], "detectPopup": [{ "exists": ".altium-privacy-bar" }], "optIn": [{ "click": "a.altium-privacy-bar__btn" }], - "optOut": [{ "hide": [".altium-privacy-bar"] }] + "optOut": [{ "hide": ".altium-privacy-bar" }] } \ No newline at end of file diff --git a/rules/autoconsent/aquasana-com.json b/rules/autoconsent/aquasana-com.json index b9d5497b..5d0dc29b 100644 --- a/rules/autoconsent/aquasana-com.json +++ b/rules/autoconsent/aquasana-com.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "#consent-tracking" }], "detectPopup": [{ "exists": "#consent-tracking" }], "optIn": [{ "click": "#accept_consent" }], - "optOut": [{ "hide": ["#consent-tracking"] }] + "optOut": [{ "hide": "#consent-tracking" }] } diff --git a/rules/autoconsent/athlinks-com.json b/rules/autoconsent/athlinks-com.json index 526b7073..69d87c00 100644 --- a/rules/autoconsent/athlinks-com.json +++ b/rules/autoconsent/athlinks-com.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": "#footer-container ~ div" }], "detectPopup": [{ "visible": "#footer-container > div" }], "optIn": [{"click": "#footer-container ~ div button" }], - "optOut": [{ "hide": ["#footer-container ~ div"] }] + "optOut": [{ "hide": "#footer-container ~ div" }] } diff --git a/rules/autoconsent/ausopen.json b/rules/autoconsent/ausopen.json index c06277af..f82feace 100644 --- a/rules/autoconsent/ausopen.json +++ b/rules/autoconsent/ausopen.json @@ -3,6 +3,6 @@ "cosmetic": true, "detectCmp": [{ "exists": ".gdpr-popup__message" }], "detectPopup": [{ "visible": ".gdpr-popup__message" }], - "optOut": [{ "hide": [".gdpr-popup__message"]}], + "optOut": [{ "hide": ".gdpr-popup__message"}], "optIn": [{ "click": ".gdpr-popup__message button"}] } diff --git a/rules/autoconsent/baden-wuerttemberg-de.json b/rules/autoconsent/baden-wuerttemberg-de.json index 79c0cc3b..6344b035 100644 --- a/rules/autoconsent/baden-wuerttemberg-de.json +++ b/rules/autoconsent/baden-wuerttemberg-de.json @@ -9,6 +9,6 @@ { "click": ".cookie-alert__button button" } ], "optOut": [ - { "hide": [".cookie-alert.t-dark"] } + { "hide": ".cookie-alert.t-dark" } ] } diff --git a/rules/autoconsent/bbb.json b/rules/autoconsent/bbb.json index 989bee19..352c831e 100644 --- a/rules/autoconsent/bbb.json +++ b/rules/autoconsent/bbb.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": "div[aria-label=\"use of cookies on bbb.org\"]" }], "detectPopup": [{ "visible": "div[aria-label=\"use of cookies on bbb.org\"]" }], "optIn": [{ "click": "div[aria-label=\"use of cookies on bbb.org\"] button.bds-button-unstyled span.visually-hidden" }], - "optOut": [{ "hide": ["div[aria-label=\"use of cookies on bbb.org\"]"] }] + "optOut": [{ "hide": "div[aria-label=\"use of cookies on bbb.org\"]" }] } diff --git a/rules/autoconsent/burpee-com.json b/rules/autoconsent/burpee-com.json index ff792e83..f525c7f7 100644 --- a/rules/autoconsent/burpee-com.json +++ b/rules/autoconsent/burpee-com.json @@ -8,6 +8,6 @@ { "click": "#btn-cookie-allow" } ], "optOut": [ - { "hide": ["#html-body #notice-cookie-block", "#notice-cookie"] } + { "hide": "#html-body #notice-cookie-block, #notice-cookie" } ] } diff --git a/rules/autoconsent/cc-banner.json b/rules/autoconsent/cc-banner.json index 16c8869a..829ac252 100644 --- a/rules/autoconsent/cc-banner.json +++ b/rules/autoconsent/cc-banner.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": ".cc_banner-wrapper" }], "detectPopup": [{ "visible": ".cc_banner" }], "optIn": [{ "click": ".cc_btn_accept_all" }], - "optOut": [{ "hide": [".cc_banner-wrapper"] }] + "optOut": [{ "hide": ".cc_banner-wrapper" }] } diff --git a/rules/autoconsent/clustrmaps-com.json b/rules/autoconsent/clustrmaps-com.json index 19df519d..c4a34c03 100644 --- a/rules/autoconsent/clustrmaps-com.json +++ b/rules/autoconsent/clustrmaps-com.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": "#gdpr-cookie-message" }], "detectPopup": [{ "visible": "#gdpr-cookie-message" }], "optIn": [{ "click": "button#gdpr-cookie-accept" }], - "optOut": [{ "hide": ["#gdpr-cookie-message"] }] + "optOut": [{ "hide": "#gdpr-cookie-message" }] } diff --git a/rules/autoconsent/complianz-notice.json b/rules/autoconsent/complianz-notice.json index 71f0ca19..acfc0d23 100644 --- a/rules/autoconsent/complianz-notice.json +++ b/rules/autoconsent/complianz-notice.json @@ -10,6 +10,6 @@ { "click": ".cc-dismiss", "optional": true } ], "optOut": [ - { "hide": ["[aria-describedby=\"cookieconsent:desc\"]"] } + { "hide": "[aria-describedby=\"cookieconsent:desc\"]" } ] } \ No newline at end of file diff --git a/rules/autoconsent/cookie-law-info.json b/rules/autoconsent/cookie-law-info.json index 4ea78cec..9084ad78 100644 --- a/rules/autoconsent/cookie-law-info.json +++ b/rules/autoconsent/cookie-law-info.json @@ -5,7 +5,7 @@ "detectPopup": [{ "visible": "#cookie-law-info-bar" }], "optIn": [{ "click": "[data-cli_action=\"accept_all\"]" }], "optOut": [ - { "hide": ["#cookie-law-info-bar"] }, + { "hide": "#cookie-law-info-bar" }, { "eval": "EVAL_COOKIE_LAW_INFO_0" } diff --git a/rules/autoconsent/cookie-notice.json b/rules/autoconsent/cookie-notice.json index c1e06b82..8b537da4 100644 --- a/rules/autoconsent/cookie-notice.json +++ b/rules/autoconsent/cookie-notice.json @@ -7,5 +7,5 @@ ], "detectPopup": [{ "visible": "#cookie-notice" }], "optIn": [{ "click": "#cn-accept-cookie" }], - "optOut": [{ "hide": ["#cookie-notice"] }] + "optOut": [{ "hide": "#cookie-notice" }] } diff --git a/rules/autoconsent/cookieinformation.json b/rules/autoconsent/cookieinformation.json index 9d782bfa..fdcb0447 100644 --- a/rules/autoconsent/cookieinformation.json +++ b/rules/autoconsent/cookieinformation.json @@ -5,7 +5,7 @@ "detectPopup": [{ "visible": "#cookie-information-template-wrapper" }], "optIn": [ { "eval": "EVAL_COOKIEINFORMATION_1"} ], "optOut": [ - { "hide": ["#cookie-information-template-wrapper"], "comment": "some templates don't hide the banner automatically" }, + { "hide": "#cookie-information-template-wrapper", "comment": "some templates don't hide the banner automatically" }, { "eval": "EVAL_COOKIEINFORMATION_0"} ], "test": [ diff --git a/rules/autoconsent/cookieyes.json b/rules/autoconsent/cookieyes.json index 9ded6109..84dd3895 100644 --- a/rules/autoconsent/cookieyes.json +++ b/rules/autoconsent/cookieyes.json @@ -22,7 +22,7 @@ { "waitForThenClick": ".cky-modal [data-cky-tag=detail-save-button]" } ], "else": [ - { "hide": [".cky-consent-container,.cky-overlay"] } + { "hide": ".cky-consent-container,.cky-overlay" } ] } ] diff --git a/rules/autoconsent/crossfit-com.json b/rules/autoconsent/crossfit-com.json index bfb4b837..a69aec99 100644 --- a/rules/autoconsent/crossfit-com.json +++ b/rules/autoconsent/crossfit-com.json @@ -5,6 +5,6 @@ "detectCmp": [{ "exists": "body #modal > div > div[class^=\"_wrapper_\"]" }], "detectPopup": [{ "visible": "body #modal > div > div[class^=\"_wrapper_\"]" }], "optIn": [{"click": "button[aria-label=\"accept cookie policy\"]" }], - "optOut": [{ "hide": ["body #modal > div > div[class^=\"_wrapper_\"]"] }] + "optOut": [{ "hide": "body #modal > div > div[class^=\"_wrapper_\"]" }] } \ No newline at end of file diff --git a/rules/autoconsent/dailymotion-us.json b/rules/autoconsent/dailymotion-us.json index c561985d..06501faf 100644 --- a/rules/autoconsent/dailymotion-us.json +++ b/rules/autoconsent/dailymotion-us.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "div[class*=\"CookiePopup__desktopContainer\"]" }], "detectPopup": [{ "visible": "div[class*=\"CookiePopup__desktopContainer\"]" }], "optIn": [{ "click": "div[class*=\"CookiePopup__desktopContainer\"] > button > span" }], - "optOut": [{ "hide": ["div[class*=\"CookiePopup__desktopContainer\"]"] }] + "optOut": [{ "hide": "div[class*=\"CookiePopup__desktopContainer\"]" }] } diff --git a/rules/autoconsent/delta-com.json b/rules/autoconsent/delta-com.json index f400a6ef..9e088bbd 100644 --- a/rules/autoconsent/delta-com.json +++ b/rules/autoconsent/delta-com.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": "div.cookie-footer-container" }], "detectPopup": [{ "visible": "div.cookie-footer-container" }], "optIn": [{ "click": " button.cookie-close-icon" }], - "optOut": [{ "hide": ["div.cookie-footer-container"] }] + "optOut": [{ "hide": "div.cookie-footer-container" }] } diff --git a/rules/autoconsent/dsgvo.json b/rules/autoconsent/dsgvo.json index 06e31097..da892445 100644 --- a/rules/autoconsent/dsgvo.json +++ b/rules/autoconsent/dsgvo.json @@ -9,7 +9,7 @@ { "click": ".sp-dsgvo-privacy-btn-accept-all", "all": true } ], "optOut": [ - { "hide": [".sp-dsgvo.sp-dsgvo-popup-overlay"] } + { "hide": ".sp-dsgvo.sp-dsgvo-popup-overlay" } ], "test": [ { "eval": "EVAL_DSGVO_0" } diff --git a/rules/autoconsent/eu-cookie-compliance.json b/rules/autoconsent/eu-cookie-compliance.json index 19624031..9a41a33e 100644 --- a/rules/autoconsent/eu-cookie-compliance.json +++ b/rules/autoconsent/eu-cookie-compliance.json @@ -5,7 +5,7 @@ "optIn": [{ "click": ".agree-button" }], "optOut": [ { "click": ".decline-button,.eu-cookie-compliance-save-preferences-button", "optional": true }, - { "hide": [".eu-cookie-compliance-banner-info", "#sliding-popup"] } + { "hide": ".eu-cookie-compliance-banner-info, #sliding-popup" } ], "test": [ { "eval": "EVAL_EU_COOKIE_COMPLIANCE_0" } diff --git a/rules/autoconsent/eu-cookie-law.json b/rules/autoconsent/eu-cookie-law.json index c7480340..1fc88388 100644 --- a/rules/autoconsent/eu-cookie-law.json +++ b/rules/autoconsent/eu-cookie-law.json @@ -13,7 +13,7 @@ } ], "optOut": [ - { "hide": [".pea_cook_wrapper"] } + { "hide": ".pea_cook_wrapper" } ], "test": [ { "eval": "EVAL_EU_COOKIE_LAW_0" } diff --git a/rules/autoconsent/geeks-for-geeks.json b/rules/autoconsent/geeks-for-geeks.json index dcae82d2..5924d0d5 100644 --- a/rules/autoconsent/geeks-for-geeks.json +++ b/rules/autoconsent/geeks-for-geeks.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": ".cookie-consent" }], "detectPopup": [{ "visible": ".cookie-consent" }], "optIn": [{ "click": ".cookie-consent button.consent-btn" }], - "optOut": [{ "hide": [".cookie-consent"] }] + "optOut": [{ "hide": ".cookie-consent" }] } diff --git a/rules/autoconsent/generic-cosmetic.json b/rules/autoconsent/generic-cosmetic.json index b811fdcb..78036949 100644 --- a/rules/autoconsent/generic-cosmetic.json +++ b/rules/autoconsent/generic-cosmetic.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "#js-cookie-banner,.js-cookie-banner,.cookie-banner,#cookie-banner" }], "detectPopup": [{ "visible": "#js-cookie-banner,.js-cookie-banner,.cookie-banner,#cookie-banner" }], "optIn": [], - "optOut": [{ "hide": ["#js-cookie-banner,.js-cookie-banner,.cookie-banner,#cookie-banner"] }] + "optOut": [{ "hide": "#js-cookie-banner,.js-cookie-banner,.cookie-banner,#cookie-banner" }] } diff --git a/rules/autoconsent/hl-co-uk.json b/rules/autoconsent/hl-co-uk.json index 08a9f756..e00e7108 100644 --- a/rules/autoconsent/hl-co-uk.json +++ b/rules/autoconsent/hl-co-uk.json @@ -9,7 +9,7 @@ "click": "#manageCookie" }, { - "hide": [".cookieSettingsModal"] + "hide": ".cookieSettingsModal" }, { "waitFor": "#AOCookieToggle" diff --git a/rules/autoconsent/indeed-com.json b/rules/autoconsent/indeed-com.json index 738c2777..b39803f5 100644 --- a/rules/autoconsent/indeed-com.json +++ b/rules/autoconsent/indeed-com.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "#CookiePrivacyNotice" }], "detectPopup": [{ "visible": "#CookiePrivacyNotice" }], "optIn": [{ "click": "#CookiePrivacyNotice button[data-gnav-element-name=CookiePrivacyNoticeOk]" }], - "optOut": [{ "hide": ["#CookiePrivacyNotice"] }] + "optOut": [{ "hide": "#CookiePrivacyNotice" }] } diff --git a/rules/autoconsent/itopvpn-com.json b/rules/autoconsent/itopvpn-com.json index b2014c86..f89a89d2 100644 --- a/rules/autoconsent/itopvpn-com.json +++ b/rules/autoconsent/itopvpn-com.json @@ -8,6 +8,6 @@ { "click": "#_pcookie" } ], "optOut": [ - { "hide": [".pop-cookie"] } + { "hide": ".pop-cookie" } ] } diff --git a/rules/autoconsent/jquery-cookiebar.json b/rules/autoconsent/jquery-cookiebar.json index 8b66b5c3..8b1e2856 100644 --- a/rules/autoconsent/jquery-cookiebar.json +++ b/rules/autoconsent/jquery-cookiebar.json @@ -12,7 +12,7 @@ { "click": ".cookie-bar .cookie-bar__btn" } ], "optOut": [ - { "hide": [".cookie-bar"] } + { "hide": ".cookie-bar" } ], "test": [ { diff --git a/rules/autoconsent/macpaw-com.json b/rules/autoconsent/macpaw-com.json index 066fb5aa..f273fef2 100644 --- a/rules/autoconsent/macpaw-com.json +++ b/rules/autoconsent/macpaw-com.json @@ -8,6 +8,6 @@ { "click": "button[data-banner-close=\"cookies\"]" } ], "optOut": [ - { "hide": ["div[data-banner=\"cookies\"]"] } + { "hide": "div[data-banner=\"cookies\"]" } ] } diff --git a/rules/autoconsent/marksandspencer.json b/rules/autoconsent/marksandspencer.json index b384eb9d..b65510f2 100644 --- a/rules/autoconsent/marksandspencer.json +++ b/rules/autoconsent/marksandspencer.json @@ -3,6 +3,6 @@ "cosmetic": true, "detectCmp": [{ "exists": ".navigation-cookiebbanner" }], "detectPopup": [{ "visible": ".navigation-cookiebbanner" }], - "optOut": [{ "hide": [".navigation-cookiebbanner"]}], + "optOut": [{ "hide": ".navigation-cookiebbanner"}], "optIn": [{ "click": ".navigation-cookiebbanner__submit"}] } diff --git a/rules/autoconsent/midway-usa.json b/rules/autoconsent/midway-usa.json index cdedcf76..80579bea 100644 --- a/rules/autoconsent/midway-usa.json +++ b/rules/autoconsent/midway-usa.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": ["div[aria-label=\"Cookie Policy Banner\"]"] }], "detectPopup": [{ "visible": "#cookie-container" }], "optIn": [{ "click": "button#cookie-btn" }], - "optOut": [{ "hide": ["div[aria-label=\"Cookie Policy Banner\"]"] }] + "optOut": [{ "hide": "div[aria-label=\"Cookie Policy Banner\"]" }] } diff --git a/rules/autoconsent/moove.json b/rules/autoconsent/moove.json index e1ac073b..ef850f5b 100644 --- a/rules/autoconsent/moove.json +++ b/rules/autoconsent/moove.json @@ -18,7 +18,7 @@ { "click": ".moove-gdpr-modal-save-settings" } ], "else": [ - { "hide": ["#moove_gdpr_cookie_info_bar"] } + { "hide": "#moove_gdpr_cookie_info_bar" } ] } ], diff --git a/rules/autoconsent/nba-com.json b/rules/autoconsent/nba-com.json index d406b4af..03256804 100644 --- a/rules/autoconsent/nba-com.json +++ b/rules/autoconsent/nba-com.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": "#onetrust-banner-sdk" }], "detectPopup": [{ "visible": "#onetrust-banner-sdk" }], "optIn": [{ "click": "#onetrust-accept-btn-handler" }], - "optOut": [{ "hide": ["#onetrust-banner-sdk"]}] + "optOut": [{ "hide": "#onetrust-banner-sdk"}] } diff --git a/rules/autoconsent/netflix-de.json b/rules/autoconsent/netflix-de.json index 504dbd3c..4a8fc971 100644 --- a/rules/autoconsent/netflix-de.json +++ b/rules/autoconsent/netflix-de.json @@ -3,5 +3,5 @@ "detectCmp": [{ "exists": "#cookie-disclosure" }], "detectPopup": [{ "visible": ".cookie-disclosure-message", "check": "any" }], "optIn": [{ "click": ".btn-accept" }], - "optOut": [{"hide": ["#cookie-disclosure"]}, {"click": ".btn-reject"}] + "optOut": [{"hide": "#cookie-disclosure"}, {"click": ".btn-reject"}] } diff --git a/rules/autoconsent/notice-cookie.json b/rules/autoconsent/notice-cookie.json index 6a1940b7..556aca84 100644 --- a/rules/autoconsent/notice-cookie.json +++ b/rules/autoconsent/notice-cookie.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": ".notice--cookie" }], "detectPopup": [{ "visible": ".notice--cookie" }], "optIn": [{ "click": ".button--notice" }], - "optOut": [{ "hide": [".notice--cookie"] }] + "optOut": [{ "hide": ".notice--cookie" }] } diff --git a/rules/autoconsent/nrk-no.json b/rules/autoconsent/nrk-no.json index 1ff1b91a..0008f0b3 100644 --- a/rules/autoconsent/nrk-no.json +++ b/rules/autoconsent/nrk-no.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": ".nrk-masthead__info-banner--cookie" }], "detectPopup": [{ "exists": ".nrk-masthead__info-banner--cookie" }], "optIn": [{ "click": "div.nrk-masthead__info-banner--cookie button > span:has(+ svg.nrk-close)" }], - "optOut": [{ "hide": [".nrk-masthead__info-banner--cookie"] }] + "optOut": [{ "hide": ".nrk-masthead__info-banner--cookie" }] } diff --git a/rules/autoconsent/osano.json b/rules/autoconsent/osano.json index 4ed32aec..8f03f937 100644 --- a/rules/autoconsent/osano.json +++ b/rules/autoconsent/osano.json @@ -9,6 +9,6 @@ "optional": true }], "optOut": [ - { "hide": [".osano-cm-window"] } + { "hide": ".osano-cm-window" } ] } \ No newline at end of file diff --git a/rules/autoconsent/pinetools-com.json b/rules/autoconsent/pinetools-com.json index b5d695f2..cab161eb 100644 --- a/rules/autoconsent/pinetools-com.json +++ b/rules/autoconsent/pinetools-com.json @@ -8,6 +8,6 @@ { "click": "#aviso_cookies .a_boton_cerrar" } ], "optOut": [ - { "hide": ["#aviso_cookies"] } + { "hide": "#aviso_cookies" } ] } diff --git a/rules/autoconsent/pmc-cmp.json b/rules/autoconsent/pmc-cmp.json index 2670795b..af4c7d73 100644 --- a/rules/autoconsent/pmc-cmp.json +++ b/rules/autoconsent/pmc-cmp.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "#pmc-pp-tou--notice" }], "detectPopup": [{ "visible": "#pmc-pp-tou--notice" }], "optIn": [{ "click": "span.pmc-pp-tou--notice-close-btn" }], - "optOut": [{ "hide": ["#pmc-pp-tou--notice"] }] + "optOut": [{ "hide": "#pmc-pp-tou--notice" }] } diff --git a/rules/autoconsent/pornhub.json b/rules/autoconsent/pornhub.json index 4c1626a6..cc51c1af 100644 --- a/rules/autoconsent/pornhub.json +++ b/rules/autoconsent/pornhub.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": ".cookiesBanner" }], "detectPopup": [{ "visible": ".cookiesBanner" }], "optIn": [{ "click": ".cookiesBanner .okButton" }], - "optOut": [{ "hide": [".cookiesBanner"] }] + "optOut": [{ "hide": ".cookiesBanner" }] } diff --git a/rules/autoconsent/pornpics.json b/rules/autoconsent/pornpics.json index a9aeb4ca..e84d916d 100644 --- a/rules/autoconsent/pornpics.json +++ b/rules/autoconsent/pornpics.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "#cookie-contract" }], "detectPopup": [{ "visible": "#cookie-contract" }], "optIn": [{ "click": "#cookie-contract .icon-cross" }], - "optOut": [{ "hide": ["#cookie-contract"] }] + "optOut": [{ "hide": "#cookie-contract" }] } \ No newline at end of file diff --git a/rules/autoconsent/primebox.json b/rules/autoconsent/primebox.json index 0f869608..15e1097c 100644 --- a/rules/autoconsent/primebox.json +++ b/rules/autoconsent/primebox.json @@ -11,7 +11,7 @@ ], "optOut": [ { "click": "#cookie-bar .cb-disable", "optional": true }, - { "hide": ["#cookie-bar"] } + { "hide": "#cookie-bar" } ], "test": [ { "eval": "EVAL_PRIMEBOX_0" } diff --git a/rules/autoconsent/samsung-com.json b/rules/autoconsent/samsung-com.json index 6a443ebf..afa4415d 100644 --- a/rules/autoconsent/samsung-com.json +++ b/rules/autoconsent/samsung-com.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": "div.cookie-bar" }], "detectPopup": [{ "visible": "div.cookie-bar" }], "optIn": [{ "click": "div.cookie-bar__manage > a" }], - "optOut": [{ "hide": ["div.cookie-bar"] }] + "optOut": [{ "hide": "div.cookie-bar" }] } diff --git a/rules/autoconsent/similarweb-com.json b/rules/autoconsent/similarweb-com.json index 5a9db1fc..3db5ac14 100644 --- a/rules/autoconsent/similarweb-com.json +++ b/rules/autoconsent/similarweb-com.json @@ -8,6 +8,6 @@ { "click": "button.app-cookies-notification__dismiss" } ], "optOut": [ - { "hide": [".app-layout .app-cookies-notification"] } + { "hide": ".app-layout .app-cookies-notification" } ] } diff --git a/rules/autoconsent/takealot-com.json b/rules/autoconsent/takealot-com.json index 68dcbb55..ddeda9f0 100644 --- a/rules/autoconsent/takealot-com.json +++ b/rules/autoconsent/takealot-com.json @@ -8,7 +8,7 @@ { "click": "button[class*=\"cookies-banner-module_dismiss-button_\"]" } ], "optOut": [ - { "hide": ["div[class^=\"cookies-banner-module_\"]"] }, + { "hide": "div[class^=\"cookies-banner-module_\"]" }, { "if": { "exists": "div[class^=\"cookies-banner-module_small-cookie-banner_\"]" }, "then": [{ "eval": "EVAL_TAKEALOT_0"}], diff --git a/rules/autoconsent/tealium.json b/rules/autoconsent/tealium.json index caf4db1f..e8337613 100644 --- a/rules/autoconsent/tealium.json +++ b/rules/autoconsent/tealium.json @@ -11,7 +11,7 @@ "optOut": [ { "eval": "EVAL_TEALIUM_1" }, { "eval": "EVAL_TEALIUM_DONOTSELL" }, - { "hide": ["#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs"] }, + { "hide": "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs" }, { "waitForThenClick": "#cm-acceptNone,.js-accept-essential-cookies", "timeout": 1000, @@ -19,7 +19,7 @@ } ], "optIn": [ - { "hide": ["#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs"] }, + { "hide": "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs" }, { "eval": "EVAL_TEALIUM_2" } ], "test": [ diff --git a/rules/autoconsent/testcmp-cosmetic.json b/rules/autoconsent/testcmp-cosmetic.json index deec87fd..3fdecd5a 100644 --- a/rules/autoconsent/testcmp-cosmetic.json +++ b/rules/autoconsent/testcmp-cosmetic.json @@ -9,7 +9,7 @@ { "click": "#accept-all" } ], "optOut": [ - { "hide": ["#privacy-test-page-cmp-test-banner"] } + { "hide": "#privacy-test-page-cmp-test-banner" } ], "test": [ { "wait": 500 }, diff --git a/rules/autoconsent/tidbits-com.json b/rules/autoconsent/tidbits-com.json index 0bb9d792..a4bdf17a 100644 --- a/rules/autoconsent/tidbits-com.json +++ b/rules/autoconsent/tidbits-com.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "#eu_cookie_law_widget-2" }], "detectPopup": [{ "visible": "#eu_cookie_law_widget-2" }], "optIn": [{ "click": "#eu-cookie-law form > input.accept" }], - "optOut": [{ "hide": ["#eu_cookie_law_widget-2"] }] + "optOut": [{ "hide": "#eu_cookie_law_widget-2" }] } diff --git a/rules/autoconsent/tractor-supply.json b/rules/autoconsent/tractor-supply.json index ceb482ca..de2f33c7 100644 --- a/rules/autoconsent/tractor-supply.json +++ b/rules/autoconsent/tractor-supply.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": ".tsc-cookie-banner" }], "detectPopup": [{ "visible": ".tsc-cookie-banner" }], "optIn": [{ "click": "#cookie-banner-cancel" }], - "optOut": [{ "hide": [".tsc-cookie-banner"] }] + "optOut": [{ "hide": ".tsc-cookie-banner" }] } diff --git a/rules/autoconsent/trader-joes-com.json b/rules/autoconsent/trader-joes-com.json index 5a373a00..29565ae8 100644 --- a/rules/autoconsent/trader-joes-com.json +++ b/rules/autoconsent/trader-joes-com.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "div.aem-page > div[class^=\"CookiesAlert_cookiesAlert__\"]" }], "detectPopup": [{ "visible": "div.aem-page > div[class^=\"CookiesAlert_cookiesAlert__\"]" }], "optIn": [{"click": "div[class^=\"CookiesAlert_cookiesAlert__container__\"] button" }], - "optOut": [{ "hide": ["div.aem-page > div[class^=\"CookiesAlert_cookiesAlert__\"]"] }] + "optOut": [{ "hide": "div.aem-page > div[class^=\"CookiesAlert_cookiesAlert__\"]" }] } diff --git a/rules/autoconsent/true-car.json b/rules/autoconsent/true-car.json index 53461b69..63f5e4a3 100644 --- a/rules/autoconsent/true-car.json +++ b/rules/autoconsent/true-car.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": "div[aria-labelledby=\"cookie-banner-heading\"]" }], "detectPopup": [{ "visible": "div[aria-labelledby=\"cookie-banner-heading\"]" }], "optIn": [{ "click": "div[aria-labelledby=\"cookie-banner-heading\"] > button[aria-label=\"Close\"]" }], - "optOut": [{ "hide": ["div[aria-labelledby=\"cookie-banner-heading\"]"] }] + "optOut": [{ "hide": "div[aria-labelledby=\"cookie-banner-heading\"]" }] } diff --git a/rules/autoconsent/tumblr-com.json b/rules/autoconsent/tumblr-com.json index 9ffc03f1..5e5d9e9c 100644 --- a/rules/autoconsent/tumblr-com.json +++ b/rules/autoconsent/tumblr-com.json @@ -6,5 +6,5 @@ "detectPopup": [{ "visible": "#cmp-app-container" }], "optIn": [{"click": "#tumblr #cmp-app-container div.components-modal__frame > iframe > html body > div > div > div.cmp__dialog-footer > div > button.components-button.white-space-normal.is-primary" }], - "optOut": [{ "hide": ["#cmp-app-container"] }] + "optOut": [{ "hide": "#cmp-app-container" }] } diff --git a/rules/autoconsent/twitch.json b/rules/autoconsent/twitch.json index b7d8e6fd..dd068c2a 100644 --- a/rules/autoconsent/twitch.json +++ b/rules/autoconsent/twitch.json @@ -8,7 +8,7 @@ "detectPopup": [{ "visible": ".consent-banner .consent-banner__content--gdpr-v2" }], "optIn": [{ "click": "button[data-a-target=\"consent-banner-accept\"]" }], "optOut": [ - { "hide": ["div:has(> .consent-banner .consent-banner__content--gdpr-v2)"]}, + { "hide": "div:has(> .consent-banner .consent-banner__content--gdpr-v2)"}, { "click": "button[data-a-target=\"consent-banner-manage-preferences\"]" }, { "waitFor": "input[type=checkbox][data-a-target=tw-checkbox]" }, { "click": "input[type=checkbox][data-a-target=tw-checkbox][checked]:not([disabled])", "all": true, "optional": true }, diff --git a/rules/autoconsent/uk-cookie-consent.json b/rules/autoconsent/uk-cookie-consent.json index b2e24a58..9d3b42a9 100644 --- a/rules/autoconsent/uk-cookie-consent.json +++ b/rules/autoconsent/uk-cookie-consent.json @@ -8,7 +8,7 @@ { "click": "#catapultCookie" } ], "optOut": [ - { "hide": ["#catapult-cookie-bar"] } + { "hide": "#catapult-cookie-bar" } ], "test": [ { "eval": "EVAL_UK_COOKIE_CONSENT_0" } diff --git a/rules/autoconsent/urbanarmorgear-com.json b/rules/autoconsent/urbanarmorgear-com.json index 04be38bb..5378fb97 100644 --- a/rules/autoconsent/urbanarmorgear-com.json +++ b/rules/autoconsent/urbanarmorgear-com.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "div[class^=\"Layout__CookieBannerContainer-\"]" }], "detectPopup": [{ "visible": "div[class^=\"Layout__CookieBannerContainer-\"]" }], "optIn": [{"click": "button[class^=\"CookieBanner__AcceptButton\"]" }], -"optOut": [{ "hide": ["div[class^=\"Layout__CookieBannerContainer-\"]"] }] +"optOut": [{ "hide": "div[class^=\"Layout__CookieBannerContainer-\"]" }] } diff --git a/rules/autoconsent/whitepages.json b/rules/autoconsent/whitepages.json index 9a9d4082..ecb0ece5 100644 --- a/rules/autoconsent/whitepages.json +++ b/rules/autoconsent/whitepages.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": ".cookie-wrapper" }], "detectPopup": [{ "visible": ".cookie-overlay" }], "optIn": [{ "click": "button[aria-label=\"Got it\"]" }], - "optOut": [{ "hide": [".cookie-wrapper"] }] + "optOut": [{ "hide": ".cookie-wrapper" }] } \ No newline at end of file diff --git a/rules/autoconsent/wpcc.json b/rules/autoconsent/wpcc.json index e4900580..532ea948 100644 --- a/rules/autoconsent/wpcc.json +++ b/rules/autoconsent/wpcc.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": ".wpcc-container" }], "detectPopup": [{ "exists": ".wpcc-container .wpcc-message" }], "optIn": [{ "click": ".wpcc-compliance .wpcc-btn" }], - "optOut": [{ "hide": [".wpcc-container"] }] + "optOut": [{ "hide": ".wpcc-container" }] } \ No newline at end of file diff --git a/rules/autoconsent/xhamster-us.json b/rules/autoconsent/xhamster-us.json index 21b151ff..10013c5c 100644 --- a/rules/autoconsent/xhamster-us.json +++ b/rules/autoconsent/xhamster-us.json @@ -8,5 +8,5 @@ "detectCmp": [{ "exists": ".cookie-announce" }], "detectPopup": [{ "visible": ".cookie-announce .announce-text" }], "optIn": [{ "click": ".cookie-announce button.xh-button" }], - "optOut": [{ "hide": [".cookie-announce"] }] + "optOut": [{ "hide": ".cookie-announce" }] } diff --git a/rules/autoconsent/xnxx-com.json b/rules/autoconsent/xnxx-com.json index e8ff7083..0caa223b 100644 --- a/rules/autoconsent/xnxx-com.json +++ b/rules/autoconsent/xnxx-com.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": "#cookies-use-alert" }], "detectPopup": [{ "visible": "#cookies-use-alert" }], "optIn": [{ "click": "#cookies-use-alert .close" }], - "optOut": [{ "hide": ["#cookies-use-alert"] }] + "optOut": [{ "hide": "#cookies-use-alert" }] } diff --git a/rules/autoconsent/youporn.json b/rules/autoconsent/youporn.json index 47ea405e..358c07b3 100644 --- a/rules/autoconsent/youporn.json +++ b/rules/autoconsent/youporn.json @@ -5,5 +5,5 @@ "detectCmp": [{ "exists": ".euCookieModal" }], "detectPopup": [{ "exists": ".euCookieModal, #js_euCookieModal" }], "optIn": [{ "click": "button[name=\"user_acceptCookie\"]" }], - "optOut": [{ "hide": [".euCookieModal"] }] + "optOut": [{ "hide": ".euCookieModal" }] } \ No newline at end of file