@duckduckgo/autoconsent 10.8.0 → 10.10.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 (37) hide show
  1. package/.github/workflows/ddg-release.yml +5 -9
  2. package/CHANGELOG.md +44 -0
  3. package/ci/asana-create-tasks.js +2 -2
  4. package/ci/clients_pr_template.md +3 -0
  5. package/dist/addon-firefox/background.bundle.js +3 -0
  6. package/dist/addon-firefox/content.bundle.js +7 -3
  7. package/dist/addon-firefox/manifest.json +1 -1
  8. package/dist/addon-firefox/rules.json +182 -19
  9. package/dist/addon-mv3/background.bundle.js +3 -0
  10. package/dist/addon-mv3/content.bundle.js +7 -3
  11. package/dist/addon-mv3/manifest.json +1 -1
  12. package/dist/addon-mv3/rules.json +182 -19
  13. package/dist/autoconsent.cjs.js +7 -3
  14. package/dist/autoconsent.esm.js +7 -3
  15. package/dist/autoconsent.playwright.js +1 -1
  16. package/dist/autoconsent.unit.js +189 -22
  17. package/lib/cmps/evidon.ts +4 -3
  18. package/lib/eval-snippets.ts +3 -0
  19. package/package.json +1 -1
  20. package/readme.md +2 -4
  21. package/rules/autoconsent/aquasana-com.json +12 -3
  22. package/rules/autoconsent/complianz-opt-out.json +12 -1
  23. package/rules/autoconsent/cookiecuttr.json +37 -0
  24. package/rules/autoconsent/ebay.json +31 -0
  25. package/rules/autoconsent/ens-modal.json +3 -1
  26. package/rules/autoconsent/ens-notify-banner.json +4 -2
  27. package/rules/autoconsent/fides.json +5 -2
  28. package/rules/autoconsent/ketch.json +8 -5
  29. package/rules/autoconsent/roblox.json +36 -0
  30. package/rules/autoconsent/uswitch.json +10 -5
  31. package/rules/rules.json +182 -19
  32. package/tests/aquasana-com.spec.ts +4 -1
  33. package/tests/cookiecuttr.spec.ts +7 -0
  34. package/tests/ebay.spec.ts +7 -0
  35. package/tests/fides.spec.ts +1 -0
  36. package/tests/ketch.spec.ts +6 -0
  37. package/tests/roblox.spec.ts +5 -0
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "name": "uswitch.com",
3
- "prehideSelectors": ["#cookie-banner-wrapper"],
4
- "detectCmp": [{ "exists": "#cookie-banner-wrapper"}],
5
- "detectPopup": [{ "visible": "#cookie-banner-wrapper" }],
6
- "optIn": [{ "click": "#cookie_banner_accept_mobile" }],
7
- "optOut": [{ "click": "#cookie_banner_save"}]
3
+ "runContext": {
4
+ "main": true,
5
+ "frame": false,
6
+ "urlPattern": "^https://(www\\.)?uswitch\\.com/"
7
+ },
8
+ "prehideSelectors": [".ucb"],
9
+ "detectCmp": [{ "exists": ".ucb-banner"}],
10
+ "detectPopup": [{ "visible": ".ucb-banner" }],
11
+ "optIn": [{ "waitForThenClick": ".ucb-banner .ucb-btn-accept" }],
12
+ "optOut": [{ "waitForThenClick": ".ucb-banner .ucb-btn-save" }]
8
13
  }
package/rules/rules.json CHANGED
@@ -374,7 +374,6 @@
374
374
  },
375
375
  {
376
376
  "name": "aquasana.com",
377
- "cosmetic": true,
378
377
  "prehideSelectors": [
379
378
  "#consent-tracking"
380
379
  ],
@@ -390,12 +389,24 @@
390
389
  ],
391
390
  "optIn": [
392
391
  {
393
- "click": "#accept_consent"
392
+ "waitForThenClick": "#consent-tracking .affirm.btn"
394
393
  }
395
394
  ],
396
395
  "optOut": [
397
396
  {
398
- "hide": "#consent-tracking"
397
+ "if": {
398
+ "exists": "#consent-tracking .decline.btn"
399
+ },
400
+ "then": [
401
+ {
402
+ "click": "#consent-tracking .decline.btn"
403
+ }
404
+ ],
405
+ "else": [
406
+ {
407
+ "hide": "#consent-tracking"
408
+ }
409
+ ]
399
410
  }
400
411
  ]
401
412
  },
@@ -1571,7 +1582,20 @@
1571
1582
  ],
1572
1583
  "else": [
1573
1584
  {
1574
- "hide": "[aria-describedby=\"cookieconsent:desc\"]"
1585
+ "if": {
1586
+ "exists": ".cmp-pref-link"
1587
+ },
1588
+ "then": [
1589
+ {
1590
+ "click": ".cmp-pref-link"
1591
+ },
1592
+ {
1593
+ "waitForThenClick": ".cmp-body [id*=rejectAll]"
1594
+ },
1595
+ {
1596
+ "waitForThenClick": ".cmp-body .cmp-save-btn"
1597
+ }
1598
+ ]
1575
1599
  }
1576
1600
  ]
1577
1601
  }
@@ -1965,6 +1989,51 @@
1965
1989
  }
1966
1990
  ]
1967
1991
  },
1992
+ {
1993
+ "name": "cookiecuttr",
1994
+ "vendorUrl": "https://github.com/cdwharton/cookieCuttr",
1995
+ "cosmetic": false,
1996
+ "runContext": {
1997
+ "main": true,
1998
+ "frame": false,
1999
+ "urlPattern": ""
2000
+ },
2001
+ "prehideSelectors": [
2002
+ ".cc-cookies"
2003
+ ],
2004
+ "detectCmp": [
2005
+ {
2006
+ "exists": ".cc-cookies .cc-cookie-accept"
2007
+ }
2008
+ ],
2009
+ "detectPopup": [
2010
+ {
2011
+ "visible": ".cc-cookies .cc-cookie-accept"
2012
+ }
2013
+ ],
2014
+ "optIn": [
2015
+ {
2016
+ "waitForThenClick": ".cc-cookies .cc-cookie-accept"
2017
+ }
2018
+ ],
2019
+ "optOut": [
2020
+ {
2021
+ "if": {
2022
+ "exists": ".cc-cookies .cc-cookie-decline"
2023
+ },
2024
+ "then": [
2025
+ {
2026
+ "click": ".cc-cookies .cc-cookie-decline"
2027
+ }
2028
+ ],
2029
+ "else": [
2030
+ {
2031
+ "hide": ".cc-cookies"
2032
+ }
2033
+ ]
2034
+ }
2035
+ ]
2036
+ },
1968
2037
  {
1969
2038
  "name": "cookiefirst.com",
1970
2039
  "prehideSelectors": [
@@ -2525,6 +2594,39 @@
2525
2594
  }
2526
2595
  ]
2527
2596
  },
2597
+ {
2598
+ "name": "ebay",
2599
+ "vendorUrl": "https://ebay.com",
2600
+ "cosmetic": false,
2601
+ "runContext": {
2602
+ "main": true,
2603
+ "frame": false,
2604
+ "urlPattern": "^https://(www\\.)?ebay\\.([.a-z]+)/"
2605
+ },
2606
+ "prehideSelectors": [
2607
+ "#gdpr-banner"
2608
+ ],
2609
+ "detectCmp": [
2610
+ {
2611
+ "exists": "#gdpr-banner"
2612
+ }
2613
+ ],
2614
+ "detectPopup": [
2615
+ {
2616
+ "visible": "#gdpr-banner"
2617
+ }
2618
+ ],
2619
+ "optIn": [
2620
+ {
2621
+ "waitForThenClick": "#gdpr-banner-accept"
2622
+ }
2623
+ ],
2624
+ "optOut": [
2625
+ {
2626
+ "waitForThenClick": "#gdpr-banner-decline"
2627
+ }
2628
+ ]
2629
+ },
2528
2630
  {
2529
2631
  "name": "ecosia",
2530
2632
  "vendorUrl": "https://www.ecosia.org/",
@@ -2567,7 +2669,7 @@
2567
2669
  ],
2568
2670
  "detectPopup": [
2569
2671
  {
2570
- "visible": ".ensModal"
2672
+ "visible": "#ensModalWrapper[style*=block]"
2571
2673
  }
2572
2674
  ],
2573
2675
  "optIn": [
@@ -2576,6 +2678,12 @@
2576
2678
  }
2577
2679
  ],
2578
2680
  "optOut": [
2681
+ {
2682
+ "wait": 500
2683
+ },
2684
+ {
2685
+ "visible": "#ensModalWrapper[style*=block]"
2686
+ },
2579
2687
  {
2580
2688
  "waitForThenClick": ".ensCheckbox:checked",
2581
2689
  "all": true
@@ -2597,7 +2705,7 @@
2597
2705
  ],
2598
2706
  "detectPopup": [
2599
2707
  {
2600
- "visible": "#ensNotifyBanner"
2708
+ "visible": "#ensNotifyBanner[style*=block]"
2601
2709
  }
2602
2710
  ],
2603
2711
  "optIn": [
@@ -2607,7 +2715,13 @@
2607
2715
  ],
2608
2716
  "optOut": [
2609
2717
  {
2610
- "waitForThenClick": "#ensRejectAll,#rejectAll,#ensRejectBanner"
2718
+ "wait": 500
2719
+ },
2720
+ {
2721
+ "visible": "#ensNotifyBanner[style*=block]"
2722
+ },
2723
+ {
2724
+ "waitForThenClick": "#ensRejectAll,#rejectAll,#ensRejectBanner,.rejectAll"
2611
2725
  }
2612
2726
  ]
2613
2727
  },
@@ -2884,16 +2998,19 @@
2884
2998
  "detectPopup": [
2885
2999
  {
2886
3000
  "visible": "#fides-overlay #fides-banner"
3001
+ },
3002
+ {
3003
+ "eval": "EVAL_FIDES_DETECT_POPUP"
2887
3004
  }
2888
3005
  ],
2889
3006
  "optIn": [
2890
3007
  {
2891
- "waitForThenClick": "#fides-banner [data-testid=\"Accept all-btn\"]"
3008
+ "waitForThenClick": "#fides-banner .fides-accept-all-button"
2892
3009
  }
2893
3010
  ],
2894
3011
  "optOut": [
2895
3012
  {
2896
- "waitForThenClick": "#fides-banner [data-testid=\"Reject all-btn\"]"
3013
+ "waitForThenClick": "#fides-banner .fides-reject-all-button"
2897
3014
  }
2898
3015
  ]
2899
3016
  },
@@ -3738,29 +3855,34 @@
3738
3855
  },
3739
3856
  "then": [
3740
3857
  {
3741
- "waitForThenClick": "#lanyard_root div[class*=buttons] > button[class*=secondaryButton]",
3858
+ "waitForThenClick": "#lanyard_root div[class*=buttons] > button[class*=secondaryButton], #lanyard_root button[class*=buttons-secondary]",
3742
3859
  "comment": "can be either settings or reject button"
3743
3860
  }
3744
3861
  ]
3745
3862
  },
3746
3863
  {
3747
- "waitFor": "#lanyard_root [aria-describedby=preference-description],#lanyard_root [aria-describedby=modal-description]",
3864
+ "waitFor": "#lanyard_root [aria-describedby=preference-description],#lanyard_root [aria-describedby=modal-description], #ketch-preferences",
3748
3865
  "timeout": 1000,
3749
3866
  "optional": true
3750
3867
  },
3751
3868
  {
3752
3869
  "if": {
3753
- "exists": "#lanyard_root [aria-describedby=preference-description],#lanyard_root [aria-describedby=modal-description]"
3870
+ "exists": "#lanyard_root [aria-describedby=preference-description],#lanyard_root [aria-describedby=modal-description], #ketch-preferences"
3754
3871
  },
3755
3872
  "then": [
3756
3873
  {
3757
- "waitForThenClick": "#lanyard_root button[class*=rejectButton]"
3874
+ "waitForThenClick": "#lanyard_root button[class*=rejectButton], #lanyard_root button[class*=rejectAllButton]"
3758
3875
  },
3759
3876
  {
3760
- "click": "#lanyard_root button[class*=confirmButton],#lanyard_root div[class*=actions_] > button:nth-child(1)"
3877
+ "click": "#lanyard_root button[class*=confirmButton],#lanyard_root div[class*=actions_] > button:nth-child(1), #lanyard_root button[class*=actionButton]"
3761
3878
  }
3762
3879
  ]
3763
3880
  }
3881
+ ],
3882
+ "test": [
3883
+ {
3884
+ "eval": "EVAL_KETCH_TEST"
3885
+ }
3764
3886
  ]
3765
3887
  },
3766
3888
  {
@@ -5162,6 +5284,42 @@
5162
5284
  }
5163
5285
  ]
5164
5286
  },
5287
+ {
5288
+ "name": "roblox",
5289
+ "vendorUrl": "https://roblox.com",
5290
+ "cosmetic": false,
5291
+ "runContext": {
5292
+ "main": true,
5293
+ "frame": false,
5294
+ "urlPattern": "^https://(www\\.)?roblox\\.com/"
5295
+ },
5296
+ "prehideSelectors": [],
5297
+ "detectCmp": [
5298
+ {
5299
+ "exists": ".cookie-banner-wrapper"
5300
+ }
5301
+ ],
5302
+ "detectPopup": [
5303
+ {
5304
+ "visible": ".cookie-banner-wrapper .cookie-banner"
5305
+ }
5306
+ ],
5307
+ "optIn": [
5308
+ {
5309
+ "waitForThenClick": ".cookie-banner-wrapper button.btn-cta-lg"
5310
+ }
5311
+ ],
5312
+ "optOut": [
5313
+ {
5314
+ "waitForThenClick": ".cookie-banner-wrapper button.btn-secondary-lg"
5315
+ }
5316
+ ],
5317
+ "test": [
5318
+ {
5319
+ "eval": "EVAL_ROBLOX_TEST"
5320
+ }
5321
+ ]
5322
+ },
5165
5323
  {
5166
5324
  "name": "rog-forum.asus.com",
5167
5325
  "runContext": {
@@ -6583,27 +6741,32 @@
6583
6741
  },
6584
6742
  {
6585
6743
  "name": "uswitch.com",
6744
+ "runContext": {
6745
+ "main": true,
6746
+ "frame": false,
6747
+ "urlPattern": "^https://(www\\.)?uswitch\\.com/"
6748
+ },
6586
6749
  "prehideSelectors": [
6587
- "#cookie-banner-wrapper"
6750
+ ".ucb"
6588
6751
  ],
6589
6752
  "detectCmp": [
6590
6753
  {
6591
- "exists": "#cookie-banner-wrapper"
6754
+ "exists": ".ucb-banner"
6592
6755
  }
6593
6756
  ],
6594
6757
  "detectPopup": [
6595
6758
  {
6596
- "visible": "#cookie-banner-wrapper"
6759
+ "visible": ".ucb-banner"
6597
6760
  }
6598
6761
  ],
6599
6762
  "optIn": [
6600
6763
  {
6601
- "click": "#cookie_banner_accept_mobile"
6764
+ "waitForThenClick": ".ucb-banner .ucb-btn-accept"
6602
6765
  }
6603
6766
  ],
6604
6767
  "optOut": [
6605
6768
  {
6606
- "click": "#cookie_banner_save"
6769
+ "waitForThenClick": ".ucb-banner .ucb-btn-save"
6607
6770
  }
6608
6771
  ]
6609
6772
  },
@@ -1,5 +1,8 @@
1
1
  import generateCMPTests from "../playwright/runner";
2
2
 
3
3
  generateCMPTests('aquasana.com', [
4
- 'https://www.aquasana.com/',
4
+ 'https://www.travelonbags.com/',
5
+ 'https://www.theworks.co.uk/',
6
+ 'https://www.martinguitar.com/',
7
+ 'https://www.hpb.com/',
5
8
  ], {});
@@ -0,0 +1,7 @@
1
+ import generateCMPTests from "../playwright/runner";
2
+
3
+ generateCMPTests('cookiecuttr', [
4
+ 'https://www.esa.int/',
5
+ 'https://hartgeld.com/',
6
+ 'https://ocr.org.uk/',
7
+ ]);
@@ -0,0 +1,7 @@
1
+ import generateCMPTests from "../playwright/runner";
2
+
3
+ generateCMPTests('ebay', [
4
+ 'https://www.ebay.co.uk/',
5
+ 'https://www.ebay.com/',
6
+ 'https://www.ebay.nl/',
7
+ ]);
@@ -2,4 +2,5 @@ import generateCMPTests from "../playwright/runner";
2
2
 
3
3
  generateCMPTests('fides', [
4
4
  'https://www.nytimes.com/',
5
+ 'https://vercel.com/',
5
6
  ]);
@@ -1,6 +1,12 @@
1
1
  import generateCMPTests from "../playwright/runner";
2
2
 
3
3
  generateCMPTests("ketch", [
4
+ "https://time.com/",
5
+ "https://www.rover.com/nl/",
6
+ "https://purple.com/",
7
+ "https://www.ncsasports.org/",
8
+ "https://www.pret.co.uk/en-GB",
9
+ "https://www.greatpetcare.com/",
4
10
  "https://www.smartsheet.com/",
5
11
  "https://www.ketch.com/",
6
12
  "https://www.forbes.com/",
@@ -0,0 +1,5 @@
1
+ import generateCMPTests from "../playwright/runner";
2
+
3
+ generateCMPTests('roblox', [
4
+ 'https://www.roblox.com/',
5
+ ]);