Всем привет!
В этой статье хотел бы рассказать о значительных изменениях во фреймворке GlaceJS.
В первую очередь проведена значительная работа по преобразованию standalone-фреймворка в плагинизированную систему. А разработка выведена в отдельную группу на гитхабе - GlaceJS · GitHub.
Из прежнего фреймворка выделено микро-ядро GitHub - glacejs/glace-core: Documentation https://glacejs.github.io/glace-core. Остальные фичи разбиты по плагинам:
-
GitHub - glacejs/glace-web: Documentation https://glacejs.github.io/glace-web - подключает
stepsдля управления браузером,selenium’ом и реализуетpage object pattern -
GitHub - glacejs/glace-proxy: Documentation https://glacejs.github.io/glace-proxy - подключает
stepsдля управленияhttp&mitmproxy-сервером, а также различнымиmiddleware -
GitHub - glacejs/glace-image: Documentation https://glacejs.github.io/glace-image/ - подключает
stepsдля обработки изображений: скриншот браузера и экрана, сравнение изображений, поиск картинки в картинке. -
GitHub - glacejs/glace-video: Documentation https://glacejs.github.io/glace-video - подключает
stepsдля видео захватаUI-ных тестов. -
GitHub - glacejs/glace-xvfb: Documentation https://glacejs.github.io/glace-xvfb - подключает
stepsдля запуска тестов вXvfbвиртуальном дисплее.
При этом каждый плагин может быть использован как сторонняя библиотека для других nodejs приложений, и даже выступать как самостоятельное приложение. Н-р glace-proxy с одной стороны используется как плагин для glace-core, а с другой - является самостоятельным консольным приложением для управления ответами от сервера к браузеру (н-р, в мануальном тестировании).
Само приложение glace-core и плагины реализуют STEPS-протокол, который расширяет STEPS-архитектуру и описывает, как себя должны вести компоненты, чтобы взаимодействовать как одна система. Поскольку протокол двунаправленный, не только плагины, но и glace-core и любое glace-based приложение может само выступать как плагин для другого glace-based приложения.
Все glace-компоненты взаимодействуют через общий объект, который доступен из проекта glace-utils, и при подключении плагин предоставляет steps, help, global objects & fixtures для glace-core.
Также добавлен группирующий проект glace-js, который включает glace-core и перечисленные плагины.
Каждый проект снабжен документацией:
- https://glacejs.github.io/glace-core
- GlaceJS Index
- GlaceJS Index
- GlaceJS Index
- GlaceJS Index
- GlaceJS Index
- GlaceJS Index
- GlaceJS Utils Index
А также основная функциональность покрыта интеграционными и юнит-тестами. В настоящее время расширяется тестовое покрытие и уточняется документация.