Класс Testplane
Данное API позволяет вам использовать Testplane программно, без запуска через CLI.
Для этого вы должны подключить модуль testplane и создать его инстанс:
const Testplane = require("testplane");
const config = require("./testplane.conf.js");
const testplane = new Testplane(config);
Доступны следующие свойства и методы:
| Имя | Тип | Описание |
| config | Object или String | Объект с конфигом testplane или путь к конфигурационному файлу, относительно рабочей папки. |
| events | Object | События testplane, на которые можно подписаться. |
| errors | Object | Ошибки, которые может возвращать testplane. |
| intercept | Function | Функция, с помощью которой можно подписаться на перехват событий testplane. |
| init | Method | Инициализирует инстанс testplane, загружает все плагины и т. д. |
| run | Method | Запускает прогон тестов, расположенных по указанным путям. |
| addTestToRun | Method | Добавляет тест к текущему запуску. |
| readTests | Method | Возвращает объект типа TestCollection. |
| isFailed | Method | Возвращает true или false в зависимости от того, была ли ошибка или падение теста при запуске тестов. |
| isWorker | Method | Возвращает true, если метод был вызван из воркера testplane. |
| halt | Method | Аварийно завершает прогон тестов в случае критической ошибки. |
config
Объект с конфигом testplane или путь к конфигурационному файлу, относительно рабочей папки: process.cwd().
events
События testplane, на которые можно подписаться.
Пример использования объекта testplane.events в плагине testplane:
testplane.on(testplane.events.INIT, async () => {
console.info("Выполняется обработка события INIT...");
});
errors
Testplane может возвращать ошибки следующего типа:
- CoreError
- CancelledError
- ClientBridgeError
- HeightViewportError
- OffsetViewportError
- AssertViewError
- ImageDiffError
- NoRefImageError
CoreError
Ошибка CoreError возвращается в случае неудачной калибровки пустой страницы (about:blank) в браузере.
Ошибка при этом содержит следующее сообщение:
Could not calibrate. This could be due to calibration page has failed to open properly
CancelledError
Ошибка CancelledEror возвращается в случае аварийного завершения по команде halt.
Ошибка при этом содержит следующее сообщение:
Browser request was cancelled
ClientBridgeError
Ошибка ClientBridgeError возвращается в случае неудачной инъекции кода JavaScript на стороне клиента (браузера). Testplane осуществл яет инъекцию кода с помощью команды execute WebDriverIO.
Ошибка при этом содержит следующее сообщение:
Unable to inject client script
HeightViewportError
Ошибка HeightViewportError возвращается при попытке снять скриншот для области, чья нижняя граница не влезает в область вьюпорта.
Ошибка при этом содержит следующее сообщение:
Can not capture the specified region of the viewport.
The region bottom bound is outside of the viewport height.
Alternatively, you can test such cases by setting "true" value to option "compositeImage" in the config file
or setting "false" to "compositeImage" and "true" to option "allowViewportOverflow" in "assertView" command.
Element position: <cropArea.left>, <cropArea.top>; size: <cropArea.width>, <cropArea.height>.
Viewport size: <viewport.width>, <viewport.height>.
При этом сообщение подсказывает пользователю testplane, какие настройки нужно установить в конфиге testplane, чтобы иметь возможность снять скриншот для указанной области.
OffsetViewportError
Ошибка OffsetViewportError возвращается при попытке снять скриншот для области, чьи границы слева, справа или наверху выходят за пределы вьюпорта.
Ошибка при этом содержит следующее сообщение:
Can not capture the specified region of the viewport.
Position of the region is outside of the viewport left, top or right bounds.
Check that elements:
- does not overflow the document
- does not overflow browser viewport
Alternatively, you can increase browser window size using
"setWindowSize" or "windowSize" option in the config file.
But if viewport overflow is expected behavior then you can use
option "allowViewportOverflow" in "assertView" command.
При этом сообщение подсказывает пользователю testplane, какие настройки нужно установ ить в конфиге testplane, чтобы иметь возможность снять скриншот для указанной области.
AssertViewError
Ошибка AssertViewError возвращается при неудачной попытке снять скриншот.
Ошибка при этом может содержать одно из следующих сообщений, в зависимости от причины падения:
duplicate name for "<state>" state
element ("<selector>") still not existing after <this.options.waitforTimeout> ms
element ("<this.selector>") still not existing after <this.options.waitforTimeout> ms
ImageDiffError
Ошибка ImageDiffError возвращается из команды assertView, если при снятии и сравнении скриншота с эталонным скриншотом обнаруживается дифф (разница в изображениях).
Ошибка при этом содержит следующее сообщение:
images are different for "<stateName>" state
Кроме этого, ошибка ImageDiffError содержит следующие данные:
| Свойство | Описание |
| stateName | имя состояния, для которого делался скриншот |
| currImg | ссылка на актуальное изображение |
| refImg | ссылка на эталонное изображение |
| diffOpts | настройки определения диффа |
| diffBounds | границы областей с диффами на изображении |
| diffClusters | кластеры с диффами на изображении |
Подробнее про diffBounds и diffClusters читайте в документации пакета looks-same.
exports.handleImageDiff = (currImg, refImg, state, opts) => {
const {tolerance, antialiasingTolerance, canHaveCaret, diffAreas, config} = opts;
const {buildDiffOpts, system: {diffColor}} = config;
buildDiffOpts.ignoreCaret = buildDiffOpts.ignoreCaret && canHaveCaret;
const diffOpts = {
current: currImg.path, reference: refImg.path,
diffColor, tolerance, antialiasingTolerance, ...buildDiffOpts
};
return Promise.reject(ImageDiffError.create(state, currImg, refImg, diffOpts, diffAreas));
};
NoRefImageError
Ошибка NoRefImageError возвращается из команды assertView, если при снятии и сравнении скриншота testplane не находит эталонный скриншот на файловой системе.
Ошибка при этом содержит следующее сообщение:
can not find reference image at <refImg.path> for "<stateName>" state
Кроме этого, ошибка NoRefImageError содержит следующие данные:
| Свойство | Описание |
| stateName | имя состояния, для которого делался скриншот |
| currImg | ссылка на актуальное изображение |
| refImg | ссылка на эталонное изображение |
intercept
Функция, с помощью которой можно подписаться на перехват событий testplane.
Первым аргументом функция прини мает событие, которое нужно перехватывать, а вторым — обработчик события.
Например:
testplane.intercept(testplane.events.TEST_FAIL, ({ event, data }) => {
return {};
});
Подробнее о перехвате соб ытий читайте в разделе «Про перехват событий».
init
Инициализирует инстанс testplane, загружает все плагины и т. д.
Пример вызова
await testplane.init();