使用 Playwright 自动化测试同意横幅:实操指南

为什么要自动化同意测试

人工同意检查很容易被跳过,也很容易出错。营销部门新增的标签、主题更新或重构后的脚本加载器,都可能悄悄地在同意之前就触发追踪器,直到客户或监管机构发现,才会有人注意到。自动化浏览器测试把“我们的横幅还正常吗”这个问题变成每次发布都会运行的检查。Playwright 非常适合,因为它控制真实的浏览器、可以拦截网络请求,并提供全新、相互隔离的浏览器上下文。

测试上下文

每个测试都应从干净的浏览器上下文开始,没有 Cookie,也没有本地存储。这模拟的是首次访问的访客。为每个测试创建一个新的上下文,而不是复用页面,否则一个测试存储的选择会泄漏到下一个测试。

测试 1:同意之前什么都不触发

从页面开始加载的那一刻起,监听每一个网络请求。加载页面,等待其空闲,且不要触碰横幅。然后,将请求与你维护的追踪器域名列表(例如分析、广告和社交像素)进行比对。只要有任何请求发往列表中的域名,测试就失败。同时从上下文中读取 Cookie 列表,只要存在任何非必要的 Cookie,就判为失败。

测试 2:拒绝使一切保持关闭

  1. 在全新的上下文中加载页面。
  2. 点击横幅中的拒绝控件。
  3. 导航到另外两三个页面,其中包括一个带有嵌入式媒体的页面。
  4. 断言没有发出追踪器请求,也没有设置非必要的 Cookie。
  5. 重新加载并断言横幅保持隐藏,且选择被保留。

测试 3:接受后应启用的内容确实启用

点击接受,并断言预期的标签现在会触发,例如你的分析请求。这是为了防范相反的失败:横幅记录了同意却从不放行脚本,悄悄地让你损失数据和收入。

测试 4:细化的选择

打开偏好设置层,只启用一个目的并保存。断言与该目的相关联的标签会触发,而与其他目的相关联的标签不会触发。保留一个从目的到预期域名的小型映射文件,让测试读起来清晰,也便于更新。

测试 5:撤回

接受,然后通过你的持久链接重新打开设置并撤回。断言随后对追踪器的请求停止,且存储的同意状态反映了这一变化。注意,已设置的 Cookie 可能需要被显式移除,所以请确定你的政策是什么并对其进行测试。

测试 6:信号

如果你使用 Google Consent Mode,请在每次选择前后读取页面上下文中的数据层,并断言同意状态的值相符:默认为 denied,访客接受的类别为 granted。如果你使用 TCF 字符串,请通过 TCF API 读取,并断言它在选择之后存在并反映了该选择。

保持测试可靠

FlexyConsent 的定位

FlexyConsent 支持 IAB TCF 2.4、IAB GPP v1.1 和 Google Consent Mode v2,因此你在测试中断言的信号是可以从页面读取的标准信号。横幅提供 58 种语言;如果你服务多种语言,请加入一个至少加载一个非英语版本的测试。

要点总结

← 博客 阅读全部 →