@duckduckgo/autoconsent 16.48.0 → 16.50.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 (115) hide show
  1. package/.agents/skills/optimize-button-patterns/SKILL.md +145 -0
  2. package/.agents/skills/oxylabs-testing/SKILL.md +1 -1
  3. package/.claude/skills/optimize-button-patterns/SKILL.md +7 -0
  4. package/.github/workflows/release-labels.yml +2 -6
  5. package/AGENTS.md +2 -0
  6. package/CHANGELOG.md +77 -0
  7. package/data/Readme.md +6 -0
  8. package/data/labelled-button-texts.csv +7006 -0
  9. package/dist/addon-firefox/background.bundle.js +6 -1
  10. package/dist/addon-firefox/compact-rules.json +1 -1
  11. package/dist/addon-firefox/content.bundle.js +26 -13
  12. package/dist/addon-firefox/manifest.json +1 -1
  13. package/dist/addon-firefox/rule-index.json +1 -1
  14. package/dist/addon-firefox/rules.json +1 -1
  15. package/dist/addon-mv3/background.bundle.js +6 -1
  16. package/dist/addon-mv3/compact-rules.json +1 -1
  17. package/dist/addon-mv3/content.bundle.js +26 -13
  18. package/dist/addon-mv3/manifest.json +1 -1
  19. package/dist/addon-mv3/rule-index.json +1 -1
  20. package/dist/addon-mv3/rules.json +1 -1
  21. package/dist/autoconsent.cjs.js +26 -13
  22. package/dist/autoconsent.esm.js +26 -13
  23. package/dist/autoconsent.playwright.js +26 -13
  24. package/dist/autoconsent.standalone.js +27 -14
  25. package/dist/types/eval-snippets.d.ts +3 -0
  26. package/lib/eval-snippets.ts +7 -0
  27. package/lib/heuristic-patterns.ts +20 -11
  28. package/package.json +3 -1
  29. package/rules/autoconsent/amazon-hiring.json +16 -0
  30. package/rules/autoconsent/avada-cookie-consent.json +43 -0
  31. package/rules/autoconsent/axeptio.json +17 -4
  32. package/rules/autoconsent/bigcrunch.json +39 -0
  33. package/rules/autoconsent/borlabs.json +5 -0
  34. package/rules/autoconsent/bricklink.json +33 -0
  35. package/rules/autoconsent/ceneo.json +9 -0
  36. package/rules/autoconsent/conjointly.json +43 -0
  37. package/rules/autoconsent/consentmo.json +51 -7
  38. package/rules/autoconsent/cookie-popup-close-cookies.json +37 -0
  39. package/rules/autoconsent/cookieconsent2.json +6 -1
  40. package/rules/autoconsent/costco.json +27 -0
  41. package/rules/autoconsent/datasign.json +85 -0
  42. package/rules/autoconsent/dhbbank.json +13 -0
  43. package/rules/autoconsent/ee-consent-notice.json +40 -0
  44. package/rules/autoconsent/ensembleartsphilly.json +33 -0
  45. package/rules/autoconsent/evium.de.json +33 -0
  46. package/rules/autoconsent/fera-cookies.json +67 -0
  47. package/rules/autoconsent/iubenda.json +13 -7
  48. package/rules/autoconsent/la7-cmp.json +30 -0
  49. package/rules/autoconsent/laravel-cookie-consent.json +45 -0
  50. package/rules/autoconsent/legislation-gov-uk.json +43 -0
  51. package/rules/autoconsent/mackeeper.json +34 -0
  52. package/rules/autoconsent/ndl-go-jp.json +35 -0
  53. package/rules/autoconsent/pandectes.json +48 -15
  54. package/rules/autoconsent/passle.json +32 -0
  55. package/rules/autoconsent/paypal-us.json +3 -3
  56. package/rules/autoconsent/paypal.json +5 -2
  57. package/rules/autoconsent/primeconsent.json +39 -0
  58. package/rules/autoconsent/shinden.pl.json +34 -0
  59. package/rules/autoconsent/texas-instruments.json +17 -0
  60. package/rules/autoconsent/thegrandyork.json +46 -0
  61. package/rules/autoconsent/thenounproject.json +61 -0
  62. package/rules/autoconsent/toyota.json +16 -5
  63. package/rules/autoconsent/tri-table.json +14 -0
  64. package/rules/autoconsent/truevault-polaris.json +63 -0
  65. package/rules/autoconsent/uft-cookie-notice.json +15 -0
  66. package/rules/autoconsent/wbd-legal-terms.json +32 -0
  67. package/rules/autoconsent/webflow.json +1 -1
  68. package/rules/autoconsent/wix.json +90 -8
  69. package/rules/compact-rules.json +1 -1
  70. package/rules/rule-index.json +1 -1
  71. package/rules/rules.json +1 -1
  72. package/scripts/benchmark-button-classification.ts +75 -0
  73. package/scripts/button-text-benchmark.ts +102 -0
  74. package/tests/amazon-hiring.spec.ts +3 -0
  75. package/tests/avada-cookie-consent.spec.ts +9 -0
  76. package/tests/axeptio.spec.ts +8 -4
  77. package/tests/bigcrunch.spec.ts +16 -0
  78. package/tests/borlabs.spec.ts +7 -3
  79. package/tests/bricklink.spec.ts +3 -0
  80. package/tests/ceneo.spec.ts +3 -0
  81. package/tests/conjointly.spec.ts +3 -0
  82. package/tests/consentmo.spec.ts +1 -0
  83. package/tests/cookie-popup-close-cookies.spec.ts +10 -0
  84. package/tests/cookieconsent2.spec.ts +6 -1
  85. package/tests/costco.spec.ts +5 -0
  86. package/tests/datasign.spec.ts +8 -0
  87. package/tests/dhbbank.spec.ts +6 -0
  88. package/tests/ee-consent-notice.spec.ts +9 -0
  89. package/tests/ensembleartsphilly.spec.ts +6 -0
  90. package/tests/evium.de.spec.ts +5 -0
  91. package/tests/fera-cookies.spec.ts +6 -0
  92. package/tests/iubenda.spec.ts +6 -0
  93. package/tests/la7-cmp.spec.ts +6 -0
  94. package/tests/laravel-cookie-consent.spec.ts +10 -0
  95. package/tests/legislation-gov-uk.spec.ts +3 -0
  96. package/tests/mackeeper.spec.ts +3 -0
  97. package/tests/ndl-go-jp.spec.ts +8 -0
  98. package/tests/pandectes.spec.ts +20 -1
  99. package/tests/passle.spec.ts +8 -0
  100. package/tests/paypal-us.spec.ts +2 -3
  101. package/tests/primeconsent.spec.ts +11 -0
  102. package/tests/shinden.pl.spec.ts +5 -0
  103. package/tests/texas-instruments.spec.ts +3 -0
  104. package/tests/thegrandyork.spec.ts +3 -0
  105. package/tests/thenounproject.spec.ts +3 -0
  106. package/tests/tri-table.spec.ts +5 -0
  107. package/tests/truevault-polaris.spec.ts +9 -0
  108. package/tests/uft-cookie-notice.spec.ts +3 -0
  109. package/tests/wbd-legal-terms.spec.ts +18 -0
  110. package/tests/webflow.spec.ts +7 -1
  111. package/tests/wix.spec.ts +8 -1
  112. package/tests-wtr/heuristics/button-classification-accuracy.test.ts +41 -0
  113. package/tests-wtr/heuristics/heuristics-utils.test.ts +64 -0
  114. package/rules/autoconsent/paypal-cookieprefs.json +0 -29
  115. package/tests/paypal-cookieprefs.spec.ts +0 -7
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "thegrandyork",
3
+ "runContext": {
4
+ "urlPattern": "^https?://(www\\.)?thegrandyork\\.co\\.uk/"
5
+ },
6
+ "prehideSelectors": ["#user-consent"],
7
+ "detectCmp": [
8
+ {
9
+ "exists": "#user-consent .page.main button.manage"
10
+ }
11
+ ],
12
+ "detectPopup": [
13
+ {
14
+ "visible": "#user-consent .page.main"
15
+ }
16
+ ],
17
+ "optIn": [
18
+ {
19
+ "waitForThenClick": "#user-consent .page.main button.acceptall"
20
+ }
21
+ ],
22
+ "optOut": [
23
+ {
24
+ "waitForThenClick": "#user-consent .page.main button.manage"
25
+ },
26
+ {
27
+ "waitForVisible": "#user-consent .page.secondary"
28
+ },
29
+ {
30
+ "click": "#user-consent .page.secondary input[type=checkbox]:checked:not([disabled])",
31
+ "all": true,
32
+ "optional": true
33
+ },
34
+ {
35
+ "click": "#user-consent .page.secondary button.save"
36
+ }
37
+ ],
38
+ "test": [
39
+ {
40
+ "wait": 500
41
+ },
42
+ {
43
+ "cookieContains": "\"marketing\":\"denied\""
44
+ }
45
+ ]
46
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "thenounproject",
3
+ "vendorUrl": "https://thenounproject.com/",
4
+ "runContext": {
5
+ "urlPattern": "^https?://(\\w+\\.)?thenounproject\\.com/"
6
+ },
7
+ "prehideSelectors": ["[data-callback=\"accounts/hide-banner/CookiesBanner\"]"],
8
+ "detectCmp": [
9
+ {
10
+ "exists": "[data-callback=\"accounts/hide-banner/CookiesBanner\"] button[class*=\"ManageLink\"]"
11
+ }
12
+ ],
13
+ "detectPopup": [
14
+ {
15
+ "visible": "[data-callback=\"accounts/hide-banner/CookiesBanner\"] button[class*=\"ManageLink\"]",
16
+ "check": "any"
17
+ }
18
+ ],
19
+ "optIn": [
20
+ {
21
+ "waitForThenClick": "[data-callback=\"accounts/hide-banner/CookiesBanner\"] button:not([class*=\"ManageLink\"])"
22
+ }
23
+ ],
24
+ "optOut": [
25
+ {
26
+ "waitForThenClick": "[data-callback=\"accounts/hide-banner/CookiesBanner\"] button[class*=\"ManageLink\"]"
27
+ },
28
+ {
29
+ "any": [
30
+ {
31
+ "waitForVisible": "[data-testid=\"modal-body-content\"] [class*=\"IndividualBox\"] input[type=\"checkbox\"]",
32
+ "timeout": 2000,
33
+ "check": "any"
34
+ },
35
+ {
36
+ "click": "[data-callback=\"accounts/hide-banner/CookiesBanner\"] button[class*=\"ManageLink\"]"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "waitForVisible": "[data-testid=\"modal-body-content\"] [class*=\"IndividualBox\"] input[type=\"checkbox\"]",
42
+ "check": "any"
43
+ },
44
+ {
45
+ "click": "[data-testid=\"modal-body-content\"] [class*=\"IndividualBox\"] input[type=\"checkbox\"][aria-disabled=\"false\"]:checked",
46
+ "all": true,
47
+ "optional": true
48
+ },
49
+ {
50
+ "waitForThenClick": "[data-testid=\"modal-body-content\"] [class*=\"Footer\"] button"
51
+ }
52
+ ],
53
+ "test": [
54
+ {
55
+ "cookieContains": "%22analytics%22%3Afalse"
56
+ },
57
+ {
58
+ "cookieContains": "%22advertising%22%3Afalse"
59
+ }
60
+ ]
61
+ }
@@ -9,27 +9,38 @@
9
9
  "prehideSelectors": ["#cookie-banner.visible"],
10
10
  "detectCmp": [
11
11
  {
12
- "exists": "#cookie-banner.visible .cookie-banner__container .cookie-banner__accept"
12
+ "exists": "#cookie-banner .cookie-banner__container [data-cookie-preferences-button]"
13
13
  }
14
14
  ],
15
15
  "detectPopup": [
16
16
  {
17
- "visible": "#cookie-banner.visible .cookie-banner__container .cookie-banner__accept"
17
+ "visible": "#cookie-banner.visible .cookie-banner__container"
18
18
  }
19
19
  ],
20
20
  "optIn": [
21
21
  {
22
- "waitForThenClick": "#cookie-banner.visible .cookie-banner__container .cookie-banner__accept"
22
+ "waitForThenClick": "#cookie-banner.visible .cookie-banner__dismiss"
23
23
  }
24
24
  ],
25
25
  "optOut": [
26
26
  {
27
- "waitForThenClick": "#cookie-banner.visible .cookie-banner__container .cookie-banner__reject"
27
+ "waitForThenClick": "#cookie-banner.visible [data-cookie-preferences-button]"
28
+ },
29
+ {
30
+ "waitForVisible": "#ensModalWrapper #ensSave"
31
+ },
32
+ {
33
+ "click": "#ensModalWrapper .ensCheckbox:checked:not(:disabled):not(#EssentialCookiesSlide)",
34
+ "all": true,
35
+ "optional": true
36
+ },
37
+ {
38
+ "waitForThenClick": "#ensModalWrapper #ensSave"
28
39
  }
29
40
  ],
30
41
  "test": [
31
42
  {
32
- "cookieContains": "TOYOTANATIONAL_ENSIGHTEN_PRIVACY_TargetingCookies"
43
+ "cookieContains": "ENSIGHTEN_PRIVACY_TargetingCookies=0"
33
44
  }
34
45
  ]
35
46
  }
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "tri-table",
3
+ "vendorUrl": "https://tri-table.com/",
4
+ "prehideSelectors": [],
5
+ "detectCmp": [{ "exists": "[class^=\"app_gdpr--\"] button" }],
6
+ "detectPopup": [{ "visible": "[class^=\"app_gdpr--\"] button" }],
7
+ "optIn": [{ "waitForThenClick": "[class^=\"app_gdpr--\"] div > button:last-of-type:nth-of-type(2)" }],
8
+ "optOut": [
9
+ { "waitForThenClick": "[class^=\"app_gdpr--\"] div > button:first-of-type:nth-last-of-type(2)", "retry": 2, "retryInterval": 500 },
10
+ { "waitForThenClick": "[class^=\"app_gdpr--\"] div > button:nth-of-type(2):nth-last-of-type(2)" },
11
+ { "waitForVisible": "[class^=\"app_gdpr--\"] button", "check": "none" }
12
+ ],
13
+ "test": [{ "cookieContains": "tt_cons_addtl=" }]
14
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "truevault-polaris",
3
+ "vendorUrl": "https://www.truevault.com/",
4
+ "cosmetic": false,
5
+ "prehideSelectors": [],
6
+ "detectCmp": [
7
+ {
8
+ "exists": ["#polaris-css-lockdown-container", "#polaris-consent-widgets .polaris-consent-widget"]
9
+ }
10
+ ],
11
+ "detectPopup": [
12
+ {
13
+ "visible": ["#polaris-css-lockdown-container", "#polaris-consent-widgets .polaris-consent-widget"]
14
+ }
15
+ ],
16
+ "optIn": [
17
+ {
18
+ "waitForThenClick": ["#polaris-css-lockdown-container", ".polaris-consent-widget__actions button:last-child"]
19
+ }
20
+ ],
21
+ "optOut": [
22
+ {
23
+ "if": {
24
+ "exists": ["#polaris-css-lockdown-container", ".polaris-consent-widget__actions button:nth-child(2):not(:last-child)"]
25
+ },
26
+ "then": [
27
+ {
28
+ "click": ["#polaris-css-lockdown-container", ".polaris-consent-widget__actions button:nth-child(2):not(:last-child)"]
29
+ }
30
+ ],
31
+ "else": [
32
+ {
33
+ "click": ["#polaris-css-lockdown-container", ".polaris-consent-widget__actions button:first-child"]
34
+ },
35
+ {
36
+ "waitFor": ["#polaris-css-lockdown-container", ".polaris-preferences-widget__save_button"],
37
+ "timeout": 2000
38
+ },
39
+ {
40
+ "click": [
41
+ "#polaris-css-lockdown-container",
42
+ ".polaris-preferences-widget input[type=checkbox]:checked:not([disabled])"
43
+ ],
44
+ "all": true,
45
+ "optional": true
46
+ },
47
+ {
48
+ "click": ["#polaris-css-lockdown-container", ".polaris-preferences-widget__save_button"]
49
+ }
50
+ ]
51
+ }
52
+ ],
53
+ "test": [
54
+ {
55
+ "waitForVisible": ["#polaris-css-lockdown-container", "#polaris-consent-widgets .polaris-consent-widget"],
56
+ "check": "none",
57
+ "timeout": 2000
58
+ },
59
+ {
60
+ "cookieContains": "\"adsPermitted\":false"
61
+ }
62
+ ]
63
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "uft-cookie-notice",
3
+ "vendorUrl": "https://unknown",
4
+ "intermediate": false,
5
+ "prehideSelectors": ["#politique_confidentialite"],
6
+ "detectCmp": [{ "exists": "#politique_confidentialite #cookies_settings" }],
7
+ "detectPopup": [{ "visible": "#politique_confidentialite" }],
8
+ "optIn": [{ "waitForThenClick": "#politique_confidentialite #cookies_accept" }],
9
+ "optOut": [
10
+ { "click": "#politique_confidentialite #cookies_settings" },
11
+ { "waitForThenClick": "#cookie_settings a.refuse" },
12
+ { "waitForVisible": "#politique_confidentialite", "check": "none" }
13
+ ],
14
+ "test": [{ "wait": 1000 }, { "cookieContains": "UFT_cookie_notice_accepted=%5B%5D" }]
15
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "wbd-legal-terms",
3
+ "vendorUrl": "https://www.wbd.com/",
4
+ "comment": "Terms-and-cookies notice with only an Agree button. It is a modal <dialog>, so hiding it with CSS leaves the page inert; close it without submitting the form instead.",
5
+ "cosmetic": true,
6
+ "minimumRuleStepVersion": 2,
7
+ "detectCmp": [
8
+ {
9
+ "exists": "dialog#ltp-dialog"
10
+ }
11
+ ],
12
+ "detectPopup": [
13
+ {
14
+ "visible": "dialog#ltp-dialog[open]"
15
+ }
16
+ ],
17
+ "optIn": [
18
+ {
19
+ "waitForThenClick": "#ltp-submit-btn"
20
+ }
21
+ ],
22
+ "optOut": [
23
+ {
24
+ "eval": "EVAL_WBD_LTP_CLOSE"
25
+ },
26
+ {
27
+ "removeClass": "is-NoScroll",
28
+ "selector": "body",
29
+ "optional": true
30
+ }
31
+ ]
32
+ }
@@ -4,7 +4,7 @@
4
4
  "prehideSelectors": [".fs-cc-components,[fs-cc=banner]"],
5
5
  "detectCmp": [
6
6
  {
7
- "visible": ".fs-cc-components,[fs-cc=banner]"
7
+ "any": [{ "visible": ".fs-cc-components,[fs-cc=banner]" }, { "exists": "script[src*=\"@finsweet/cookie-consent\"]" }]
8
8
  }
9
9
  ],
10
10
  "detectPopup": [
@@ -5,26 +5,108 @@
5
5
  "prehideSelectors": [],
6
6
  "detectCmp": [
7
7
  {
8
- "exists": "[data-comp-type=cookie-banner-root-wix],[data-hook=ccsu-banner-wrapper]"
8
+ "exists": "[data-comp-type=cookie-banner-root-wix],[data-hook=ccsu-banner-wrapper],[data-comp-type=cookie-banner-root-uou]"
9
9
  }
10
10
  ],
11
11
  "detectPopup": [
12
12
  {
13
- "visible": "[data-comp-type=cookie-banner-root-wix],[data-hook=ccsu-banner-wrapper]"
13
+ "visible": "[data-comp-type=cookie-banner-root-wix],[data-hook=ccsu-banner-wrapper],[data-comp-type=cookie-banner-root-uou]"
14
14
  }
15
15
  ],
16
16
  "optIn": [
17
17
  {
18
- "if": { "exists": "[data-hook=ccsu-banner-accept]" },
19
- "then": [{ "click": "[data-hook=ccsu-banner-accept]" }],
20
- "else": [{ "click": "[data-hook=ccsu-banner-decline]" }]
18
+ "if": {
19
+ "exists": "[data-hook=consent-banner-apply-button]"
20
+ },
21
+ "then": [
22
+ {
23
+ "click": "[data-hook=consent-banner-apply-button]"
24
+ }
25
+ ],
26
+ "else": [
27
+ {
28
+ "if": {
29
+ "exists": "[data-hook=ccsu-banner-accept]"
30
+ },
31
+ "then": [
32
+ {
33
+ "click": "[data-hook=ccsu-banner-accept]"
34
+ }
35
+ ],
36
+ "else": [
37
+ {
38
+ "click": "[data-hook=ccsu-banner-decline]"
39
+ }
40
+ ]
41
+ }
42
+ ]
21
43
  }
22
44
  ],
23
45
  "optOut": [
24
46
  {
25
- "if": { "exists": "[data-hook=ccsu-banner-decline-all]" },
26
- "then": [{ "click": "[data-hook=ccsu-banner-decline-all]" }],
27
- "else": [{ "hide": "[data-hook=ccsu-banner-wrapper]" }]
47
+ "if": {
48
+ "exists": "[data-comp-type=cookie-banner-root-uou]"
49
+ },
50
+ "then": [
51
+ {
52
+ "wait": 1000
53
+ },
54
+ {
55
+ "if": {
56
+ "exists": "[data-hook=consent-banner-decline-all-button]"
57
+ },
58
+ "then": [
59
+ {
60
+ "click": "[data-hook=consent-banner-decline-all-button]"
61
+ }
62
+ ],
63
+ "else": [
64
+ {
65
+ "click": "[data-hook=consent-banner-settings-button]"
66
+ },
67
+ {
68
+ "waitForVisible": "[data-hook=consent-banner-settings-save-button]"
69
+ },
70
+ {
71
+ "click": "[data-hook=consent-banner-section-toggle-input]:checked:not(:disabled)",
72
+ "all": true,
73
+ "optional": true
74
+ },
75
+ {
76
+ "click": "[data-hook=consent-banner-settings-save-button]"
77
+ }
78
+ ]
79
+ },
80
+ {
81
+ "any": [
82
+ {
83
+ "waitForVisible": "[data-comp-type=cookie-banner-root-uou]",
84
+ "check": "none",
85
+ "timeout": 2000
86
+ },
87
+ {
88
+ "hide": "[data-comp-type=cookie-banner-root-uou]"
89
+ }
90
+ ]
91
+ }
92
+ ],
93
+ "else": [
94
+ {
95
+ "if": {
96
+ "exists": "[data-hook=ccsu-banner-decline-all]"
97
+ },
98
+ "then": [
99
+ {
100
+ "click": "[data-hook=ccsu-banner-decline-all]"
101
+ }
102
+ ],
103
+ "else": [
104
+ {
105
+ "hide": "[data-hook=ccsu-banner-wrapper]"
106
+ }
107
+ ]
108
+ }
109
+ ]
28
110
  }
29
111
  ]
30
112
  }