1 of 33

Storybook

otus.ru

2 of 33

Проверить, идет ли запись

Меня хорошо видно

& слышно?

Ставим “+”, если все хорошо

“-”, если есть проблемы

3 of 33

Storybook

Тема вебинара

Шепелев Максим

Главный разработчик

5 лет опыта фронтенд разработчиком, занимая разные должности от middle до tech-lead

Работаю в компании metacommerce

4 of 33

Для чего нужен storybook?

Storybook помогает разработчикам создавать, тестировать и документировать UI-компоненты в изоляции, не запуская всё приложение. Это упрощает отладку и совместную работу над интерфейсами.

5 of 33

Установка

6 of 33

Установка

Запустите команду для инициализации Storybook:�npm create storybook@latest��Это установит все зависимости для работы и создаст основные файлы:

.storybook/main.ts – содержит конфигурацию Storybook: пути к историям, настройки аддонов и прочее.

.storybook/preview.ts – определяет глобальные параметры и декораторы, применяемые ко всем историям.� src/stories/… - базовые примеры, которые можно сразу удалить�

Это позволяет быстро настроить окружение для разработки, документирования и тестирования UI-компонентов в изоляции.

7 of 33

Запуск

В package.json создастся 2 новых скрипта��

npm run storybook - запустит StoryBook на 6006 порту в режиме разработки

npm run build-storybook - собирает статические файлы в папку storybook-static, которые можно разместить на любом сервере для демонстрации компонентов.

8 of 33

Как добавить просмотр компонента?

9 of 33

Что такое "Stories"?

Stories — это отдельные примеры использования UI-компонентов, которые демонстрируют их внешний вид и поведение в различных состояниях. Они позволяют изолированно разрабатывать, тестировать и документировать компоненты, показывая, как компонент реагирует на разные пропсы и настройки.

�Чтобы создать сторис, нужно:

  • Компонент: UI-компонент, который вы хотите продемонстрировать.
  • Story-файл: Файл (например, MyComponent.stories.tsx), в котором вы описываете метаданные (title, component, argTypes) и варианты использования компонента.
  • Истории: Экспорт отдельных примеров (сторис), которые показывают компонент с различными набором пропсов и состояниями.

10 of 33

Создаем компонент

Для начала описываем простой компонент кнопки для ui-kit

11 of 33

Создаем Stories

Создаем переменную meta где описываем stories:��component - ссылка на наш компонент

title - наименование истории в виде пути�argTypes - специфичный объект Storybook, который описывает свойства (пропсы) компонента, их типы и поведение. ��Позволяет задать типы пропсов и возможные их варианты, для удобного управления

12 of 33

Создаем варианты использования компонента

render - необходим для отрисовки компонента�args - пропсы, которые будут прокинуты в качестве инициализации компонента

13 of 33

Вопросы?

Ставим “+”,

если вопросы есть

Ставим “–”,

если вопросов нет

14 of 33

Аддоны (addons)

15 of 33

Что за аддоны?

Аддоны — это плагины для Storybook, расширяющие его функциональность. Они позволяют добавлять новые возможности, например:

Actions - Отслеживание пользовательских событий (например, кликов).

Controls - Динамическое изменение пропсов компонента через UI.

Viewport - Тестирование адаптивности компонента на разных устройствах.

Backgrounds - Переключение фона для проверки визуального восприятия.�

Таким образом, аддоны помогают упростить разработку, �тестирование и документирование UI-компонентов.��А так же есть возможность писать кастомные аддоны

16 of 33

Actions

Помогает более удобно отлаживать компоненты в storybook, видеть какие события генерирует компонент при разных пользовательских сценариях

17 of 33

Controls

Помогает динамически управлять пропсами, можно настраиваться через argTypes

18 of 33

Viewports

Если есть необходимость просматривать компоненты при разных разрешениях

19 of 33

Backgrounds

Помогает посмотреть компоненты при разных задних фонах

20 of 33

Вопросы?

Ставим “+”,

если вопросы есть

Ставим “–”,

если вопросов нет

21 of 33

Тестирование

22 of 33

Как тестировать?

Storybook сам по себе не является тестовым фреймворком в традиционном понимании (как, например, Jest), но он предоставляет возможности для визуального и интерактивного тестирования компонентов.

Все устанавливается одной командой

��

npx storybook add @storybook/addon-vitest��Он создаст нужные файлы для vitest и подключит addon���

23 of 33

Пишем тест

В stories компонента нужно описать play функцию, далее как по шагам описать действия, это очень похоже на jest

При открытии компонента интерактивные тесты будут запущены, таким образом можно проверять что компонент работает как задумано

24 of 33

Вопросы?

Ставим “+”,

если вопросы есть

Ставим “–”,

если вопросов нет

25 of 33

Декораторы

26 of 33

Для чего нужны декораторы?

Декораторы в Storybook позволяют оборачивать компонент в дополнительное окружение или контейнер, которое может предоставлять стили, контекст (например, тему, провайдер данных, роутинг) или выполнять иные действия до и после рендера компонента. Это удобно для:

  • Централизации общих настроек и оформления.
  • Тестирования компонента в нужном контексте (например, с темой или состоянием пользователя).
  • Документации окружения, в котором используется компонент.

27 of 33

Локальный декоратор

Локальный декоратор нужно описывать в объекте meta для каждой stories отдельно

28 of 33

Локальный декоратор

Пример локального декоратора с Theme Provider

29 of 33

Глобальный декоратор

В файле .storybook/preview мы можем описать все глобальные декораторы, которые будут по умолчанию оборачивать каждую stories

30 of 33

Вопросы?

Ставим “+”,

если вопросы есть

Ставим “–”,

если вопросов нет

31 of 33

Полезные материалы

  1. Документация: "Storybook get started"
  2. Статья "Storybook: разработка без боли для команды и бизнеса. Возможности и нюансы"
  3. Видео: "Начало работы со StoryBook"
  4. Статья: "10 Storybook Best Practices"

32 of 33

Рефлексия

33 of 33

Заполните пожалуйста опрос о занятии по ссылке в чате