@duckduckgo/autoconsent 16.50.0 → 16.51.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 (187) hide show
  1. package/.agents/skills/optimize-button-patterns/SKILL.md +4 -4
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +89 -0
  4. package/build.sh +2 -0
  5. package/data/labelled-button-texts.csv +36 -36
  6. package/dist/addon-firefox/compact-rules.json +1 -1
  7. package/dist/addon-firefox/content.bundle.js +48 -41
  8. package/dist/addon-firefox/manifest.json +1 -1
  9. package/dist/addon-firefox/rule-index.json +1 -1
  10. package/dist/addon-firefox/rules.json +1 -1
  11. package/dist/addon-mv3/compact-rules.json +1 -1
  12. package/dist/addon-mv3/content.bundle.js +48 -41
  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 +48 -41
  17. package/dist/autoconsent.esm.js +48 -41
  18. package/dist/autoconsent.playwright.js +49 -41
  19. package/dist/autoconsent.standalone.js +49 -42
  20. package/dist/heuristics.cjs.js +886 -0
  21. package/dist/heuristics.mjs +847 -0
  22. package/dist/types/heuristic-classify.d.ts +16 -0
  23. package/dist/types/heuristics.d.ts +2 -9
  24. package/dist/types/types.d.ts +3 -5
  25. package/lib/heuristic-classify.ts +136 -0
  26. package/lib/heuristic-patterns.ts +18 -14
  27. package/lib/heuristics.ts +3 -124
  28. package/lib/types.ts +3 -5
  29. package/lib/web.ts +1 -1
  30. package/package.json +7 -2
  31. package/playwright/content.ts +5 -0
  32. package/readme.md +12 -0
  33. package/rules/autoconsent/abcacupuncture1.json +34 -0
  34. package/rules/autoconsent/aceodds.json +13 -0
  35. package/rules/autoconsent/allabout-japan.json +42 -0
  36. package/rules/autoconsent/avvio.json +22 -0
  37. package/rules/autoconsent/axeptio.json +5 -2
  38. package/rules/autoconsent/bdirect-booking-engine.json +33 -0
  39. package/rules/autoconsent/berelax.com.json +33 -0
  40. package/rules/autoconsent/bigid.json +59 -0
  41. package/rules/autoconsent/bluepark.json +31 -0
  42. package/rules/autoconsent/burpee-com.json +5 -1
  43. package/rules/autoconsent/bynder.json +33 -0
  44. package/rules/autoconsent/cinemaplus.json +9 -0
  45. package/rules/autoconsent/columbia-privacy-notice.json +32 -0
  46. package/rules/autoconsent/complianz-notice.json +1 -1
  47. package/rules/autoconsent/cookieconsent2-legacy.json +44 -0
  48. package/rules/autoconsent/cookiesjsr.json +27 -0
  49. package/rules/autoconsent/copaamerica.json +29 -0
  50. package/rules/autoconsent/cornerstone-brands.json +51 -0
  51. package/rules/autoconsent/darkounity.com.json +35 -0
  52. package/rules/autoconsent/duda-cookie-notification.json +41 -0
  53. package/rules/autoconsent/endocrine.org.json +35 -0
  54. package/rules/autoconsent/ezoic.json +2 -2
  55. package/rules/autoconsent/fis-data-exchange.json +13 -0
  56. package/rules/autoconsent/getproven.json +33 -0
  57. package/rules/autoconsent/givedirectly.json +36 -0
  58. package/rules/autoconsent/godaddy-website-builder-cosmetic.json +13 -0
  59. package/rules/autoconsent/godaddy-website-builder.json +9 -0
  60. package/rules/autoconsent/guesty.json +31 -0
  61. package/rules/autoconsent/gundam-base-entry.json +40 -0
  62. package/rules/autoconsent/hearst-us.json +1 -1
  63. package/rules/autoconsent/indy-systems.json +26 -0
  64. package/rules/autoconsent/ing-nl.json +54 -0
  65. package/rules/autoconsent/iubenda.json +25 -3
  66. package/rules/autoconsent/lucrin.json +18 -0
  67. package/rules/autoconsent/makitatools.json +41 -0
  68. package/rules/autoconsent/milestone-internet.json +32 -0
  69. package/rules/autoconsent/nhm-ac-uk.json +29 -0
  70. package/rules/autoconsent/npo-ccm.json +42 -0
  71. package/rules/autoconsent/opalcollection-com.json +12 -0
  72. package/rules/autoconsent/orw-cookie-banner.json +42 -0
  73. package/rules/autoconsent/osf-io.json +29 -0
  74. package/rules/autoconsent/palace-company.json +13 -0
  75. package/rules/autoconsent/paytronix.json +30 -0
  76. package/rules/autoconsent/pitt-edu.json +12 -0
  77. package/rules/autoconsent/pizzapilgrims.co.uk.json +49 -0
  78. package/rules/autoconsent/podimo.json +73 -0
  79. package/rules/autoconsent/publicmobile.json +16 -0
  80. package/rules/autoconsent/rakshaos.json +45 -0
  81. package/rules/autoconsent/rutjes.json +13 -0
  82. package/rules/autoconsent/saturdaysnyc.json +33 -0
  83. package/rules/autoconsent/serpstat-com.json +13 -0
  84. package/rules/autoconsent/shopquarters.json +41 -0
  85. package/rules/autoconsent/shopware.json +71 -0
  86. package/rules/autoconsent/simpleview-cookie-banner.json +27 -0
  87. package/rules/autoconsent/solvhealth-com.json +12 -0
  88. package/rules/autoconsent/spermidinelife-us.json +29 -0
  89. package/rules/autoconsent/squarespace-cookie-banner.json +1 -1
  90. package/rules/autoconsent/squarespace-cookie-notice.json +29 -0
  91. package/rules/autoconsent/store2000-fr.json +17 -0
  92. package/rules/autoconsent/tempest-cookie-notice.json +9 -0
  93. package/rules/autoconsent/termsfeed.json +4 -4
  94. package/rules/autoconsent/therealest.json +42 -0
  95. package/rules/autoconsent/tineye.json +35 -0
  96. package/rules/autoconsent/tk-aerztefuehrer.de.json +18 -0
  97. package/rules/autoconsent/tplink.json +57 -9
  98. package/rules/autoconsent/trust360.json +29 -0
  99. package/rules/autoconsent/up-cookie-consent.json +53 -0
  100. package/rules/autoconsent/uw-madison-cookieconsent.json +10 -0
  101. package/rules/autoconsent/vowels.json +13 -0
  102. package/rules/autoconsent/web-rewind.com.json +21 -0
  103. package/rules/autoconsent/wildling-com.json +29 -0
  104. package/rules/autoconsent/worldbank.json +30 -0
  105. package/rules/autoconsent/yuntrack.json +50 -0
  106. package/rules/compact-rules.json +1 -1
  107. package/rules/rule-index.json +1 -1
  108. package/rules/rules.json +1 -1
  109. package/scripts/benchmark-button-classification.ts +18 -3
  110. package/scripts/button-text-benchmark.ts +5 -5
  111. package/tests/abcacupuncture1.spec.ts +3 -0
  112. package/tests/aceodds.spec.ts +3 -0
  113. package/tests/allabout-japan.spec.ts +3 -0
  114. package/tests/avvio.spec.ts +8 -0
  115. package/tests/axeptio.spec.ts +3 -0
  116. package/tests/bdirect-booking-engine.spec.ts +9 -0
  117. package/tests/berelax.com.spec.ts +5 -0
  118. package/tests/bigid.spec.ts +8 -0
  119. package/tests/bluepark.spec.ts +8 -0
  120. package/tests/burpee-com.spec.ts +2 -0
  121. package/tests/bynder.spec.ts +3 -0
  122. package/tests/cinemaplus.spec.ts +8 -0
  123. package/tests/columbia-privacy-notice.spec.ts +8 -0
  124. package/tests/complianz-notice.spec.ts +7 -3
  125. package/tests/cookieconsent2-legacy.spec.ts +8 -0
  126. package/tests/cookiesjsr.spec.ts +9 -0
  127. package/tests/copaamerica.spec.ts +3 -0
  128. package/tests/cornerstone-brands.spec.ts +8 -0
  129. package/tests/darkounity.com.spec.ts +6 -0
  130. package/tests/duda-cookie-notification.spec.ts +8 -0
  131. package/tests/endocrine.org.spec.ts +3 -0
  132. package/tests/ezoic.spec.ts +1 -1
  133. package/tests/fis-data-exchange.spec.ts +9 -0
  134. package/tests/getproven.spec.ts +5 -0
  135. package/tests/givedirectly.spec.ts +3 -0
  136. package/tests/godaddy-website-builder-cosmetic.spec.ts +7 -0
  137. package/tests/godaddy-website-builder.spec.ts +8 -0
  138. package/tests/guesty.spec.ts +7 -0
  139. package/tests/gundam-base-entry.spec.ts +3 -0
  140. package/tests/hearst-us.spec.ts +1 -0
  141. package/tests/indy-systems.spec.ts +8 -0
  142. package/tests/ing-nl.spec.ts +6 -0
  143. package/tests/iubenda.spec.ts +5 -0
  144. package/tests/lucrin.spec.ts +3 -0
  145. package/tests/makitatools.spec.ts +5 -0
  146. package/tests/milestone-internet.spec.ts +8 -0
  147. package/tests/nhm-ac-uk.spec.ts +3 -0
  148. package/tests/npo-ccm.spec.ts +17 -0
  149. package/tests/opalcollection-com.spec.ts +3 -0
  150. package/tests/orw-cookie-banner.spec.ts +5 -0
  151. package/tests/osf-io.spec.ts +3 -0
  152. package/tests/palace-company.spec.ts +8 -0
  153. package/tests/paytronix.spec.ts +7 -0
  154. package/tests/pitt-edu.spec.ts +3 -0
  155. package/tests/pizzapilgrims.co.uk.spec.ts +3 -0
  156. package/tests/podimo.spec.ts +3 -0
  157. package/tests/publicmobile.spec.ts +3 -0
  158. package/tests/rakshaos.spec.ts +9 -0
  159. package/tests/rutjes.spec.ts +3 -0
  160. package/tests/saturdaysnyc.spec.ts +3 -0
  161. package/tests/serpstat-com.spec.ts +3 -0
  162. package/tests/shopquarters.spec.ts +5 -0
  163. package/tests/shopware.spec.ts +8 -0
  164. package/tests/simpleview-cookie-banner.spec.ts +10 -0
  165. package/tests/solvhealth-com.spec.ts +10 -0
  166. package/tests/spermidinelife-us.spec.ts +3 -0
  167. package/tests/squarespace-cookie-notice.spec.ts +9 -0
  168. package/tests/store2000-fr.spec.ts +5 -0
  169. package/tests/tempest-cookie-notice.spec.ts +7 -0
  170. package/tests/termsfeed.spec.ts +4 -0
  171. package/tests/therealest.spec.ts +6 -0
  172. package/tests/tineye.spec.ts +3 -0
  173. package/tests/tk-aerztefuehrer.de.spec.ts +6 -0
  174. package/tests/tplink.spec.ts +11 -1
  175. package/tests/trust360.spec.ts +8 -0
  176. package/tests/up-cookie-consent.spec.ts +9 -0
  177. package/tests/uw-madison-cookieconsent.spec.ts +7 -0
  178. package/tests/vowels.spec.ts +3 -0
  179. package/tests/web-rewind.com.spec.ts +5 -0
  180. package/tests/wildling-com.spec.ts +3 -0
  181. package/tests/worldbank.spec.ts +7 -0
  182. package/tests/yuntrack.spec.ts +6 -0
  183. package/tests-wtr/heuristics/button-classification-accuracy.test.ts +9 -5
  184. package/tests-wtr/heuristics/get-potential-popups.test.ts +28 -0
  185. package/tests-wtr/heuristics/heuristics-utils.test.ts +2 -6
  186. package/tsconfig.build.json +1 -1
  187. package/tsconfig.heuristics.json +10 -0
@@ -5,7 +5,7 @@
5
5
  import fs from 'fs';
6
6
  import path from 'path';
7
7
  import { parseArgs } from 'util';
8
- import { classifyButtonTextRegex } from '../lib/heuristics';
8
+ import { classifyButtonTextRegex } from '../lib/heuristic-classify';
9
9
  import { buildLabelBenchmarks, classifyRows, formatExample, LabelBenchmark, parseButtonTextCsv, pct } from './button-text-benchmark';
10
10
 
11
11
  const DEFAULT_CSV_PATH = path.join(__dirname, '../data/labelled-button-texts.csv');
@@ -50,6 +50,18 @@ function printLabelBenchmark(b: LabelBenchmark) {
50
50
  }
51
51
  }
52
52
 
53
+ function printOtherBenchmark(b: LabelBenchmark) {
54
+ console.log(`\n ${b.label}`);
55
+ console.log(
56
+ ` correctly labelled: ${b.rowCorrect}/${b.rowSupport} rows (${pct(b.rowCorrect, b.rowSupport)}), ${b.weightedCorrect}/${b.weightedSupport} weighted (${pct(b.weightedCorrect, b.weightedSupport)})`,
57
+ );
58
+ // false positives for 'other' are missed buttons, already listed under each button label
59
+ console.log(` top misclassified (labelled other, predicted a button type):${b.missedExamples.length === 0 ? ' (none)' : ''}`);
60
+ for (const example of b.missedExamples.slice(0, opts.top)) {
61
+ console.log(` ${formatExample(example)}`);
62
+ }
63
+ }
64
+
53
65
  function main() {
54
66
  const inputPath = path.resolve(opts.input);
55
67
  const rows = parseButtonTextCsv(fs.readFileSync(inputPath, 'utf8'));
@@ -58,18 +70,21 @@ function main() {
58
70
  process.exit(1);
59
71
  }
60
72
 
61
- const benchmarks = buildLabelBenchmarks(classifyRows(rows, classifyButtonTextRegex));
73
+ const allBenchmarks = buildLabelBenchmarks(classifyRows(rows, classifyButtonTextRegex));
74
+ const benchmarks = allBenchmarks.filter((b) => b.label !== 'other');
75
+ const otherBenchmark = allBenchmarks.find((b) => b.label === 'other')!;
62
76
  const total = (key: 'rowSupport' | 'weightedSupport' | 'rowCorrect' | 'weightedCorrect' | 'weightedFalsePositives') =>
63
77
  benchmarks.reduce((sum, b) => sum + b[key], 0);
64
78
 
65
79
  console.log(`Input: ${inputPath} (${rows.length} labelled rows)`);
66
- console.log('\nclassifyButtonTextRegex benchmark (excluding other)');
80
+ console.log('\nclassifyButtonTextRegex benchmark (button labels; false positives include rows labelled other)');
67
81
  console.log(
68
82
  ` correctly labelled: ${total('rowCorrect')}/${total('rowSupport')} rows, ${total('weightedCorrect')}/${total('weightedSupport')} weighted (${pct(total('weightedCorrect'), total('weightedSupport'))})`,
69
83
  );
70
84
  console.log(` false positives (weighted): ${total('weightedFalsePositives')}`);
71
85
  console.log(` missed (weighted): ${total('weightedSupport') - total('weightedCorrect')}`);
72
86
  benchmarks.forEach(printLabelBenchmark);
87
+ printOtherBenchmark(otherBenchmark);
73
88
  }
74
89
 
75
90
  main();
@@ -72,14 +72,14 @@ function byOccurence(a: ButtonTextRow, b: ButtonTextRow): number {
72
72
  }
73
73
 
74
74
  /**
75
- * Per-label stats, in BENCHMARK_LABELS order. Rows labelled 'other' are excluded, matching the original collector benchmark.
75
+ * Per-label stats, in VALID_LABELS order ('other' last).
76
+ * False positives are counted against every row, so an 'other' row predicted as a button type counts against that type.
76
77
  */
77
78
  export function buildLabelBenchmarks(results: ClassifiedButtonTextRow[]): LabelBenchmark[] {
78
- const benchmarkResults = results.filter((r) => r.label !== 'other');
79
- return BENCHMARK_LABELS.map((label) => {
80
- const support = benchmarkResults.filter((r) => r.label === label);
79
+ return VALID_LABELS.map((label) => {
80
+ const support = results.filter((r) => r.label === label);
81
81
  const correct = support.filter((r) => r.predicted === label);
82
- const falsePositives = benchmarkResults.filter((r) => r.predicted === label && r.label !== label);
82
+ const falsePositives = results.filter((r) => r.predicted === label && r.label !== label);
83
83
  return {
84
84
  label,
85
85
  rowSupport: support.length,
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('abcacupuncture1', ['https://abcacupuncture1.com/natural-remedies-for-sinus-problems-using-eastern-medicine.html']);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('aceodds.com', ['https://www.aceodds.com/bet-calculator/odds-converter.html']);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('allabout-japan', ['https://allabout-japan.com/en/']);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('avvio', [
4
+ 'https://ampersandhotel.com/',
5
+ 'https://www.athollpalace.com/',
6
+ 'https://www.lensfieldhotel.co.uk/',
7
+ 'https://www.greatnationalhotels.com/',
8
+ ]);
@@ -11,3 +11,6 @@ generateCMPTests('axeptio', [
11
11
  generateCMPTests('axeptio', ['https://mistral.ai/pricing', 'https://mistral.ai/news/le-chat-dives-deep'], {
12
12
  testOptIn: false,
13
13
  });
14
+
15
+ // Widget opens after a configured delay
16
+ generateCMPTests('axeptio', ['https://www.memo-de-vie.org/qui-sommes-nous', 'https://simmons.fr/', 'https://www.lyoncapitale.fr/']);
@@ -0,0 +1,9 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('bdirect-booking-engine', [
4
+ 'https://bookings.shibaparkhotel.com/',
5
+ 'https://bookings.glamdaystyle.jp/',
6
+ 'https://bookings.kafuu-okinawa.jp/',
7
+ 'https://bookings.islandnagasaki.jp/',
8
+ 'https://bookings.aquasense.jp/',
9
+ ]);
@@ -0,0 +1,5 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('berelax.com', ['https://berelax.com/'], {
4
+ testSelfTest: false,
5
+ });
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('bigid', [
4
+ 'https://www.muchloved.com/',
5
+ 'https://www.remitly.com/',
6
+ 'https://www.zs.com/',
7
+ 'https://www.dexus.com/', // no reject button on the first layer
8
+ ]);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('bluepark', [
4
+ 'https://www.shoeinsoles.co.uk/blog/superfeet-green-vs-superfeet-orange-insoles.html',
5
+ 'https://www.bluepark.co.uk/',
6
+ 'https://www.torchdirect.co.uk/',
7
+ 'https://www.12voltplanet.co.uk/',
8
+ ]);
@@ -11,4 +11,6 @@ generateCMPTests('burpee.com', [
11
11
  // Allow button only: the banner is hidden
12
12
  'https://www.oxfordproducts.com/',
13
13
  'https://www.testequipmentdepot.com/',
14
+ // Allow button only, with a body class scroll lock and backdrop
15
+ 'https://www.leonpaul.com/',
14
16
  ]);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('bynder', ['https://www.bynder.com/en/', 'https://www.stokertje.nl/']);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('cinemaplus', [
4
+ 'https://www.yourneighborhoodtheatre.com/',
5
+ 'https://www.brewvies.com/',
6
+ 'https://www.linwaycinema.com/',
7
+ 'https://www.cmxcinemas.com/',
8
+ ]);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('columbia-privacy-notice', [
4
+ 'https://cas.columbia.edu/cas/login?service=https%3A%2F%2Fwebphoto.columbia.edu%2Fwps%2Fstatus',
5
+ 'https://www.jazzstudiesonline.org/',
6
+ 'https://artsinitiative.columbia.edu/',
7
+ 'https://maap.columbia.edu/',
8
+ ]);
@@ -1,5 +1,9 @@
1
1
  import generateCMPTests from '../playwright/runner';
2
2
 
3
- generateCMPTests('Complianz notice', ['https://yrc.com/', 'https://www.worldometers.info/'], {
4
- skipRegions: ['GB'],
5
- });
3
+ generateCMPTests('Complianz notice', [
4
+ 'https://groups.io/',
5
+ 'https://www.tuxedocomputers.com/',
6
+ // banner with a blocking screen overlay
7
+ 'https://harleypsychologygroup.com/tests/depression-children/',
8
+ 'https://infobunny.com/',
9
+ ]);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('cookieconsent2-legacy', [
4
+ 'https://www.celemony.com/en/start',
5
+ 'https://www.klaxonmobility.com/',
6
+ 'https://www.eclypsostudio.com/',
7
+ 'https://kaolin.se/',
8
+ ]);
@@ -0,0 +1,9 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('cookiesjsr', [
4
+ 'https://www.aepd.es/',
5
+ 'https://maths.org/',
6
+ 'https://www.csir.co.za/',
7
+ 'https://www.drive.gr/',
8
+ 'https://www.sralab.org/',
9
+ ]);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('copaamerica', ['https://copaamerica.com/en/match-schedule/', 'https://copaamerica.com/es/']);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('cornerstone-brands', [
4
+ 'https://www.garnethill.com/',
5
+ 'https://www.frontgate.com/',
6
+ 'https://www.ballarddesigns.com/',
7
+ 'https://www.grandinroad.com/',
8
+ ]);
@@ -0,0 +1,6 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ const urls = ['https://darkounity.com/blog/how-i-learned-unity-the-wrong-way'];
4
+
5
+ // the banner is only shown in GDPR regions
6
+ generateCMPTests('darkounity.com', urls, { onlyRegions: ['DE', 'GB', 'FR'] });
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('duda-cookie-notification', [
4
+ 'https://www.swimjim.com/blog/8-different-swimming-styles-strokes',
5
+ 'https://www.shootq.com/',
6
+ 'https://www.hgar.com/',
7
+ 'https://www.sdr-radio.com/',
8
+ ]);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('endocrine.org', ['https://www.endocrine.org/']);
@@ -1,5 +1,5 @@
1
1
  import generateCMPTests from '../playwright/runner';
2
2
 
3
- generateCMPTests('EZoic', ['https://computingforgeeks.com/'], {
3
+ generateCMPTests('EZoic', ['https://wordleplay.com/', 'https://pytutorial.com/', 'https://www.metric-conversions.org/'], {
4
4
  skipRegions: ['US'],
5
5
  });
@@ -0,0 +1,9 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ const urls = [
4
+ 'https://services.dataexchange.fiscloudservices.com/LogOn/1309821/3438949/5024536/5039357',
5
+ 'https://services.dataexchange.fiscloudservices.com/LogOn/2622938',
6
+ 'https://services.dataexchange.fiscloudservices.com/LogOn/1964272',
7
+ ];
8
+
9
+ generateCMPTests('fis-data-exchange', urls);
@@ -0,0 +1,5 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('getproven', ['https://usv.getproven.com/auth', 'https://plus.squarepeg.vc/', 'https://directory.guaranteedirish.ie/'], {
4
+ testSelfTest: false,
5
+ });
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('givedirectly', ['https://www.givedirectly.org/aidcuts/', 'https://www.givedirectly.org/faq/']);
@@ -0,0 +1,7 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('godaddy-website-builder-cosmetic', [
4
+ 'https://riverandrailkitchen.com/',
5
+ 'https://retroplanet.com/',
6
+ 'https://keithanda.com/',
7
+ ]);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('godaddy-website-builder', [
4
+ 'https://tracc.it/',
5
+ 'https://videofactory.net/',
6
+ 'https://number1victimofcrime.com/',
7
+ 'https://buxi.io/',
8
+ ]);
@@ -0,0 +1,7 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('guesty', [
4
+ 'https://goodliferesorts.guestybookings.com/en',
5
+ 'https://heavenlyhosts.guestybookings.com/en',
6
+ 'https://superstays.guestybookings.com/en',
7
+ ]);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('gundam-base-entry', ['https://www.gundam-base-entry.net/login']);
@@ -4,4 +4,5 @@ generateCMPTests('hearst-us', [
4
4
  'https://www.menshealth.com/grooming/g38214428/best-spf-moisturizer-for-men/',
5
5
  'https://www.womenshealthmag.com/',
6
6
  'https://www.cosmopolitan.com/',
7
+ 'https://www.seventeen.com/',
7
8
  ]);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('indy-systems', [
4
+ 'https://home.caribbeancinemas.com/home?primary=true',
5
+ 'https://www.gtcmovies.com/home',
6
+ 'https://www.cwtheaters.com/home',
7
+ 'https://www.esquiretheatre.com/home',
8
+ ]);
@@ -0,0 +1,6 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ const urls = ['https://www.ing.nl/particulier'];
4
+
5
+ generateCMPTests('ing-nl', urls, { mobile: true });
6
+ generateCMPTests('ing-nl', urls, { mobile: false });
@@ -9,3 +9,8 @@ generateCMPTests('iubenda', ['https://www.yogurtland.com/', 'https://www.greenpl
9
9
  skipRegions: ['AU'],
10
10
  testSelfTest: false,
11
11
  });
12
+
13
+ // "Do Not Sell" CCPA notice in California, GDPR banner in Europe
14
+ generateCMPTests('iubenda', ['https://newatlas.com/', 'https://plan.io/'], {
15
+ skipRegions: ['US', 'AU'],
16
+ });
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('lucrin', ['https://www.lucrin.com/', 'https://www.lucrin.de/', 'https://www.lucrin.co.uk/']);
@@ -0,0 +1,5 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('makitatools', ['https://www.makitatools.com/products/details/DRC300PT'], {
4
+ onlyRegions: ['US'],
5
+ });
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('milestone-internet', [
4
+ 'https://www.tumblingriver.com/',
5
+ 'https://www.vagabondinn.com/',
6
+ 'https://www.otesaga.com/',
7
+ 'https://www.hoteldupont.com/',
8
+ ]);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('nhm.ac.uk', ['https://www.nhm.ac.uk/']);
@@ -0,0 +1,17 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests(
4
+ 'npo-ccm',
5
+ [
6
+ 'https://www.powned.tv/',
7
+ 'https://www.bnnvara.nl/',
8
+ 'https://www.vpro.nl/',
9
+ 'https://www.kro-ncrv.nl/',
10
+ 'https://www.wnl.tv/',
11
+ 'https://npo.nl/',
12
+ 'https://www.ntr.nl/',
13
+ ],
14
+ {
15
+ testSelfTest: false,
16
+ },
17
+ );
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('opalcollection-com', ['https://www.opalcollection.com/harborside/', 'https://www.opalcollection.com/'], {});
@@ -0,0 +1,5 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('orw-cookie-banner', ['https://rwguildgalleryny.com/', 'https://www.comodisimos.us/'], {
4
+ testSelfTest: false,
5
+ });
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('osf.io', ['https://osf.io/']);
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('palace-company', [
4
+ 'https://www.moonpalace.com/',
5
+ 'https://www.palaceresorts.com/',
6
+ 'https://www.leblancsparesorts.com/',
7
+ 'https://www.baglionihotels.com/',
8
+ ]);
@@ -0,0 +1,7 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('paytronix', [
4
+ 'https://andyspizza.myguestaccount.com/en-us/guest/',
5
+ 'https://40north.myguestaccount.com/en-us/guest/',
6
+ 'https://agape.myguestaccount.com/en-us/guest/',
7
+ ]);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('pitt-edu', ['https://admissions.pitt.edu/visit/schedule/', 'https://financialaid.pitt.edu/'], {});
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('pizzapilgrims.co.uk', ['https://www.pizzapilgrims.co.uk/pizzerias/euston/']);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('podimo', ['https://podimo.com/']);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('publicmobile', ['https://publicmobile.ca/en/', 'https://publicmobile.ca/fr/']);
@@ -0,0 +1,9 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('rakshaos', [
4
+ 'https://store.waitbutwhy.com/',
5
+ 'https://mightybright.com/',
6
+ 'https://madeinstroud.co.uk/',
7
+ // no decline button on the banner
8
+ 'https://taschendeal.de/',
9
+ ]);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('rutjes', ['https://www.rutjespaardenboxen.nl/', 'https://www.rutjespferdeboxen.de/']);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('saturdaysnyc', ['https://www.saturdaysnyc.com/']);
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('serpstat-com', ['https://serpstat.com/', 'https://serpstat.com/blog/']);
@@ -0,0 +1,5 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('shopquarters', ['https://shopquarters.com/'], {
4
+ testSelfTest: false,
5
+ });
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('shopware', [
4
+ 'https://www.platinlux.com/en/s8-55056/floating-globe-smokey-e27-led-bulb-by-segula',
5
+ 'https://stoffkontor.eu/',
6
+ 'https://www.mdf-verpackungen.de/',
7
+ 'https://www.noblewine.de/',
8
+ ]);
@@ -0,0 +1,10 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('simpleview-cookie-banner', [
4
+ 'https://www.poconomountains.com/listing/the-frogtown-chophouse/4896/',
5
+ 'https://www.visitmadison.com/',
6
+ 'https://www.gotocatalina.com/',
7
+ 'https://www.experiencescottsdale.com/',
8
+ 'https://www.visittampabay.com/',
9
+ 'https://www.visitraleigh.com/',
10
+ ]);
@@ -0,0 +1,10 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ // the notice is shown in all regions, but non-US visitors get a bot challenge first
4
+ generateCMPTests(
5
+ 'solvhealth.com',
6
+ ['https://www.solvhealth.com/pa/c/east-stroudsburg-pa-srv-dot-physicals', 'https://www.solvhealth.com/urgent-care/ny/new-york'],
7
+ {
8
+ onlyRegions: ['US'],
9
+ },
10
+ );
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('spermidinelife-us', ['https://spermidinelife.us/']);
@@ -0,0 +1,9 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('squarespace-cookie-notice', [
4
+ 'https://www.carraghersnyc.com/',
5
+ 'https://www.chelseamarket.com/',
6
+ 'https://www.tested.com/',
7
+ 'https://www.pronuncian.com/',
8
+ 'https://www.americanalpineclub.org/',
9
+ ]);
@@ -0,0 +1,5 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('store2000.fr', ['https://store2000.fr/volet-roulant/reparation-volet-roulant/lyon/'], {
4
+ testSelfTest: false,
5
+ });
@@ -0,0 +1,7 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests(
4
+ 'tempest-cookie-notice',
5
+ ['https://www.visitpittsburgh.com/things-to-do/', 'https://www.visitspokane.com/', 'https://www.visitoverlandpark.com/'],
6
+ {},
7
+ );
@@ -4,4 +4,8 @@ generateCMPTests('termsfeed', [
4
4
  'https://ftbwiki.org/Feed_The_Beast_Wiki',
5
5
  'https://inspirationaladventures.com/',
6
6
  'http://www.campingplatz-suche.com/',
7
+ // freeprivacypolicy.com variant
8
+ 'https://grovemade.com/',
9
+ 'https://loot.farm/',
10
+ 'https://tcdecks.net/',
7
11
  ]);
@@ -0,0 +1,6 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ // saving preferences reloads the page when analytics was on by default (US), which interrupts the self-test
4
+ generateCMPTests('therealest', ['https://mls.therealest.com/', 'https://therealest.com/'], {
5
+ testSelfTest: false,
6
+ });
@@ -0,0 +1,3 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('tineye', ['https://tineye.com/']);
@@ -0,0 +1,6 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('tk-aerztefuehrer.de', ['https://www.tk-aerztefuehrer.de/TK/Suche_SN/index.js?a=FS1'], {
4
+ // the site reloads the page after saving the selection
5
+ testSelfTest: false,
6
+ });
@@ -1,3 +1,13 @@
1
1
  import generateCMPTests from '../playwright/runner';
2
2
 
3
- generateCMPTests('tplink', ['https://www.tp-link.com/nl/', 'https://www.tp-link.com/us/']);
3
+ generateCMPTests('tplink', [
4
+ 'https://www.tp-link.com/nl/',
5
+ 'https://www.tp-link.com/us/',
6
+ 'https://www.tp-link.com/us/home-networking/wifi-router/tl-wr3602be/',
7
+ 'https://www.omadanetworks.com/us/',
8
+ ]);
9
+
10
+ // opting out reloads the page, which interrupts the self-test
11
+ generateCMPTests('tplink', ['https://www.kasasmart.com/us'], {
12
+ testSelfTest: false,
13
+ });
@@ -0,0 +1,8 @@
1
+ import generateCMPTests from '../playwright/runner';
2
+
3
+ generateCMPTests('trust360', [
4
+ 'https://www.sompo-japan.co.jp/webloan/',
5
+ 'https://www.privtech.co.jp/',
6
+ 'https://www.nipponsanso.com/',
7
+ 'https://www.tn-sanso.co.jp/',
8
+ ]);