← Блог

Настройка вебхуков в ТестОпс для Пачка

Уведомления о событиях TMS ТестОпс в канале Пачки

Как настроить уведомления из ТестОпс в Пачку

Если ваша команда работает в Пачке, туда же можно получать уведомления о событиях из ТестОпс — например, о завершении запуска, новом дефекте или тест-плане. Так не приходится каждый раз отдельно открывать TMS, чтобы проверить, произошло ли что-то важное.

Начиная с ТестОпс 5.27 вебхуки также могут срабатывать при создании новой версии ручного тест-кейса, если в проекте включено версионирование. Нужные события и условия отправки задаются через триггеры.

Для одного постоянного канала схема простая: ТестОпс → входящий вебхук Пачки → бот → канал. ТестОпс отправляет POST-запрос на входящий вебхук Пачки, а бот публикует подготовленное сообщение. Отдельный API-токен Пачки и промежуточный сервис для такой схемы не нужны.

Ниже показывается настройка всей цепочки: бот и канал в Пачке, вебхук в ТестОпс, события и фильтры, содержание уведомлений.

Что понадобится

  • Инстанс ТестОпс и проект, из которого должны приходить уведомления. Если учётной записи ещё нет, подайте заявку на пробный период по официальной инструкции и дождитесь письма с данными для доступа.
  • Проектная роль Владелец проекта или глобальная роль Администратор в ТестОпс.
  • Право создавать ботов в пространстве Пачки и добавлять их в нужный канал.
  • Отдельный или существующий канал, в который должны приходить уведомления.

Сначала подготовляем всё необходимое на стороне мессенджера, а затем уже подключаем туда события проекта ТестОпс.

Создание бота в Пачке

Прежде всего откройте веб-версию или десктопное приложение Пачки. Там в левом боковом меню перейдите в Интеграции → Боты и нажмите Создать бота. Если раздел не виден сразу, он находится в меню Ещё.

Укажите название, чтобы было понятно, что это за бот, например ТестОпс — уведомления. Ник для упоминаний можно оставить пустым: Пачка сформирует его автоматически, но для удобства при частом обращении рекомендуется указать что-то своё. Для этой схемы токен на вкладке API и исходящий вебхук не требуются, пропускаем.

Создание бота «ТестОпс — уведомления» в разделе «Интеграции → Боты» Пачки

Настройка входящего вебхука Пачки

Далее откройте карточку созданного бота и перейдите на вкладку Входящий вебхук. Нажмите Включить, затем выберите источник Свой формат. Этот режим принимает произвольный JSON от ТестОпс.

В поле формата шаблона оставьте Mustache. Он там выбран по умолчанию. В поле шаблона сообщения укажите:

{{{text}}}

В стандартном Mustache тройные фигурные скобки передают значение поля text без HTML-экранирования. ВАЖНО! Имя поля в шаблоне должно совпадать с именем поля в JSON, который отправляет ТестОпс. Перед использованием в рабочем канале проверьте шаблон на тестовом вебхуке Пачки: убедитесь, что сообщение приходит, Markdown и ссылки отображаются корректно, а апострофы и амперсанды не заменяются HTML-сущностями.

После включения Пачка сгенерирует адрес вебхука в отдельном поле. Скопируйте его и храните как пароль: запрос к этому адресу не требует отдельного токена, поэтому любой, кто знает URL, сможет публиковать сообщения от имени бота. При неосторожном обращении, это может стать угрозой безопасности. Не показывайте полный адрес на скриншотах и не храните его в открытом репозитории.

Редактирование бота и настройка входящего вебхука Пачки

Канал для уведомлений и добавление бота

Откройте канал (или создайте новый по необходимости), куда должны будут приходить сообщения. В окне Добавление подписчиков перейдите на вкладку Боты и добавьте созданного бота. Там у него назначится роль редактора и ему станет разрешено публиковать сообщения сразу.

Добавление бота «ТестОпс — уведомления» в канале Пачки

Выбор нужного бота в отдельной вкладке

Входящий вебхук публикует одно сообщение во всех беседах и каналах бота, кроме архивных. Чтобы уведомления приходили только в один канал, не добавляйте бота в другие чаты или включите в его настройках опцию Ограничить одним чатом. Для другого канала может иметь смысл сделать отдельного бота и отдельный входящий вебхук подобным образом.

Настройка вебхука в ТестОпс

Теперь настало время настройки в TMS. Откройте нужный проект ТестОпс (или создайте новый по необходимости), перейдите в Настройки → Вебхуки и нажмите + Вебхук.

Раздел «Настройки → Вебхуки» и кнопка «+ Вебхук» в ТестОпс

В поле Название укажите, например, Уведомления в Пачку. В поле Endpoint вставьте скопированный адрес входящего вебхука Пачки.

В таких случаях ТестОпс добавляет заголовок Content-Type: application/json автоматически. Для входящего вебхука Пачки этого достаточно: добавлять Authorization или другие заголовки не нужно.

заголовок Content-Type: application/json в настройках вебхука ТестОпс

Выбор событий

В этой части можно указать, о чём будет информирование. В секции События нажмите Триггер напротив нужной сущности и выберите событие:

  • Запуски: «Создан» или «Закрыт»;
  • Дефекты: «Создан», «Закрыт» или «Удален»;
  • Тест-планы: «Создан» или «Удален»;
  • Тест-кейсы: «Статус изменен»;
  • Тест-кейсы: «Версия создана» — для ручных тест-кейсов при включённом версионировании.

Для события Статус изменен дополнительно выберите воркфлоу ручных или автоматизированных тест-кейсов и статусы, при переходе в которые должно уходить сообщение.

Список сущностей и событий вебхука в ТестОпс, включая события тест-кейсов

Формат сообщения для Пачки

После выбора какого-либо события откроется поле Тело запроса. Для настроенного выше шаблона отправляйте JSON с полем text: его значение подставляется в сообщение.

Логика здесь такая, что в стандартном рабочем канале сообщение должно быстро отвечать на три вопроса: что произошло, к какому объекту относится событие и где посмотреть детали. Для закрытого запуска полезно сразу показать ссылку и итоговые счётчики результатов — тогда ещё до перехода в ТестОпс понятно, требует ли запуск внимания.

Например, для события закрытия запуска можно использовать такой вариант:

{
  "text": "**Запуск закрыт**\nПроект: {{ projectName }}\nЗапуск: [{{ launchName }}]({{ launchUrl }})\nВсего тестов: {{ totalTestCount }}\nУспешные: {{ passedCount }}\nНеуспешные: {{ failedCount }}\nСломанные: {{ brokenCount }}\nПропущенные: {{ skippedCount }}\nНеизвестные: {{ unknownCount }}\nЗакрыл: {{ closedBy }}"
}

Для создания запуска достаточно более короткого сообщения:

{
  "text": "**Создан запуск**\nПроект: {{ projectName }}\nЗапуск: [{{ launchName }}]({{ launchUrl }})\nСоздал: {{ createdBy }}\nДата: {{ createdDate }}"
}

Пачка поддерживает Markdown, поэтому заголовок можно выделить жирным, а название запуска оформить ссылкой. Символы переноса строки в JSON указываются как \n.

Здесь всё работает в прямой связке. Переменные зависят от выбранной сущности и события. Добавляйте их кнопкой Переменные в редакторе ТестОпс. Для закрытого запуска доступны, в частности, название и ссылка запуска, автор закрытия, общее количество тестов и счётчики результатов по статусам.

Для дефекта, тест-плана или тест-кейса сохраните ту же внешнюю структуру:

{
  "text": "**Событие ТестОпс**\nПроект: {{ projectName }}"
}

Добавьте в поле text переменные выбранного события через редактор ТестОпс. Так тело запроса останется совместимым с Пачкой, а названия полей будут соответствовать конкретному триггеру.

Фильтры для запусков

Для событий запусков можно ограничить отправку по дополнительным метаданным. Например, уведомлять только о регрессионных запусках или только о проверках определённого браузера и операционной системы.

Фильтры запуска в настройках вебхука ТестОпс

Несколько значений одного типа работают по условию ИЛИ. Если для метаданных Browser указать Firefox и Chrome, сообщение уйдёт при наличии любого из этих значений. Несколько типов метаданных работают по условию И: фильтр Browser = Firefox и OS = Windows пропустит только запуски, где одновременно указаны Firefox и Windows.

Фильтры помогают не превращать канал в журнал каждого запуска. Если уведомление нужно только для регресса, конкретного окружения или другого значимого набора проверок, лучше ограничить поток сразу на этом моменте — ещё до отправки такого сообщения.