Разработка плагинов
Плагины позволяют добавлять собственные UI-компоненты в интерфейс HTML Reporter. Например, вы можете показать статистику стабильности теста или добавить кнопку для интеграции с внешним сервисом. В HTML Reporter есть несколько точек расширения, в которых может отображаться UI плагина — например, на панели настроек или на странице результатов запуска теста.
Быстрый старт
Пример плагина, в котором настроена сборка и используются основные возможности плагинной системы, доступен в репозитории HTML Reporter.
Мы рекомендуем использовать этот пример как шаблон для своего плагина.
Как работают плагины
Плагины подключаются к HTML Reporter в конфиге, например:
export default {
plugins: {
"html-reporter/testplane": {
pluginsEnabled: true,
plugins: [
{
name: "my-plugin-package",
component: "MyPlugin",
point: "result_meta",
position: "after",
},
],
},
},
};
В этом случае HTML Reporter будет искать плагин в npm-пакете my-plugin-package, а именно:
- В
my-plugin-package/plugin.jsHTML Reporter будет искать реализацию компонентаMyPlugin, который будет отображаться в точке расширенияresult_meta - В
my-plugin-package/middleware.jsHTML Reporter будет искать реализацию серверных эндпоинтов
Поэтому типичный плагин состоит из трёх частей:
my-plugin/
├── ui/ # UI плагина — собирается в бандл plugin.js с помощью Vite
├── server/ # Серверная часть плагина (опционально) — входная точка ожидается в файле middleware.js
└── preset-for-config/ # Пресет для удобного подключения (опционально)
Создание UI плагина
1. Настройка сборки
Формат выходного файла
Результатом сборки UI плагина должен быть 1 файл — бандл plugin.js следующего формата:
__testplane_html_reporter_register_plugin__([
"react",
function (React, options) {
// ...
return { MyPlugin, reducers: [] };
},
]);
Файл должен содержать только вызов функции __testplane_html_reporter_register_plugin__.
Единственный аргумент функции — массив. В нём декларируются нужные плагину зависимости (доступные зависимости см. в справочнике по Plugins SDK), последний элемент массива — функция, она будет вызвана с перечисленными зависимостями и должна вернуть объект с компонентом и редьюсерами.
Подробнее о том, с чем именно вызывается эта функция, см. в исходном коде HTML Reporter.
Переиспользование зависимостей
Для корректной работы React и хуков критично, чтобы зависимости не дублировались, а везде использовались одни и те же экземпляры — и в HTML Reporter, и в плагине.
HTML Reporter предоставляет плагинам ряд зависимостей, которые можно переиспользовать, включая React и Gravity UI.
Чтобы переиспользовать эти зависимости, нужно указать их в external в конфигурации Vite.