События плагина
Обзор
Плагин html-reporter
добавляет в интерфейс Testplane специальный объект htmlReporter, через который, в том числе, можно подписаться на события отчета. Для этого testplane.htmlReporter
предоставляет свойство events
со списком событий, на которые можно подписаться:
- DATABASE_CREATED — событие, которое триггерится сразу после создания sqlite базы данных;
- TEST_SCREENSHOTS_SAVED — событие, которое триггеритс я после сохранения скриншотов теста;
- REPORT_SAVED — событие, которое триггерится после сохранения всех файлов отчета.
DATABASE_CREATED
sync | master
Событие DATABASE_CREATED
триггерится сразу после создания sqlite базы данных. Обработчик события выполняется синхронно.
Подписка на событие
testplane.htmlReporter.on(testplane.htmlReporter.events.DATABASE_CREATED, db => {
console.info(`Выполняется обработка события DATABASE_CREATED...`);
});
Параметры обработчика
В обработчик события передается инстанс базы данных.
Пример использования
const parseConfig = require("./config");
module.exports = (testplane, opts) => {
const pluginConfig = parseConfig(opts);
if (!pluginConfig.enabled || testplane.isWorker()) {
// или плагин отключен, или мы находимся в контексте воркера – уходим
return;
}
// свойство "htmlreporter" гарантированно есть в объекте "testplane"
// в момент срабатывания события INIT
testplane.on(testplane.events.INIT, () => {
testplane.htmlReporter.on(testplane.htmlReporter.events.DATABASE_CREATED, db => {
db.prepare(`CREATE TABLE IF NOT EXISTS testTable (foo TEXT, bar TEXT)`).run();
});
});
};
TEST_SCREENSHOTS_SAVED
async | master
Событие TEST_SCREENSHOTS_SAVED
триггерится после сохранения скриншотов очередного теста. Обработчик события может быть асинхронным.
Подписка на событие
testplane.htmlReporter.on(
testplane.htmlReporter.events.TEST_SCREENSHOTS_SAVED,
async ({ testId, attempt, imagesInfo }) => {
console.info(
`Screenshots for test "${testId}" (attempt #${attempt}) were saved:`,
imagesInfo,
);
/* Expected output:
Screenshots for test "Feature Test.chrome-desktop" (attempt #0) were saved:
[
{
stateName: 'plain',
refImg: { path: '...', size: { width: 400, height: 200 } },
status: 'fail',
error: undefined,
diffClusters: [...],
expectedImg: { path: '...', size: { width: 400, height: 200 } }
actualImg: { path: '...', size: { width: 400, height: 200 } }
diffImg: { path: '...', size: { width: 400, height: 200 } }
}
]
*/
},
);
Параметры обработчика
В обработчик события передается объект с информацией о тесте следующего вида:
{
testId, // идентификатор теста вида "<test full title>.<browser id>"
attempt, // номер попытки выполнения теста
imagesInfo; // информация о скриншотах (см. выше пример подписки на событие)
}
REPORT_SAVED
async | master
Событие REPORT_SAVED
триггерится после сохранения всех файлов отчета. Обработчик события может быть асинхронным.
Подписка на событие
testplane.htmlReporter.on(testplane.htmlReporter.events.REPORT_SAVED, async ({ reportPath }) => {
console.info(`Выполняется обработка события REPORT_SAVED, report path = ${reportPath}...`);
});
Параметры обработчика
В обработчик передается объект с ключом reportPath
, в значении которого хранится путь к сохраненному отчету.
Пример использования
testplane.htmlReporter.on(testplane.htmlReporter.events.REPORT_SAVED, async ({ reportPath }) => {
await uploadDirToS3(reportPath); // загружаем отчет в хранилище S3
});