Блокирование некоторых тегов GTM при запуске тестов TestCafe - используйте dataLayer? - PullRequest
1 голос
/ 11 марта 2020

Хотите знать, как предотвратить запуск метки GTM. Я нашел https://rbardini.com/automating-gtm-data-layer-tests/, который указывает на выборку переменной dataLayer и сравнение ее в утверждении, но это выглядит как неуклюжий подход, когда вы хотите писать в dataLayer на каждой странице.

Например, он предлагает:

const getDataLayer = ClientFunction(() => window.dataLayer)

Мы используем Google Tag Manager для автоматической загрузки тегов на наш сайт. К сожалению, одним из них является CloudIQ (от PayPal), который открывает оверлей iframe, предлагая подписку на новостную рассылку или возможность сохранить вашу корзину покупок. Триггером в нашей настройке GTM для этого тега является просто «Все страницы». Когда он появляется, он обычно блокирует наш тест, потому что селекторы не могут быть нажаты.

Наш поток страниц охватывает несколько страниц интернет-магазина, например:

  • посетите домашнюю страницу, нажмите продукт - перейдет на страницу продукта
  • щелкните некоторые параметры на странице продукта, затем добавьте в корзину
  • go через процесс оформления заказа

Таким образом, возможно, посещение многих страниц из-за действий, связанных с кликами.

В GTM есть возможность определять переменные и затем использовать их в исключениях для тега, поэтому я могу предотвратить запуск тега CloudIQ либо через глобальную переменную / a, либо через b / переменная dataLayer. Однако я не вижу, как элегантно получить эти наборы для каждой страницы, посещенной во время моего теста, чтобы они существовали, когда GTM проверяет переменные, чтобы заблокировать загрузку тега. Fixture.beforeEach неверно, потому что он запускается только один раз для каждого прибора, и любые данные, которые он устанавливает в области видимости страницы, будут потеряны, как только произойдет навигация по странице.

Кто-нибудь получил опыт такого рода вещей ?

(Альтернатива, конечно, состоит в том, чтобы обнаружить оверлей, используйте switchToIframe, чтобы переключиться в iframe CloudIQ и закрыть его вручную, но он появляется довольно хаотично, и я бы предпочел вообще отключить тег во время тестов поскольку это не основная функциональность нашего веб-сайта, которую мы должны протестировать.)

Ответы [ 2 ]

3 голосов
/ 12 марта 2020

Нет необходимости избегать запуска событий на стороне клиента. Просто смоделируйте сервисные маршруты для Google Tag Manager и CloudIQ и имитируйте правильные ответы для них.

3 голосов
/ 11 марта 2020

Одним из способов может быть установка пользовательской строки пользовательского агента для вашего набора тестов, создание пользовательской переменной javascript, которая возвращает значение для navigator.useragent, и создание триггера исключения, который блокирует тег.

Или любой другой вариант на эту тему - задайте «Повар» ie, используйте параметр url, или, если вы тестируете набор, разрешите ввести глобальную переменную js и проверьте значение в триггере исключения.

...