qa-guru / allure-notifications

jar, that draws piechart from results and sends it with link to build to messenger
Apache License 2.0
486 stars 79 forks source link
allure-notifications

en

Allure notifications

Allure notifications - это библиотека, позволяющая выполнять автоматическое оповещение о результатах прохождения автотестов, которое направляется в нужный вам мессенджер (Telegram, Slack, Skype, Email, Mattermost, Discord, Loop, Rocket.Chat).

Languages: 🇬🇧 🇫🇷 🇷🇺 🇺🇦 🇧🇾 🇨🇳

Содержание

Принцип работы

По итогам выполнения автотестов генерируется файл summary.json в папке allure-report/widgets. Этот файл содержит общую статистику о результатах прохождения тестов, на основании которой как раз и формируется уведомление, которое отправляет бот (отрисовывается диаграмма и добавляется соответствующий текст).

image

Пример файла summary.json

{
  "reportName" : "Allure Report",
  "testRuns" : [ ],
  "statistic" : {
    "failed" : 182,
    "broken" : 70,
    "skipped" : 118,
    "passed" : 439,
    "unknown" : 42,
    "total" : 851
  },
  "time" : {
    "start" : 1590795193703,
    "stop" : 1590932641296,
    "duration" : 11311,
    "minDuration" : 7901,
    "maxDuration" : 109870,
    "sumDuration" : 150125
  }
}

Кроме этого, если подключен Allure Summary плагин также будет сгенерирован файл suites.json данные из которого также будут включены в статистику.

Как выглядят оповещения

Пример оповещения в Telegram

image

Как использовать в своем проекте

Для запуска локально

  1. Для локальной отладки нужно установить java (для запуска в Jenkins она не понадобится)
  2. Создать в корне проекта папку notifications.
  3. Скачать актуальную версию файла allure-notifications-version.jar, и разместить его в папке notifications в своем проекте.
  4. В папке notifications создать файл config.json со следующей структурой (оставить раздел base и тот мессенджер, на который требуется отправлять оповещения):
    {
    "base": {
    "logo": "",
    "project": "",
    "environment": "",
    "comment": "",
    "reportLink": "",
    "language": "ru",
    "allureFolder": "",
    "enableChart": false,
    "enableSuitesPublishing": false,
    "customData": {}
    },
    "telegram": {
    "token": "",
    "chat": "",
    "replyTo": "",
    "templatePath": "/templates/telegram.ftl"
    },
    "slack": {
    "token": "",
    "chat": "",
    "replyTo": "",
    "templatePath": "/templates/markdown.ftl"
    },
    "mattermost": {
    "url": "",
    "token": "",
    "chat": "",
    "templatePath": "/templates/markdown.ftl"
    },
    "rocketChat" : {
    "url": "",
    "auth_token": "",
    "user_id": "",
    "channel": "",
    "templatePath": "/templates/rocket.ftl"
    },
    "skype": {
    "appId": "",
    "appSecret": "",
    "serviceUrl": "",
    "conversationId": "",
    "botId": "",
    "botName": "",
    "templatePath": "/templates/markdown.ftl"
    },
    "mail": {
    "host": "",
    "port": "",
    "username": "",
    "password": "",
    "securityProtocol": null,
    "from": "",
    "to": "",
    "cc": "",
    "bcc": "",
    "templatePath": "/templates/html.ftl"
    },
    "discord": {
    "botToken": "",
    "channelId": "",
    "templatePath": "/templates/markdown.ftl"
    },
    "loop": {
    "webhookUrl": "",
    "templatePath": "/templates/markdown.ftl"
    },
    "proxy": {
    "host": "",
    "port": 0,
    "username": "",
    "password": ""
    }
    }

    Блок proxy используется если нужно указать дополнительную конфигурацию proxy.\ Параметр templatePath является опциональным и позволяет установить путь к собственному Freemarker шаблону для сообщения. Пример:

    {
    "base": {
    ...
    },
    "mail": {
    "host": "smtp.gmail.com",
    "port": "465",
    "username": "username",
    "password": "password",
    "securityProtocol": "SSL",
    "from": "test@gmail.com",
    "to": "test1@gmail.com",
    "cc": "testCC1@gmail.com, testCC2@gmail.com",
    "bcc": "testBCC1@gmail.com, testBCC2@gmail.com",
    "templatePath": "/templates/html_custom.ftl"
    }
    }

  1. Заполнить в файле config.json блок base:

Пример заполнения блока base:

"base": {
    "project": "some project",
    "environment": "some env",
    "comment": "some comment",
    "reportLink": "",
    "language": "en",
    "allureFolder": "build/allure-report/",
    "enableChart": true,
    "enableSuitesPublishing": true,
    "logo": "logo.png",
    "durationFormat": "HH:mm:ss.SSS",
    "customData": {
      "variable1": "value1",
      "variable2": "value2"
    }
}

Порядок заполнения:

  1. Заполнить в файле config.json блок с информацией о выбранном мессенджере: особенности заполнения файла config.json в зависимости от выбранного мессенджера

  2. Выполнить в терминале следующую команду:

    java "-DconfigFile=notifications/config.json" -jar notifications/allure-notifications-4.2.1.jar

    Примечание:

    • на момент запуска уже должен быть сформирован файл summary.json
    • в тексте команды нужно указать ту версию файла jar, которую вы скачали на предыдущих шагах

В результате будет сформировано оповещение с результатами прохождения автотестов и направлено в выбранный мессенджер.

Для запуска из Jenkins

  1. Перейти в настройки сборки в Jenkins
  2. В разделе Сборка нажать кнопку Добавить шаг собрки, в появившемся меню выбрать Create/Update Text File image

Заполнить следующим образом:

image image

Примечание:

  1. В разделе Послесборочные операции нажать кнопку Добавить шаг после собрки, в появившемся меню выбрать Post build task image
  1. Сохраняем изменения настроек и запускаем автотесты. По завершении в мессенджер будет направлено уведомление о результатах.

Особенности заполнения файла config.json в зависимости от выбранного мессенджера