В этой короткой статье я покажу, как можно легко автоматизировать тестирование веб-компонентов (т.е. пользовательских элементов) и при этом почувствовать себя Чаком.
Быстрое кодирование
Давайте создадим наши первые веб-компоненты. В этом примере я выбрал очень простой ванильный веб-компонент, поскольку тестовой платформе не важно, как он реализован: все веб-компоненты взаимодействуют через один и тот же собственный API-интерфейс браузера.
Давай протестируем
Наши тестовые спецификации:
- Исключено отображение сообщения при изменении атрибута message
, в окружении сердечек
- Ожидается отправка события message-changed
при изменении атрибута message
.
Мы будем использовать мокко как средство запуска тестов и демонстрационный зал как платформу для тестирования веб-компонентов.
npm install --save-dev mocha showroom
Давайте создадим первый файл дескриптора выставочного зала в папке .showroom
.
Это сообщает выставочному залу о компоненте и пути его загрузки, ожидаемых событиях и атрибутах (+ значение по умолчанию). component
, events
и path
являются обязательными для правильного выполнения теста.
Теперь создадим тестовый файл в test
папке:
Объяснение тестового кода
Прежде всего - платформу выставочного зала нужно запустить, а после всего - выставочный зал можно остановить.
Перед каждым - подготавливаем и выбираем «my-component» для тестирования. Каждый вызов setTestSubject
создает новый экземпляр нашего компонента.
Результаты теста:
Теперь тесты довольно простые. Устанавливаем атрибут «сообщение» и ожидаем результатов. С помощью getEventList
метода выставочного зала стало проще получать информацию о событиях. Все коммуникации с компонентом, включая глубокий селектор запросов в теневых корнях, применимы с использованием showroom.find
. Установка свойств, атрибутов, получение значений также выполняется с помощью API выставочного зала.
Простой.
Если вы хотите визуально протестировать свои компоненты, просто запустите npx showroom
в своей папке, перейдите к localhost: 3000 и посмотрите, что видит исполнитель тестов. Вы также можете запускать свои тесты в браузере с заголовком (в отличие от безголового), если вы передаете аргументы функции инициализации демонстрационного зала. const showroom = require('showroom/puppeteer')({headless:false})
Подробнее о репо проекта смотрите на github.
Вывод
Тестирование веб-компонентов не должно быть сложным. Это может быть очень просто и легко запускать и автоматизировать, если вы сохраняете базовое разделение задач.
Теперь пойдите и проверьте свои собственные компоненты!