Перейти к основному содержимому

plugins

Обзор

С помощью раздела plugins вы можете подключить к Testplane внешние плагины, которые расширят доступную функциональность.

Например, плагины html-reporter или @testplane/safari-commands.

Плагин — это модуль, который экспортирует одну функцию, принимающую следующие аргументы:

  • инстанс Testplane
  • опции плагина из конфига Testplane

Все плагины будут загружены до того, как Testplane запустит тесты.

подсказка

Выбирая название для плагина, добавьте к нему префикс testplane-. Тогда такой плагин будет проще искать.

Если имя плагина начинается с префикса testplane-, то этот префикс можно опустить при добавлении плагина в раздел plugins. Если на файловой системе будут находиться модули с обоими именами: testplane-some-module и some-module, то предпочтение будет отдано модулю с префиксом testplane-.

Схематичный пример

testplane.config.ts
import type { ConfigInput } from "testplane";

export default {
// ...
plugins: {
"my-cool-plugin": {
param: "some-value",
},
},
} satisfies ConfigInput;
testplane-my-cool-plugin/index.ts
exports = function (testplane, opts) {
testplane.on(testplane.events.RUNNER_START, function (runner) {
console.info(opts.param); // some-value

return setUp(testplane.config, opts.param);
});

testplane.on(testplane.events.RUNNER_END, function () {
return tearDown();
});
};

Свойства инстанса testplane

configКонфиг, который используется в test runner'е. Может быть изменен.
eventsСписок событий, на которые можно подписаться.

Детальнее о событиях можно узнать на соответствующей странице.

Параллельное исполнение плагинов

У раннера есть метод registerWorkers, с помощью которого можно зарегистрировать кастомные методы для запуска в воркерах Testplane.

Метод registerWorkers принимает 2 аргумента:

  • workerFilepath — путь к файлу с функциями, строка с абсолютным путем.
  • exportedMethods — имена экспортируемых методов, массив строк.

Метод возвращает объект с методами, перечисленными в exportedMethods, которые возвращают промисы с результатами.

Обратите внимание, что файл в workerFilepath должен экспортировать объект с соответствующими методами.

Пример:

my-plugin.ts
let workers;

exports = testplane => {
testplane.on(testplane.events.RUNNER_START, async runner => {
const workerFilepath = require.resolve("./worker");
const exportedMethods = ["foo"];
workers = runner.registerWorkers(workerFilepath, exportedMethods);

// outputs `FOO_RUNNER_START`
console.log(await workers.foo("RUNNER_START"));
});

testplane.on(testplane.events.RUNNER_END, async () => {
// outputs `FOO_RUNNER_END`
console.log(await workers.foo("RUNNER_END"));
});
};
worker.ts
exports = {
foo: async function (event) {
return "FOO_" + event;
},
};

Полезные плагины

Экосистема Testplane насчитывает десятки плагинов. Вот некоторые из них: