Galen Framework - это инструмент, на который я наткнулся, когда хотел автоматизировать маркетинговый веб-сайт компании, в которой я работал. Это, безусловно, наиболее совершенный инструмент, доступный бесплатно на рынке (для тестирования адаптивного пользовательского интерфейса). Скрипт может быть написан на Javascript или Java. Этот инструмент предоставляет вам все, что менеджер хочет от инструмента автоматизации. Я активно использовал этот инструмент в течение 3–4 месяцев (последний раз использовался в марте 2016 г.), после чего пришлось прекратить прием по непредвиденным причинам. Вы можете посетить веб-сайт для получения дополнительной информации www.galenframework.com

Этот инструмент построен на основе Selenium Webdriver, создателя фреймворка автоматизации пользовательского интерфейса.

Установка
http://galenframework.com/docs/getting-started-install-galen/

Структура проекта
Раньше я следил за разными языками и стилями структуры проекта, но за эти годы я использовал структуру, которая лучше всего работала для меня. Это не означает, что это лучший способ организовать ваш проект, но вы можете использовать то, что соответствует вашему стилю. Для справки я собираюсь использовать проект, который я создал на своем github специально для этого инструмента.

Https://github.com/kagalenitin/galen-experiment

Как вы можете видеть по ссылке git, я определил,

-spec
-tests
 -pages
 -landingPage.js 
 -loginPage.js
 -init.js
 -landingPage.test.js
 -loginPage.test.js

Папка спецификаций
Эта папка специфична для galen framework. В других инструментах автоматизации вы увидите, что папка spec - это то место, где вы определяете свои тестовые сценарии. В Galen эта папка также делает почти то же самое, однако определенная здесь спецификация предназначена для тестирования элементов на экране. Вы можете определить, какие элементы вы хотите протестировать и что именно вы тестируете в этом элементе.

Я собираюсь протестировать поле имени пользователя на экране:

username:
 visible
 text is “”

Как видите, я проверяю, виден ли элемент и что текст внутри элемента пуст. Вы можете найти дополнительную ссылку на руководство по спецификациям здесь http://galenframework.com/docs/reference-galen-spec-language-guide/

Папка страниц
С инструментами автоматизации пользовательского интерфейса одной из самых серьезных проблем является изменение элементов пользовательского интерфейса. Разработчики часто меняют элементы или не присваивают им идентификаторы. Если у вас есть хорошая команда инженеров, которая понимает важность автоматизации, они учтут ваши потребности. Если нет, то вы прибегаете к тому, что вы можете сделать лучше всего, а именно к css, xpath и т. Д. Я преодолеваю эту проблему с помощью объектной модели страницы. Это наиболее распространенный и широко используемый подход для автоматизации пользовательского интерфейса. Идея состоит в том, чтобы определить элемент пользовательского интерфейса в объекте и использовать ссылку в вашем скрипте.

Следующий пример иллюстрирует это:

username: “css: .form-control[name=\”login.username\”]”

Теперь, когда я хочу получить доступ к полю имени пользователя, я буду использовать объект имени пользователя и взаимодействовать с элементом. Как показано ниже:

function(username){
 this.username.typeText(username);
}

Если по какой-то причине разработчик изменяет css (или решает указать идентификатор элемента), мне просто нужно обновить в одном месте, а обо всем остальном позаботятся.

* .test.js:
.test.js - это файл, в котором я определяю функциональные шаги для моего теста. Galen Framework в основном ориентирован на проверку спецификации элемента в пользовательском интерфейсе. Итак, чтобы взаимодействовать с элементами, вам нужно определить логику и поработать, чтобы протестировать спецификацию конкретного экрана.

_test(“Verify the Login Page Elements”, environment, gridURL, deviceType, browserName, function(){
 var driver = session.get(“driver”);
 landingPage = new LandingPage(driver);
 loginPage = new LoginPage(driver);
 landingPage.load();
 landingPage.loginButton.click();
 loginPage.load();
 checkLayout(driver, “./specs/loginPage.gspec”, deviceType);
});

Как видно из приведенного выше фрагмента, для проверки спецификации страницы входа мне пришлось взаимодействовать с элементом входа, а затем проверять страницу входа с помощью метода checkLayout ().

Запуск тестов Галена:
Чтобы запустить тесты Галена, вам просто нужно передать параметры с помощью `galen test`. Подробнее: http://galenframework.com/docs/reference-working-in-command-line/
В моем проекте я использовал несколько параметров для тестирования. Платформа пользовательского интерфейса должна иметь возможность работать в нескольких браузерах. В случае с Галеном поддерживайте другое разрешение экрана. Я также добавил поддержку для запуска тестов локально или в сетке (Selenium Grid). Если у вас разные тестовые среды, а именно. dev, stage, prod, вы можете указать это. Все это будет инициализировано в файле `init.js` структуры проекта, определенной выше.

galen test tests/*.test.js -Denvironment=local — htmlreport reports -DdeviceType=desktop -DbrowserName=firefox

Итак, в приведенном выше примере я указал запускать все тесты в моей локальной среде, генерировать отчет в формате html, запускать в разрешении экрана рабочего стола в браузере Firefox.

В этом суть Galen Framework. Есть еще много всего того, что я упомянул в вышеупомянутом описании. Если вы думаете, что этот инструмент поможет вам, попробуйте. Если есть шанс, я определенно хотел бы поработать над этим снова.

Плюсы и минусы:

Начнем с того, что нет другого инструмента, который предоставляет столько функций, необходимых для инфраструктуры автоматизации пользовательского интерфейса. Самый большой актив - это сравнение изображений между пикселями, которое трудно найти в инструменте, когда вы выполняете автоматизацию пользовательского интерфейса. Помимо этого, у вас есть отчеты, поддержка нескольких браузеров, настраиваемые параметры для запуска теста, возможность запуска в сетке, поддержка разработчиков.

Единственная проблема, которую я вижу с этим инструментом, заключается в том, что мы должны определить объекты как в файле спецификации, так и в файле страниц, чтобы идентифицировать элемент. Если вы собираетесь использовать этот инструмент для функционального тестирования, упоминание элемента в двух местах - это накладные расходы. Я почти уверен, что когда-нибудь это можно будет преодолеть.

До следующего средства автоматизации.

Примечание: спасибо разработчикам Galen Framework.