Автоматические тесты баннера согласия на Playwright: практическое руководство
Зачем автоматизировать проверку согласия
Ручные проверки согласия легко пропустить и легко выполнить неправильно. Новый тег от маркетинга, обновление темы или переработанный загрузчик скриптов могут незаметно начать запускать трекеры до получения согласия, и никто этого не замечает, пока не заметит клиент или регулятор. Автоматические браузерные тесты превращают вопрос «ведёт ли себя наш баннер по-прежнему правильно?» во что-то, что выполняется при каждом релизе. Playwright хорошо подходит, потому что управляет настоящими браузерами, умеет перехватывать сетевые запросы и предоставляет свежие изолированные контексты браузера.
Тестовые контексты
Каждый тест должен начинаться с чистого контекста браузера, без cookie и локального хранилища. Это имитирует впервые пришедшего посетителя. Создавайте новый контекст для каждого теста, а не переиспользуйте страницу, иначе выбор, сохранённый одним тестом, перетечёт в следующий.
Тест 1. До согласия ничего не срабатывает
Слушайте все сетевые запросы с момента начала загрузки страницы. Загрузите страницу, дождитесь простоя и не трогайте баннер. Затем сравните запросы со списком доменов трекеров, который вы ведёте: аналитика, реклама и пиксели соцсетей. Тест падает, если какой-либо запрос уходит на домен из списка. Также прочитайте список cookie из контекста и считайте тест проваленным, если существует любая необязательная cookie.
Тест 2. Отказ сохраняет всё выключенным
- Загрузите страницу в новом контексте.
- Нажмите элемент отказа в баннере.
- Перейдите ещё на две-три страницы, включая одну со встроенными медиа.
- Проверьте, что запросов к трекерам не было и необязательные cookie не устанавливались.
- Перезагрузите страницу и проверьте, что баннер остаётся скрытым, а выбор сохраняется.
Тест 3. Принятие включает то, что должно
Нажмите «принять» и проверьте, что ожидаемые теги теперь срабатывают, например запрос вашей аналитики. Это защищает от обратного сбоя: баннер записывает согласие, но никогда не освобождает скрипты, что тихо стоит вам данных и дохода.
Тест 4. Детализированный выбор
Откройте уровень настроек, включите только одну цель и сохраните. Проверьте, что теги, связанные с этой целью, срабатывают, а теги, связанные с остальными, нет. Держите небольшой файл соответствия целей ожидаемым доменам, чтобы тест читался ясно и его было легко обновлять.
Тест 5. Отзыв
Примите, затем снова откройте настройки через вашу постоянную ссылку и отзовите согласие. Проверьте, что последующие запросы к трекерам прекращаются и сохранённое состояние согласия отражает изменение. Учтите, что уже установленные cookie, возможно, придётся удалять явно, поэтому определите свою политику и проверьте её.
Тест 6. Сигналы
Если вы используете Google Consent Mode, прочитайте data layer в контексте страницы до и после каждого выбора и проверьте, что значения состояния согласия совпадают: denied по умолчанию, granted для категорий, которые принял посетитель. Если вы используете строку TCF, прочитайте её через TCF API и проверьте, что она присутствует после выбора и отражает его.
Как сделать тесты надёжными
- Используйте устойчивые селекторы, такие как тестовые атрибуты или доступные роли, вместо CSS-классов, которые меняются при обновлении дизайна.
- Ждите явных условий, а не фиксированных задержек.
- Запускайте тесты на копии стейджинга с той же настройкой тегов, что и в продакшене.
- Запускайте небольшую версию набора по расписанию, а не только при деплое, потому что сторонние скрипты меняются без вашего релиза.
- Проверяйте основные регионы, которые вы обслуживаете, задавая геолокацию или используя переопределение региона, которое предлагает ваша CMP.
Где место FlexyConsent
FlexyConsent поддерживает IAB TCF 2.4, IAB GPP v1.1 и Google Consent Mode v2, поэтому сигналы, которые вы проверяете в тестах, стандартные, и их можно прочитать со страницы. Баннер доступен на 58 языках; если вы обслуживаете несколько, добавьте тест, загружающий хотя бы одну неанглийскую версию.
Главные выводы
- Используйте свежий контекст браузера для каждого теста, чтобы имитировать впервые пришедшего посетителя.
- Проверяйте сетевые запросы и cookie, а не только внешний вид баннера.
- Покройте четыре пути: без взаимодействия, отказ, принятие и отзыв.
- Проверяйте сигналы согласия и в data layer, и через TCF API.
- Запускайте набор при релизе и по расписанию, чтобы ловить дрейф из-за сторонних скриптов.