@testplane/storybook
Обзор
Используйте плагин @testplane/storybook для автоматической проверки изменения ваших компонентов с помощью скриншотного тестирования без единой строчки кода теста.
Этот плагин предоставляет:
- автоматическую генерацию скриншотных проверок для ваших storybook-файлов;
- возможность писать testplane-тесты прямо внутри ваших storybook-историй.
Установка
npm install @testplane/storybook --save-dev
Настройка
Storybook
Если используется storybook@6, то Вам необходимо включить опцию buildStoriesJson в storybook конфиге:
export default {
// ...
features: {
// ...
buildStoriesJson: true,
},
};
Этого не нужно делать для версий storybook@7 и выше.
Testplane
Добавьте плагин @testplane/storybook в Ваш Testplane конфиг:
export default {
plugins: {
"@testplane/storybook": {},
// другие плагины Testplane...
},
// другие настройки Testplane...
};
При такой минимальной конфигурации Вы уже сможете выполнить команду npx testplane --storybook, чтобы автоматически протестировать каждую историю в storybook с помощью команды Testplane assertView. Testplane откроет каждую историю, подождет завершения функции play (если она определена), а затем вызовет команду assertView для компонента. Эти тесты будут сгенерированы в рантайме и не останутся на файловой системе после окончания тестов.
Расшифровка параметров конфигурации
| Параметр | Тип | По умолчанию | Описание |
| enabled | Boolean | true | Включить / отключить плагин. |
| storybookConfigDir | String | ".storybook" | Путь к директории конфигурационного файла Storybook. |
| autoScreenshots | Boolean | true | Включить / отключить автоматическое скриншотное тестирование |
| autoscreenshotSelector | String | "" | Кастомный селектор, используемый в автоматических скриншотных тестах |
| autoScreenshotStorybookGlobals | Record<string, Record<string, unknown>> | Комплекты глобальных параметров storybook, для каждого из которых следует генерировать автоматические скриншотные тесты. Работает только с версии storybook >= 8. | |
| localport | Number | 6006 | Порт для запуска dev-сервера Storybook. |
| remoteStorybookUrl | String | "" | Урл удаленного Storybook. Если указан, то локальный dev-сервер Storybook не будет запущен. |
| browserIds | Array<String | RegExp> | [] | Массив id браузеров, в которых будут запущены тесты. По умолчанию тесты будут запущены во всех браузерах, описанных в конфиге testplane |
| waitStorybookJsonTimeout | Number | 30000 | Таймаут на получение данных о историях storybook. Стоит увеличить, если storybook требует больше времени на сборку dev-сервера (например, при использовании webpack) |
Производительность тестов Storybook сильно зависит от параметра Testplane testsPerSession, так как скорость этих тестов увеличивается при повторном использовании существующих сессий. Поэтому рекомендуется устанавливать значения около 20 и более. Такой тип тестов так же проигнорирует опцию Testplane isolation. Изоляция будет отключена принудительно для оптимизации скорости прохождения тестов.