plugins
Обзор
С помощью раздела plugins
вы можете подключить к Testplane внешние плагины, которые расширят доступную функциональность.
Например, плагины html-reporter или @testplane/safari-commands.
Плагин — это модуль, который экспортирует одну функцию, принимающую следующие аргументы:
- инстанс Testplane
- опции плагина из конфига Testplane
Все плагины будут загружены до того, как Testplane запустит тесты.
Выбирая название для плагина, добавьте к нему префикс testplane-. Тогда такой плагин будет проще искать.
Если имя плагина начинается с префикса testplane-
, то этот префикс можно опустить при добавлении плагина в раздел plugins
. Если на файловой системе будут находиться модули с обоими именами: testplane-some-module и some-module, то предпочтение будет отдано модулю с префиксом testplane-
.
Схематичный пример
import type { ConfigInput } from "testplane";
export default {
// ...
plugins: {
"my-cool-plugin": {
param: "some-value",
},
},
} satisfies ConfigInput;
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
должен экспортировать объект с соответствующими методами.
Пример:
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"));
});
};
exports = {
foo: async function (event) {
return "FOO_" + event;
},
};
Полезные плагины
Экосистема Testplane насчитывает десятки плагинов. Вот некоторые из них:
- html-reporter
- @testplane/safari-commands
- @testplane/headless-chrome
- ...и многие другие, которые можно найти в gemini-testing.