@duckduckgo/autoconsent 16.20.1 → 16.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.github/workflows/asana-sync.yml +2 -1
  2. package/CHANGELOG.md +46 -0
  3. package/data/coverage.json +1362 -1255
  4. package/dist/addon-firefox/background.bundle.js +17 -2
  5. package/dist/addon-firefox/compact-rules.json +1 -1
  6. package/dist/addon-firefox/content.bundle.js +17 -2
  7. package/dist/addon-firefox/manifest.json +1 -1
  8. package/dist/addon-firefox/rule-index.json +1 -1
  9. package/dist/addon-firefox/rules.json +1 -1
  10. package/dist/addon-mv3/background.bundle.js +17 -2
  11. package/dist/addon-mv3/compact-rules.json +1 -1
  12. package/dist/addon-mv3/content.bundle.js +17 -2
  13. package/dist/addon-mv3/manifest.json +1 -1
  14. package/dist/addon-mv3/rule-index.json +1 -1
  15. package/dist/addon-mv3/rules.json +1 -1
  16. package/dist/autoconsent.cjs.js +17 -2
  17. package/dist/autoconsent.esm.js +17 -2
  18. package/dist/autoconsent.playwright.js +17 -2
  19. package/dist/autoconsent.standalone.js +18 -3
  20. package/dist/types/eval-snippets.d.ts +5 -1
  21. package/lib/eval-snippets.ts +17 -2
  22. package/package.json +1 -1
  23. package/rules/autoconsent/appconsent-legacy.json +31 -0
  24. package/rules/autoconsent/appconsent.json +31 -0
  25. package/rules/autoconsent/aylo-cookie-banner.json +59 -4
  26. package/rules/autoconsent/consentmanager-ncmp.json +34 -0
  27. package/rules/autoconsent/cookie-banner-element.json +8 -0
  28. package/rules/autoconsent/ctv-disneyonice.json +12 -0
  29. package/rules/autoconsent/fever.json +42 -0
  30. package/rules/autoconsent/ibanez.json +13 -0
  31. package/rules/autoconsent/krown-cookie-banner.json +34 -0
  32. package/rules/autoconsent/pornpics-de.json +13 -0
  33. package/rules/autoconsent/simplehuman-com.json +33 -0
  34. package/rules/autoconsent/toho-one.json +50 -0
  35. package/rules/autoconsent/tohotheater-jp.json +20 -0
  36. package/rules/compact-rules.json +1 -1
  37. package/rules/rule-index.json +1 -1
  38. package/rules/rules.json +1 -1
  39. package/tests/appconsent-legacy.spec.ts +7 -0
  40. package/tests/appconsent.spec.ts +7 -0
  41. package/tests/consentmanager-ncmp.spec.ts +5 -0
  42. package/tests/cookie-banner-element.spec.ts +7 -0
  43. package/tests/ctv-disneyonice.spec.ts +5 -0
  44. package/tests/fever.spec.ts +3 -0
  45. package/tests/ibanez.spec.ts +3 -0
  46. package/tests/krown-cookie-banner.spec.ts +3 -0
  47. package/tests/pornpics-de.spec.ts +3 -0
  48. package/tests/simplehuman-com.spec.ts +3 -0
  49. package/tests/toho-one.spec.ts +3 -0
  50. package/tests/tohotheater-jp.spec.ts +3 -0
@@ -2,11 +2,13 @@ export declare const snippets: {
2
2
  EVAL_0: () => void;
3
3
  EVAL_DIDOMI_OPT_OUT: () => boolean;
4
4
  EVAL_DIDOMI_TEST: () => boolean;
5
- EVAL_CONSENTMANAGER_1: () => any;
5
+ EVAL_CONSENTMANAGER_1: () => boolean;
6
6
  EVAL_CONSENTMANAGER_2: () => boolean;
7
7
  EVAL_CONSENTMANAGER_3: () => any;
8
8
  EVAL_CONSENTMANAGER_4: () => any;
9
9
  EVAL_CONSENTMANAGER_5: () => any;
10
+ EVAL_CONSENTMANAGER_NCMP_REJECT: () => boolean;
11
+ EVAL_CONSENTMANAGER_NCMP_ACCEPT: () => boolean;
10
12
  EVAL_COOKIEBOT_1: () => boolean;
11
13
  EVAL_COOKIEBOT_2: () => boolean;
12
14
  EVAL_COOKIEBOT_3: () => any;
@@ -21,6 +23,7 @@ export declare const snippets: {
21
23
  EVAL_TRUSTARC_FRAME_GTM: () => any;
22
24
  EVAL_ADOPT_TEST: () => boolean;
23
25
  EVAL_ADULTFRIENDFINDER_TEST: () => boolean;
26
+ EVAL_AYLO_COOKIE_MANAGER_READY: () => boolean;
24
27
  EVAL_BAHN_TEST: () => boolean;
25
28
  EVAL_BIGCOMMERCE_CONSENT_MANAGER_DETECT: () => boolean;
26
29
  EVAL_BORLABS_0: () => boolean;
@@ -44,6 +47,7 @@ export declare const snippets: {
44
47
  EVAL_GDPR_LEGAL_COOKIE_TEST: () => boolean;
45
48
  EVAL_IUBENDA_0: () => boolean;
46
49
  EVAL_IUBENDA_1: () => boolean;
50
+ EVAL_KROWN_COOKIE_BANNER_TEST: () => boolean;
47
51
  EVAL_MICROSOFT_0: () => any;
48
52
  EVAL_MICROSOFT_1: () => any;
49
53
  EVAL_MICROSOFT_2: () => boolean;
@@ -22,11 +22,24 @@ export const snippets = {
22
22
  const disabled = window.Didomi?.getUserConsentStatusForAll?.()?.purposes?.disabled;
23
23
  return Array.isArray(disabled) && disabled.length > 0;
24
24
  },
25
- EVAL_CONSENTMANAGER_1: () => window.__cmp && typeof __cmp('getCMPData') === 'object',
26
- EVAL_CONSENTMANAGER_2: () => !__cmp('consentStatus').userChoiceExists,
25
+ EVAL_CONSENTMANAGER_1: () => {
26
+ const cmpData = window.__cmp?.('getCMPData');
27
+ return !!cmpData && typeof cmpData === 'object';
28
+ },
29
+ EVAL_CONSENTMANAGER_2: () => window.__cmp?.('consentStatus')?.userChoiceExists === false,
27
30
  EVAL_CONSENTMANAGER_3: () => __cmp('setConsent', 0),
28
31
  EVAL_CONSENTMANAGER_4: () => __cmp('setConsent', 1),
29
32
  EVAL_CONSENTMANAGER_5: () => __cmp('consentStatus').userChoiceExists,
33
+ EVAL_CONSENTMANAGER_NCMP_REJECT: () => {
34
+ if (typeof window.__npcmp !== 'function') return false;
35
+ window.__npcmp('reject');
36
+ return true;
37
+ },
38
+ EVAL_CONSENTMANAGER_NCMP_ACCEPT: () => {
39
+ if (typeof window.__npcmp !== 'function') return false;
40
+ window.__npcmp('save');
41
+ return true;
42
+ },
30
43
  EVAL_COOKIEBOT_1: () => !!window.Cookiebot,
31
44
  EVAL_COOKIEBOT_2: () => !window.Cookiebot.hasResponse && window.Cookiebot.dialog?.visible === true,
32
45
  EVAL_COOKIEBOT_3: () => window.Cookiebot.withdraw() || true,
@@ -82,6 +95,7 @@ export const snippets = {
82
95
  // declarative rules
83
96
  EVAL_ADOPT_TEST: () => !!localStorage.getItem('adoptConsentMode'),
84
97
  EVAL_ADULTFRIENDFINDER_TEST: () => !!localStorage.getItem('cookieConsent'),
98
+ EVAL_AYLO_COOKIE_MANAGER_READY: () => !!(window.wl_cookie_consent_manager || window._Cookie_Consent_Manager_brand),
85
99
  EVAL_BAHN_TEST: () => utag.gdpr.getSelectedCategories().length === 1,
86
100
  EVAL_BIGCOMMERCE_CONSENT_MANAGER_DETECT: () => !!(window.consentManager && window.consentManager.version),
87
101
  EVAL_BORLABS_0: () =>
@@ -145,6 +159,7 @@ export const snippets = {
145
159
  if (x.checked) x.click();
146
160
  }) || true,
147
161
  EVAL_IUBENDA_1: () => !!document.cookie.match(/_iub_cs-\d+=/),
162
+ EVAL_KROWN_COOKIE_BANNER_TEST: () => localStorage.getItem('krown-cookie-banner') === 'true',
148
163
  EVAL_MICROSOFT_0: () =>
149
164
  Array.from(document.querySelectorAll('div > button'))
150
165
  .filter((el) => el.innerText.match('Reject|Ablehnen'))[0]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duckduckgo/autoconsent",
3
- "version": "16.20.1",
3
+ "version": "16.22.0",
4
4
  "description": "",
5
5
  "types": "./dist/types/web.d.ts",
6
6
  "exports": {
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "AppConsent legacy",
3
+ "prehideSelectors": ["iframe[srcdoc*='frame-root']"],
4
+ "detectCmp": [
5
+ {
6
+ "exists": "script[src*='cdn.appconsent.io/tcf2/'][src*='core.bundle.js']"
7
+ }
8
+ ],
9
+ "detectPopup": [
10
+ {
11
+ "visible": "iframe[srcdoc*='frame-root']"
12
+ }
13
+ ],
14
+ "optIn": [
15
+ {
16
+ "waitForThenClick": ["iframe[srcdoc*='frame-root']", ".button__acceptAll"]
17
+ }
18
+ ],
19
+ "optOut": [
20
+ {
21
+ "waitForThenClick": ["iframe[srcdoc*='frame-root']", ".button__skip"]
22
+ }
23
+ ],
24
+ "test": [
25
+ {
26
+ "waitForVisible": "iframe[srcdoc*='frame-root']",
27
+ "timeout": 1000,
28
+ "check": "none"
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "AppConsent",
3
+ "prehideSelectors": ["iframe[title='Consent window']"],
4
+ "detectCmp": [
5
+ {
6
+ "exists": "script[src*='cdn.appconsent.io/tcf2-clear/'][src*='core.bundle.js']"
7
+ }
8
+ ],
9
+ "detectPopup": [
10
+ {
11
+ "visible": "iframe[title='Consent window']"
12
+ }
13
+ ],
14
+ "optIn": [
15
+ {
16
+ "waitForThenClick": ["iframe[title='Consent window']", ".button__acceptAll"]
17
+ }
18
+ ],
19
+ "optOut": [
20
+ {
21
+ "waitForThenClick": ["iframe[title='Consent window']", ".button__refuseAll"]
22
+ }
23
+ ],
24
+ "test": [
25
+ {
26
+ "waitForVisible": "iframe[title='Consent window']",
27
+ "timeout": 1000,
28
+ "check": "none"
29
+ }
30
+ ]
31
+ }
@@ -19,17 +19,65 @@
19
19
  {
20
20
  "visible": "#age_disclaimer_window,#ageDisclaimerWrapper",
21
21
  "check": "none"
22
+ },
23
+ {
24
+ "any": [
25
+ {
26
+ "visible": "#cookie_consent_wrapper.non_cookie_consent_wrapper #js_cookieBannerCloseBtn"
27
+ },
28
+ {
29
+ "eval": "EVAL_AYLO_COOKIE_MANAGER_READY"
30
+ }
31
+ ]
22
32
  }
23
33
  ],
24
34
  "optIn": [
25
35
  {
26
- "waitForThenClick": "#cookie_consent_wrapper #consent_accept_all, #manage_cookie_consent_modal #modal_consent_accept_all"
36
+ "if": {
37
+ "visible": "#cookie_consent_wrapper #consent_accept_all"
38
+ },
39
+ "then": [
40
+ {
41
+ "waitForThenClick": "#cookie_consent_wrapper #consent_accept_all"
42
+ }
43
+ ],
44
+ "else": [
45
+ {
46
+ "waitForThenClick": "#manage_cookie_consent_modal #modal_consent_accept_all"
47
+ }
48
+ ]
27
49
  }
28
50
  ],
29
51
  "optOut": [
30
52
  {
31
- "waitForThenClick": "#cookie_consent_wrapper #consent_accept_essential, #manage_cookie_consent_modal #modal_consent_accept_essential",
32
- "all": true
53
+ "if": {
54
+ "visible": "#cookie_consent_wrapper #consent_accept_essential"
55
+ },
56
+ "then": [
57
+ {
58
+ "waitForThenClick": "#cookie_consent_wrapper #consent_accept_essential"
59
+ }
60
+ ],
61
+ "else": [
62
+ {
63
+ "if": {
64
+ "visible": "#cookie_consent_wrapper #js_cookieBannerCloseBtn"
65
+ },
66
+ "then": [
67
+ {
68
+ "wait": 8000
69
+ },
70
+ {
71
+ "waitForThenClick": "#cookie_consent_wrapper #js_cookieBannerCloseBtn"
72
+ }
73
+ ],
74
+ "else": [
75
+ {
76
+ "waitForThenClick": "#manage_cookie_consent_modal #modal_consent_accept_essential"
77
+ }
78
+ ]
79
+ }
80
+ ]
33
81
  },
34
82
  {
35
83
  "waitForThenClick": "#cookie_consent_min_wrapper #close_minimized_banner",
@@ -39,7 +87,14 @@
39
87
  ],
40
88
  "test": [
41
89
  {
42
- "cookieContains": "cookieConsent=1"
90
+ "any": [
91
+ {
92
+ "cookieContains": "cookieConsent=1"
93
+ },
94
+ {
95
+ "cookieContains": "cookieConsent=5"
96
+ }
97
+ ]
43
98
  }
44
99
  ]
45
100
  }
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "consentmanager-ncmp",
3
+ "vendorUrl": "https://www.consentmanager.net/",
4
+ "prehideSelectors": ["#ncmp__tool .ncmp__banner"],
5
+ "detectCmp": [
6
+ {
7
+ "exists": "#ncmp__tool .ncmp__banner.ncmp__active"
8
+ }
9
+ ],
10
+ "detectPopup": [
11
+ {
12
+ "visible": "#ncmp__tool .ncmp__banner.ncmp__active",
13
+ "check": "any"
14
+ }
15
+ ],
16
+ "optIn": [
17
+ {
18
+ "eval": "EVAL_CONSENTMANAGER_NCMP_ACCEPT"
19
+ }
20
+ ],
21
+ "optOut": [
22
+ {
23
+ "wait": 500
24
+ },
25
+ {
26
+ "eval": "EVAL_CONSENTMANAGER_NCMP_REJECT"
27
+ }
28
+ ],
29
+ "test": [
30
+ {
31
+ "cookieContains": "ncmp="
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "cookie-banner-element",
3
+ "prehideSelectors": ["cookie-banner-element#ckb"],
4
+ "detectCmp": [{ "exists": "cookie-banner-element#ckb" }],
5
+ "detectPopup": [{ "visible": ["cookie-banner-element#ckb", "#ckb[role=\"dialog\"]"] }],
6
+ "optIn": [{ "waitForThenClick": ["cookie-banner-element#ckb", "#cky"] }],
7
+ "optOut": [{ "waitForThenClick": ["cookie-banner-element#ckb", "#ckn"] }]
8
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "ctv-disneyonice",
3
+ "runContext": {
4
+ "urlPattern": "^https://www\\.ctv\\.co\\.jp/disneyonice(?:/|[?#]|$)"
5
+ },
6
+ "prehideSelectors": [".box-cookie"],
7
+ "detectCmp": [{ "exists": ".box-cookie .box-cookie__inner" }],
8
+ "detectPopup": [{ "visible": ".box-cookie .box-cookie__inner" }],
9
+ "optIn": [{ "waitForThenClick": ".box-cookie .btn-normal.is-small" }],
10
+ "optOut": [{ "waitForThenClick": ".box-cookie .btn-normal.is-small" }],
11
+ "test": [{ "cookieContains": "disney_cc=ok" }]
12
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "fever",
3
+ "prehideSelectors": ["astro-island[component-url*=\"CookiesBanner\"] .cookies"],
4
+ "detectCmp": [
5
+ {
6
+ "exists": "astro-island[component-url*=\"CookiesBanner\"] .cookies button.cookies__buttons--settings"
7
+ }
8
+ ],
9
+ "detectPopup": [
10
+ {
11
+ "visible": "astro-island[component-url*=\"CookiesBanner\"] .cookies"
12
+ }
13
+ ],
14
+ "optIn": [
15
+ {
16
+ "waitForThenClick": "astro-island[component-url*=\"CookiesBanner\"] .cookies button.cookies__buttons--accept"
17
+ }
18
+ ],
19
+ "optOut": [
20
+ {
21
+ "waitForThenClick": "astro-island[component-url*=\"CookiesBanner\"] .cookies button.cookies__buttons--settings"
22
+ },
23
+ {
24
+ "if": {
25
+ "exists": "astro-island[component-url*=\"CookiesBanner\"] .cookies input[name=\"targeting\"]:checked"
26
+ },
27
+ "then": [
28
+ {
29
+ "click": "astro-island[component-url*=\"CookiesBanner\"] .cookies input[name=\"targeting\"]"
30
+ }
31
+ ]
32
+ },
33
+ {
34
+ "waitForThenClick": "astro-island[component-url*=\"CookiesBanner\"] .cookies button.cookies__buttons--accept"
35
+ }
36
+ ],
37
+ "test": [
38
+ {
39
+ "cookieContains": "cookiesPreferences=[%22necessary%22]"
40
+ }
41
+ ]
42
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "ibanez",
3
+ "vendorUrl": "https://www.ibanez.com/",
4
+ "runContext": {
5
+ "urlPattern": "^https?://www\\.ibanez\\.com/"
6
+ },
7
+ "prehideSelectors": ["#header-gdpr"],
8
+ "detectCmp": [{ "exists": "#header-gdpr #header-gdpr-in-btn button" }],
9
+ "detectPopup": [{ "visible": "#header-gdpr.is-active" }],
10
+ "optOut": [{ "waitForThenClick": "#header-gdpr #header-gdpr-in-btn button" }],
11
+ "optIn": [{ "waitForThenClick": "#header-gdpr #header-gdpr-in-btn button" }],
12
+ "test": [{ "cookieContains": "gdprCookieData=ok" }]
13
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "krown-cookie-banner",
3
+ "vendorUrl": "https://krownthemes.com/",
4
+ "cosmetic": false,
5
+ "prehideSelectors": ["modal-box[data-options*=\"cookies\"] .modal-object--cookie"],
6
+ "detectCmp": [
7
+ {
8
+ "exists": ".modal-object--cookie [data-js-cookies-decline]"
9
+ }
10
+ ],
11
+ "detectPopup": [
12
+ {
13
+ "visible": ".modal-object--cookie [data-js-cookies-decline]"
14
+ }
15
+ ],
16
+ "optIn": [
17
+ {
18
+ "waitForThenClick": ".modal-object--cookie [data-js-cookies-accept]"
19
+ }
20
+ ],
21
+ "optOut": [
22
+ {
23
+ "waitForThenClick": ".modal-object--cookie [data-js-cookies-decline]"
24
+ }
25
+ ],
26
+ "test": [
27
+ {
28
+ "wait": 500
29
+ },
30
+ {
31
+ "eval": "EVAL_KROWN_COOKIE_BANNER_TEST"
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "pornpics.de",
3
+ "runContext": {
4
+ "urlPattern": "^https?://(www\\.)?pornpics\\.de/"
5
+ },
6
+ "detectCmp": [{ "exists": "#cookie-form" }],
7
+ "detectPopup": [{ "visible": "#cookie-form" }],
8
+ "optIn": [{ "waitForThenClick": "#cookie-form .accept" }],
9
+ "optOut": [{ "waitForThenClick": "#cookie-form .reject" }],
10
+ "test": [
11
+ { "cookieContains": "_cookieNoticeSettings=%7B%22performance%22%3Afalse%2C%22targeting%22%3Afalse%2C%22analytic%22%3Afalse%7D" }
12
+ ]
13
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "simplehuman-com",
3
+ "vendorUrl": "https://www.simplehuman.com/",
4
+ "runContext": {
5
+ "main": true,
6
+ "frame": false,
7
+ "urlPattern": "^https?://(www\\.)?simplehuman\\.com/"
8
+ },
9
+ "prehideSelectors": ["custom-cookie-consent#cookieBubble.banner-show"],
10
+ "detectCmp": [
11
+ {
12
+ "exists": "custom-cookie-consent#cookieBubble #configureBtn"
13
+ }
14
+ ],
15
+ "detectPopup": [
16
+ {
17
+ "visible": "custom-cookie-consent#cookieBubble.banner-show #configureBtn"
18
+ }
19
+ ],
20
+ "optIn": [
21
+ {
22
+ "waitForThenClick": "custom-cookie-consent#cookieBubble #cookieBubbleAcceptAll"
23
+ }
24
+ ],
25
+ "optOut": [
26
+ {
27
+ "waitForThenClick": "custom-cookie-consent#cookieBubble #configureBtn"
28
+ },
29
+ {
30
+ "waitForThenClick": ".custom-cookie-modal #acceptNecessaryBtn"
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "toho-one.com",
3
+ "vendorUrl": "https://www.toho-one.com/",
4
+ "runContext": {
5
+ "urlPattern": "^https?://www\\.toho-one\\.com/"
6
+ },
7
+ "detectCmp": [
8
+ {
9
+ "exists": "xpath///div[contains(@class, 'fixed') and contains(., 'Cookieをブロック') and .//button[normalize-space()='Cookieの設定']]"
10
+ }
11
+ ],
12
+ "detectPopup": [
13
+ {
14
+ "visible": "xpath///div[contains(@class, 'fixed') and contains(., 'Cookieをブロック') and .//button[normalize-space()='Cookieの設定']]"
15
+ }
16
+ ],
17
+ "optIn": [
18
+ {
19
+ "waitForThenClick": "xpath///div[contains(@class, 'fixed') and contains(., 'Cookieをブロック')]//button[normalize-space()='すべてのCookieを受け入れる']"
20
+ }
21
+ ],
22
+ "optOut": [
23
+ {
24
+ "waitForThenClick": "xpath///div[contains(@class, 'fixed') and contains(., 'Cookieをブロック')]//button[normalize-space()='Cookieの設定']"
25
+ },
26
+ {
27
+ "waitFor": [
28
+ "xpath///div[contains(@class, 'fixed') and .//button[normalize-space()='設定を保存する']]",
29
+ "input[type=checkbox]:checked:not(:disabled)"
30
+ ]
31
+ },
32
+ {
33
+ "click": [
34
+ "xpath///div[contains(@class, 'fixed') and .//button[normalize-space()='設定を保存する']]",
35
+ "input[type=checkbox]:checked:not(:disabled)"
36
+ ],
37
+ "all": true
38
+ },
39
+ {
40
+ "waitForThenClick": "xpath///button[normalize-space()='設定を保存する']"
41
+ }
42
+ ],
43
+ "test": [
44
+ {
45
+ "waitForVisible": "xpath///div[contains(@class, 'fixed') and contains(., 'Cookieをブロック') and .//button[normalize-space()='Cookieの設定']]",
46
+ "timeout": 1000,
47
+ "check": "none"
48
+ }
49
+ ]
50
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "tohotheater-jp",
3
+ "vendorUrl": "https://www.tohotheater.jp/",
4
+ "runContext": {
5
+ "urlPattern": "^https?://(?:[^/]+\\.)?tohotheater\\.jp/"
6
+ },
7
+ "prehideSelectors": [".optIn"],
8
+ "detectCmp": [{ "exists": ".optIn .js-optin-cookie-settings" }],
9
+ "detectPopup": [{ "visible": ".optIn" }],
10
+ "optIn": [{ "waitForThenClick": ".optIn .js-optin-accept-all-cookies" }],
11
+ "optOut": [
12
+ { "waitForThenClick": ".optIn .js-optin-cookie-settings" },
13
+ { "waitForThenClick": "label[for=\"TAB-02\"]" },
14
+ { "waitForThenClick": "label[for=\"TAB-02\"] + .tab-content .toggleSwitch__circle" },
15
+ { "waitForThenClick": "label[for=\"TAB-03\"]" },
16
+ { "waitForThenClick": "label[for=\"TAB-03\"] + .tab-content .toggleSwitch__circle" },
17
+ { "waitForThenClick": ".js-modal-save-settings" }
18
+ ],
19
+ "test": [{ "cookieContains": "__performanceCookieFlag__=0" }, { "cookieContains": "__targetingCookieFlag__=0" }]
20
+ }